|
request隱含物件會轉換為javax.servlet.http.HttpServletRequest型態的物件,HttpServletRequest物件是有關於用戶端所發出的請求之物件,只要是有關於用戶端請求的資訊,都可以藉由它來取得,例如請求標頭、請求方法、請求參數、使用者IP等等資訊。 對於每一個用戶請求,容器都會為它產生一個HttpServletRequest物件,在Servlet的doService()或doGet()、 doPost()等方法中,只有HttpServletRequest物件被認定為執行緒安全的(Thread-safe)。 下面這個例子可以讓您取得使用者所發出的請求參數:
<%@page contentType="text/html;charset=Big5" getParameterNames()可以讓您取得用戶端所發出的請求參數名稱,而getParameter()可以讓您指定請求參數名稱,以取得對應的設定值,如果這個JSP名稱是requestdemo.jsp,而您在瀏覽器中鍵入: http://localhost:8080/myjsp/requestDemo.jsp?name=justin&nick=caterpillar
也就是說您發出的請求「參數=值」為name=justin以及nick=caterpillar,則網頁的執行結果是: <html>
<head><title>取得請求參數</title></head> <body> <h1>取得請求「參數=值」</h1> nick = caterpillar<br> name = justin<br> </body> </html> 當然實際應用上,並不是要求用戶直接在網址列上鍵入以上的參數,而是透過表單來傳送參數,如果表單中的欄位發送的是中文,則在取得請求參數之前,必須先指定發送過來的請求編碼,例如若是Big5中文的話,則必須先執行以下這行: request.setCharacterEncoding("Big5");
當然每一次都要先執行這行的話有些麻煩,建議可以將這行放在 Filter 中。 與用戶端發出的訊息相關的,我們都可以透過request(HttpServletRequest)物件來取得,例如下面的程式可以取得一些用戶端的訊息:
<%@page contentType="text/html;charset=big5" 如果我們還是使用以下的請求方式: http://localhost:8080/myjsp/requestDemo.jsp?name=justin&nick=caterpillar
則JSP網頁會傳回以下的訊息,以下直接顯示網頁上的文字: 取得用戶端資訊
請求的伺服器: localhost 使用協定: HTTP/1.1 請求方法: GET 請求的埠號: 8080 Context路徑: /myjsp Servlet路徑: /requestdemo.jsp URI路徑: /myjsp/requestdemo.jsp 查詢字串: name=justin&nick=caterpillar 使用者主機IP: 127.0.0.1 使用者使用埠號: 1060 關於更多request(HttpServletRequest)物件可用的方法,可以查詢Servlet API Javadocs中有關於HttpServletRequest的部份(Tomcat安裝後可以在安裝目錄中的webapps/tomcat- docs/servletapi/index.html 查詢到)。 |