关于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如需转载自行联系原作者


相关文章
|
3月前
|
存储 弹性计算 大数据
阿里云服务器怎么样?全访问解析云服务器ECS功能、租用、优缺点及使用说明
阿里云ECS是弹性计算服务,提供安全可靠的云服务器,包括多种实例规格如经济型、通用型、计算型等,适合不同场景。ECS支持VPC专有网络、快照与镜像、多种付费模式。用户可根据业务需求选择实例、存储类型和网络配置。阿里云服务器适用于Web应用、游戏、大数据和深度学习等场景,提供免费试用和不同优惠套餐。众多知名企业如新浪微博等信赖阿里云服务。更多信息可访问阿里云官方网站。
174 5
|
12天前
|
Java 应用服务中间件 Windows
windows服务器重装系统之后,Tomcat服务如何恢复?
windows服务器重装系统之后,Tomcat服务如何恢复?
26 10
|
4天前
|
人工智能 网络协议 Shell
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
14 1
|
5天前
|
人工智能 网络协议 Shell
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
19 0
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
|
2月前
|
应用服务中间件 Docker 容器
在服务器中使用Docker安装Tomcat、同时实现目录挂载、并且部署War包到服务器
这篇文章介绍了在Docker中安装Tomcat的过程,包括搜索Tomcat镜像、拉取镜像、目录挂载的准备、创建并挂载容器,以及如何进入容器和进行测试。文中还说明了如何将WAR包部署到Tomcat服务器并访问部署的应用。
在服务器中使用Docker安装Tomcat、同时实现目录挂载、并且部署War包到服务器
|
2月前
|
JavaScript Linux 应用服务中间件
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
|
2月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
2月前
|
网络协议 Java 应用服务中间件
Tomcat源码分析 (一)----- 手撕Java Web服务器需要准备哪些工作
本文探讨了后端开发中Web服务器的重要性,特别是Tomcat框架的地位与作用。通过解析Tomcat的内部机制,文章引导读者理解其复杂性,并提出了一种实践方式——手工构建简易Web服务器,以此加深对Web服务器运作原理的认识。文章还详细介绍了HTTP协议的工作流程,包括请求与响应的具体格式,并通过Socket编程在Java中的应用实例,展示了客户端与服务器间的数据交换过程。最后,通过一个简单的Java Web服务器实现案例,说明了如何处理HTTP请求及响应,强调虽然构建基本的Web服务器相对直接,但诸如Tomcat这样的成熟框架提供了更为丰富和必要的功能。
|
2月前
|
网络协议
【Azure 应用服务】探索在Azure上设置禁止任何人访问App Service的默认域名(Default URL)
【Azure 应用服务】探索在Azure上设置禁止任何人访问App Service的默认域名(Default URL)
|
3月前
|
存储 弹性计算 前端开发
云服务器 ECS产品使用问题之如何从互联网访问ECS实例上的某个文件
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
下一篇
无影云桌面