request對象
客戶端的請求信息被封裝在request對象中,通過它才能了解到客戶的需求,然后做出響應。它是HttpServletRequest類的實例。request對象具有請求域,即完成客戶端的請求之前,該對象一直有效。常用方法如下:
String getParameter(String name) 返回name制定參數的參數值
String[] getParameterValues(String name) 返回草含參數name的所有值的數組
void setAttribute(String,Object) 存儲此請求中的屬性。
object getAttribute(Stirng name) 返回iu指定屬性的屬性值
String getContentType() 得到請求體的MIME類型
String getProtocol() 返回請求用的協議類型及版本號
String getServerName() 返回接受請求的服務器主機名
request對象響應post請求
首先我們在reg.jsp中寫一個表單用於提交包含用戶名和愛好的表單:
<form name="regForm" action="request.jsp" method="post"> <table> <tr> <td>用戶名:</td> <td><input type="text" name="username"></td> </tr> <tr> <td>愛好:</td> <td> <input type="checkbox" name="favorite" value="read">讀書 <input type="checkbox" name="favorite" value="music">音樂 <input type="checkbox" name="favorite" value="movie">電影 <input type="checkbox" name="favorite" value="internet">上網 </td> </tr> <tr> <td colspan="2"><input type="submit" value="提交"></td> </tr> </table> </form>
表單的目標頁面是"request.jsp",我們可以新建一個request.jsp用於顯示表單提交的信息。
為了避免中文亂碼,我們統一使用utf-8格式編碼,所以(特別是在輸入——比如用戶名——為中文的時候)我們需要為request設置一下編碼,如下:
<% request.setCharacterEncoding("utf-8"); %>
然后我們可以通過如下代碼顯示表單提交的信息:
用戶名:<%=request.getParameter("username") %><br> 愛好: <% String[] favorites = request.getParameterValues("favorite"); for (String favorite : favorites) out.println(favorite + " "); %><br>
效果如下:
request對象同樣可以響應get請求。
為了模擬這個過程,我們需要在reg.jsp頁面中添加一段超鏈接的代碼模擬以模擬一個get請求:
<a href="request.jsp?username=月光詩人&favorite=read&favorite=movie">get請求</a>
效果如下:
可能存在一些情況是get請求傳參的時候出現了中文亂碼(我這里沒有出現),解決辦法是:
打開tomcat目錄下conf目錄下的server.xml文件,找到如下內容:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
在Connector標簽中加上屬性URIEncoding="utf-8",如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>
既可解決get請求中的中文亂碼問題。