tomcat问题总结

关于tomcat做为服务器 URL访问的一些问题

    因为tomcat对中文支持不是很好,因此在某些状况下致使URL没法访问或者找不到路径的问题,通常主要存在两个问题: tomcat

1.含有中文的URL没法访问

    上传一个资源到服务器后,经过链接没法进行访问,进行几回尝试以后,发现若是URL包含中文字符则没法访问,而纯英文字符的URL则能够访问。发现是tomcat默认的配置不支持中文路径访问,由于经过连接进行访问时采用的是get协议,而默认的get协议是采用ISO-8859-1对URL进行编码的,而这个字符集不支持中文双字节信息。 服务器

    在Server.xml文件中添加一个名为URIEncoding的属性,它定义了对HTTP请求中的get方法传过来的URL进行编码的采用的方案。 编码


    在Tomcat安装目录下找到server.xml文件,找到 url

    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> spa

    在里面加入URIEncoding="utf-8" 这个属性,保存,而后重启tomcat便可。 code

2.含有空格的URL没法访问

    在下载一个mp3文件的时候,若是它的资源URL为"http:10.0.0.2:8080/MusicServer/resource/今天 - 刘德华.mp3",路径中含有空格和中文字符,会报找不到该资源的错误。报这种错误主要有两个缘由:1)没有对中文部分进行转码;2)路径中空格要进行转换。 server

      例如: xml

String urlString="http:10.0.0.2:8080/MusicServer/resource/今天 - 刘德华.mp3";
String name="今天 - 刘德华.mp3";
String temp1=URLEncoder.encode(name, "UTF-8");
System.out.println(temp1);

    输出结果为:%E4%BB%8A%E5%A4%A9+-+%E5%88%98%E5%BE%B7%E5%8D%8E.mp3 utf-8

发现空格被转码成'+'了,而在tomcat服务器中,空格是'%20',因此会致使没法访问到该路径,能够采用下面的办法解决问题: 资源

    首先将中文部分转码成UTF-8格式的字符串,而后将转换后获得的字符串中的全部'+'替换成'%20'。

String urlString="http:10.0.0.2:8080/MusicServer/resource/今天 - 刘德华.mp3";
String name="今天 - 刘德华.mp3";
String temp1=URLEncoder.encode(name, "UTF-8");
String temp2=temp1.replaceAll("\\+", "%20");    //由于'+'是关键字,因此要进行转义System.out.println(temp1);
System.out.println(temp2);

    输出结果就为:

     %E4%BB%8A%E5%A4%A9+-+%E5%88%98%E5%BE%B7%E5%8D%8E.mp3
     %E4%BB%8A%E5%A4%A9%20-%20%E5%88%98%E5%BE%B7%E5%8D%8E.mp3

    是正确的结果了。

相关文章
相关标签/搜索