日期:2014-05-17  浏览次数:20722 次

struts2路径问题,中文图片显示失败问题(兼散分,求笼罩)!!!
在学struts2的过程中,碰到了两个小问题
1(最主要的问题)在页面中显示以中文命名的图片时失败,如下,我上传一张图片(我.png)到服务器后跳转并显示:
<body>
上传成功!<br/>
文件标题:<s:property value=" + title"/><br/>
文件为:<img src="<s:property value="'uploadFiles/' 
+ uploadFileName"/>"/><br/>
<s:debug/>
</body>

注:debug发现action中uploadFileName属性是中文,服务器里保存的也是中文,就是显示不出来(换成英文可以显示),猜测struts2内部解码过程出问题,但不知如何下手~~

2.(其实这个应该不算问题)在做上传的时候,文件保存在tomcat项目的文件夹uploadFiles里,
即webapp/XXX项目/uploadFiles/下,这个文件夹是我手动创建的,每次只要重启tomcat文件夹就
丢失,就又得创建一次,有没有什么办法在eclipse里项目编写的时候创建uploadFiles文件
夹,然后一起发布到tomcat下,这样省去每次新建一次文件夹,如图:


------最佳解决方案--------------------
唉,问题关键在于,比如能保证浏览器地址栏直接输入:
   http://localhost:8080/load/uploadFiles/曾.png
是可访问的,现在继续回到这个问题来研究。


你用的是Tomcat,那么请检查下conf\server.xml这个配置文件,有没有这样一句话:
  <Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" connectionTimeout="1000" 
如果没有URIEncoding="UTF-8",请把它加上去;然后重启服务,再用全路径直接浏览器试试看。
------其他解决方案--------------------
操作系统的字符集是啥?莫非是GBK?

然后你JSP及Java源码的字符集是啥?莫非是UTF-8?
------其他解决方案--------------------
引用:
操作系统的字符集是啥?莫非是GBK?

然后你JSP及Java源码的字符集是啥?莫非是UTF-8?

都是GBK,我改成UTF-8也还是不行,第二个问题我解决了,就第一个还卡在那儿
------其他解决方案--------------------
引用:
操作系统的字符集是啥?莫非是GBK?

然后你JSP及Java源码的字符集是啥?莫非是UTF-8?

另外我发现了一个奇怪的地方就是不知道怎么解决
显示页面如下:
没有乱码之类的情况,但是我打开这个页面的源代码,如下
图片的地址竟然不是中文,还有一个奇怪的地方,我右键那张未显示的图片--属性,如下
地址竟然又成了中文,这。。蛋疼死我了
------其他解决方案--------------------
引用:
操作系统的字符集是啥?莫非是GBK?

然后你JSP及Java源码的字符集是啥?莫非是UTF-8?

另外我发现了一个奇怪的地方就是不知道怎么解决
显示页面如下:
没有乱码之类的情况,但是我打开这个页面的源代码,如下
图片的地址竟然不是中文,还有一个奇怪的地方,我右键那张未显示的图片--属性,如下
地址竟然又成了中文,这。。蛋疼死我了
------其他解决方案--------------------
这很正常,因为你上传到服务器之后服务器会把你上传的文件重新命名的。这个你可以在你服务器上传文件的文件夹中找到那个图片,就明白了。
------其他解决方案--------------------
引用:
这很正常,因为你上传到服务器之后服务器会把你上传的文件重新命名的。这个你可以在你服务器上传文件的文件夹中找到那个图片,就明白了。
我在文件夹中找到了,没有重命名,不是这个问题
------其他解决方案--------------------
&#26366; 这个就是“曾”的Unicode编码。

不过你还是试试看,直接在浏览器的地址栏输入:
  http://localhost:8080/load/uploadFiles/曾.png
是否能正确显示图片。

另外也看看硬盘的uploadFiles目录中,在cmd窗口下,dir 能看到正确的文件名么?
------其他解决方案--------------------
引用:
&amp;#26366; 这个就是“曾”的Unicode编码。

不过你还是试试看,直接在浏览器的地址栏输入:
  http://localhost:8080/load/uploadFiles/曾.png
是否能正确显示图片。

另外也看看硬盘的uploadFiles目录中,在cmd窗口下,dir 能看到正确的文件名么?

都能,我太蛋疼了
------其他解决方案--------------------
引用:
都能,我太蛋疼了


这算是个好消息。

那么你只需要设法让:
  <img src="/load/uploadFiles/&#26366;.png" />
中的URL解码成:
  <img src="/load/uploadFiles/曾.png" />