1.關於request對象處理get和post請求,中文可能出現亂碼的問題:
tomcat在處理get和post請求的時候處理方式不同。
POST請求是將參數存放在請求資料包的訊息體中
所以使用request.setCharacterEncoding("utf-8");可以處理
但是GET請求是將參數存放在url中,此時setCharacterEncoding就不起作用了,此時我們需要採用手寫代碼進行轉碼。 (因為tomcat對get請求產生url自動做了iso8859-1編碼)
e.g.:
String name = new String(request.getParameter("username").getBytes("iso-8859-1"),"utf-8");
也有說修改tomcat配置的:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
不過自己試了試不知為何貌似無效……
2.關於request對象執行forward和include
HttpServletRequest類提供了一個getRequestDispatcher(String path)方法,其中path為forward/include的目標路徑,返回RequesDispatcher,該對象提供以下兩個方法
forward(ServletRequest request, ServletResponse response):執行forward;include(ServletRequest request, ServletResponse response):執行include;
調用如下:
request.getRequestDispatcher("/a.jsp").include(request, response);request.getRequestDispatcher("/a.jsp").forward(request, response);
forward方法與使用jsp:forward標籤效果一樣,但是include方法與jsp:include標籤效果不同:
include方法調用後path中的內容會被先載入到返回頁面中,然後才是當前頁面內容;
而jsp:include標籤則在什麼位置使用就在什麼位置載入path中的內容。
最後,注意path中的字串必須以“/”開頭。
繼續學習,hoho!~