关于tomcat作为服务器 URL访问的一些问题
2016-09-29 13:38
387 查看
关于tomcat作为服务器 URL访问的一些问题
由于tomcat对中文支持不是很好,所以在某些情况下导致URL无法访问或者找不到路径的问题,一般主要存在两个问题:
1.含有中文的URL无法访问
上传一个资源到服务器后,通过连接无法进行访问,进行几次尝试之后,发现如果URL包含中文字符则无法访问,而纯英文字符的URL则可以访问。网上查资料发现是tomcat默认的配置不支持中文路径访问,因为通过链接进行访问时采用的是get协议,而默认的get协议是采用ISO-8859-1对URL进行编码的,而这个字符集不支持中文双字节信息。
在Server.xml文件中添加一个名为URIEncoding的属性,它定义了对HTTP请求中的get方法传过来的URL进行编码的采用的方案。
在Tomcat安装目录下找到server.xml文件,找到
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
在里面加入URIEncoding="utf-8" 这个属性,保存,然后重启tomcat即可。
2.含有空格的URL无法访问
在下载一个mp3文件的时候,如果它的资源URL为"http:10.0.0.2:8080/MusicServer/resource/今天 - 刘德华.mp3",路径中含有空格和中文字符,会报找不到该资源的错误。报这种错误主要有两个原因:1)没有对中文部分进行转码;2)路径中空格要进行转换。
例如:
输出结果为:%E4%BB%8A%E5%A4%A9+-+%E5%88%98%E5%BE%B7%E5%8D%8E.mp3
发现空格被转码成'+'了,而在tomcat服务器中,空格是'%20',所以会导致无法访问到该路径,可以采用下面的办法解决问题:
首先将中文部分转码成UTF-8格式的字符串,然后将转换后得到的字符串中的所有'+'替换成'%20'。
输出结果就为:
%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
是正确的结果了。
作者:海子
出处:http://www.cnblogs.com/dolphin0520/
本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
由于tomcat对中文支持不是很好,所以在某些情况下导致URL无法访问或者找不到路径的问题,一般主要存在两个问题:
1.含有中文的URL无法访问
上传一个资源到服务器后,通过连接无法进行访问,进行几次尝试之后,发现如果URL包含中文字符则无法访问,而纯英文字符的URL则可以访问。网上查资料发现是tomcat默认的配置不支持中文路径访问,因为通过链接进行访问时采用的是get协议,而默认的get协议是采用ISO-8859-1对URL进行编码的,而这个字符集不支持中文双字节信息。
在Server.xml文件中添加一个名为URIEncoding的属性,它定义了对HTTP请求中的get方法传过来的URL进行编码的采用的方案。
在Tomcat安装目录下找到server.xml文件,找到
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
在里面加入URIEncoding="utf-8" 这个属性,保存,然后重启tomcat即可。
2.含有空格的URL无法访问
在下载一个mp3文件的时候,如果它的资源URL为"http:10.0.0.2:8080/MusicServer/resource/今天 - 刘德华.mp3",路径中含有空格和中文字符,会报找不到该资源的错误。报这种错误主要有两个原因:1)没有对中文部分进行转码;2)路径中空格要进行转换。
例如:
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
发现空格被转码成'+'了,而在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
是正确的结果了。
作者:海子
出处:http://www.cnblogs.com/dolphin0520/
本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关文章推荐
- 关于tomcat作为服务器 URL访问的一些问题
- 关于tomcat作为服务器 URL访问的一些问题
- 关于tomcat部署到服务器无法访问的问题
- 解决Web项目因访问URL与Tomcat服务器文件夹相同导致404页面的问题
- 关于Tomcat服务器的一些注意问题
- 关于腾讯云ubuntu服务器tomcat访问慢问题
- 关于阿里云服务器中Tomcat的<Host name="localhost">中的localhost改为外网ip无法访问的问题
- 关于tomcat服务器优化,常遇到的一些简单问题的解决方法 (z)
- 关于android studio模拟器无法直接通过10.0.2.2直接访问tomcat服务器的问题
- 关于将XMPP server部署到Tomcat上的一些问题
- 关于URL访问问题
- 关于【apache- tomcat- 5.5.15/conf /Catalina/localhost配置虚拟目录】时的一些问题。(配置web项目的方式不止一种,虚拟目录就是一个)
- 关于在.net环境下通过使用LDAP来访问AD,LDAPServer的一些问题?
- 关于Win32 API(VC作为程序设计语言)的创建线程,解决互斥访问临界资源问题
- 关于一些url中传递参数有空格问题
- 关于tomcat服务器部署,页面报404/500错误,myeclipse异常关闭 导致tomcat 6.0 无法重启 的问题
- java+mysql在tomcat服务器下建立SOAP(axis2)通过KSOAP2访问的诸多问题
- 关于URL 请求服务器,权限问题
- 关于tomcat访问问题
- 关于指针和数组对申请内存malloc和作为参数传递的一些问题