java web中url理解

来源:互联网 发布:百合 知乎 编辑:程序博客网 时间:2024/06/05 15:07

最近在看许令波的《深入分析java web技术内幕》看到url的编解码时深有感触,现记录如下:

1、首先分析一下url的组成

http://localhost:8080/examples/servlet/小二?name=小二

localhost是域名,8080为端口号,examples是contextPath,servlet是servletpath,小二是pathinfo,后面的参数为querystring

2、相关的配置文件

端口号port在tomcat的<Connector port="8080" /> 中配置,contextPath在<ContextPath="/examples" />中配置 servletPath在web对应的

web.xml的<url-pattern>中配置Pathinfo是我们具体请求的servlet,Querypath是要传递的参数。

3.url的编解码问题

对url的uri(同一资源标识符)部分进行解码的是在connector的<Connector URIEncoding="UTF-8"/>中定义的,如果要用head中的Context定义的

Charset对queryString进行解码需要将connector的<Connector URIEncoding="UTF-8"  useBodyEncodingForURI="true" />中的useBodyEncodingForURI的值设为true,他仅仅是对querystring进行解码而不是整个uri。使用不同的方式解码是因为浏览器对pathinfo和querystring进行了不同方式的编码

4.jsp页面内对接收或发送中文进行编解码

request.setCharacterEncoding()是你设置获得数据的编码方式。
response.setCharacterEncoding()是你响应时设置的编码。
response.setContentType()是设置你响应时的MIME及编码。

如果tomcat中设置了uri的解码格式为UTF-8,那么在jsp页面上添加request.setCharacterEncoding("UTF-8");就可以解决中文乱码问题了

设置响应模式

response.setContentType("text/html;charset=UTF-8");

0 0