1. 程式人生 > >java web中url理解

java web中url理解

最近在看許令波的《深入分析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");