关于tomcat作为服务器 URL访问的一些问题-阿里云开发者社区

开发者社区> eddie小英俊> 正文

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

简介:
+关注继续查看

  关于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)路径中空格要进行转换。

      例如:

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/archive/2012/03/28/2421922.html如需转载自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9497 0
URL解析的几种模式以及拟静态重定向问题
最近工作遇到关于把长连接变成短连接的问题,于是想起tp里面的几种url解析模式:原文很经典:现在摘录原文; URL模式 ThinkPHP框架基于模块和操作的方式进行访问,由于ThinkPHP框架的应用采用单一入口文件来执行,因此网站的所有的模块和操作都通过URL的参数来访问和执行。
921 0
一起谈.NET技术,Silverlight访问Apache服务器(Tomcat,Geronimo)中部署的Webservice
  开发环境   Vs2010 、 Silverlight4 、 Java Jdk1.6 U 21 、 Apache-tomcat-6.0.20 、 Myeclipse8.5 、 Apache-ant-1.
781 0
阿里云物联网平台服务端订阅AMQP典型问题——Client failed to authenticate using SASL: PLAIN
服务端可以直接订阅产品下多种类型的消息:设备上报消息、设备状态变化通知、设备生命周期变更、网关发现子设备上报、设备拓扑关系变更等。配置服务端订阅后,物联网平台会将产品下所有设备的已订阅类型的消息转发至您的服务器。
1127 0
curl向web服务器发送json数据
c++使用libcurl: 1 /* 2 *g++ demo.cpp -g -Wall -lcurl 3 */ 4 5 #include 6 #include 7 #include 8 #include 9 #include ...
1025 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13186 0
php访问url的四种方式
1.fopen方式 2.file_get_contents方式(打开远程文件的时候会造成CPU飙升。file_get_contents其实也可以post) 3.curl方式4.fsockopen方式(只能获取网站主页信息,其他页面不可以)以上就是php访问url的四种方式的详细内容,更多请关注php...
629 0
925
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载