jsp中request物件和response物件學習筆記
阿新 • • 發佈:2020-12-25
jsp中request物件和response物件學習筆記
request物件和response物件用於客戶端與伺服器的互動。request物件是從客戶端向伺服器發出請求,包括使用者提交的資訊以及客戶端的一些資訊。response物件用於響應客戶端請示。
request裡有各種方法來處理客戶端提交的請求中的各項引數和選項。瀏覽器傳送請求後,服務端用request物件裡的方法獲取瀏覽器的請求資訊,生成響應資訊返回給瀏覽器
程式碼舉例:
1.request物件
<!-- login.jsp檔案 模擬一個網頁客戶端 --> <html> <head> <title>Title</title> </head> <body> <!-- action指定表單資訊傳送的伺服器地址 method指定傳送請求的方式,預設是get --> <form action="control.jsp" method=""> <input type="text" name="uname" placeholder="請輸入使用者名稱"> <input type="password" name="pwd" placeholder="請輸入密碼"> <input type="submit" value="登入"> </form> </body> </html>
在網頁中輸入使用者名稱和密碼點選”登入“就把表單的請求傳送到了control.jsp
<!-- control.jsp檔案 伺服器 --> <% //request.getParameter()方法獲取請求中攜帶的資訊,以下是獲取key為uname和pwd的值 String name = request.getParameter("uname"); String pwd = request.getParameter("pwd"); //判斷使用者名稱(uname的值)是否為admin,轉到相應的頁面 if("admin".equals(name)){ //request.setAttribute()可以為請求中的request物件新增設定傳遞資訊 request.setAttribute("msg","登入成功"); /*請求轉發*/ //下面是呼叫request.getRequestDispatcher().forward(request,response)請求轉發到success.jsp request.getRequestDispatcher("success.jsp").forward(request,response); }else { //請求轉發到error.jsp request.getRequestDispatcher("error.jsp").forward(request,response); } %>
判斷使用者名稱為"admin",request 物件以請求轉發的方式跳轉到success.jsp
<!-- success.jsp檔案 --> <html> <head> <title>Title</title> </head> <body> <% //getParameter()獲取請求中的表單或位址列直接拼接的引數 String uname = request.getParameter("uname"); //getAttribute()獲取通過setAttribute()設定的引數(上面設定的"登入成功") Object msg = request.getAttribute("msg"); %> <!--頁面顯示msg和uname的值--> <h2><%=msg%>!歡迎使用者<%=uname%></h2> </body> </html>
此時的頁面顯示:
顯示了客戶端(login.jsp)的表單資訊以及為請求中的request物件設定的傳遞資訊,說明request 物件的請求轉發中資料不會丟失。位址列的地址顯示是control.jsp檔案,說明在請求轉發中位址列不發生變化,顯示的是上一個頁面的地址。
2.Response物件
在網頁中輸入使用者名稱和密碼點選”登入“傳送請求到control.jsp
<!-- control.jsp檔案 伺服器 -->
<%
//獲取請求中攜帶的資訊
String uname = request.getParameter("uname");
String pwd = request.getParameter("pwd");
if("admin".equals(uname)){
//以下用response.sendRedirect()重定向請求到success.jsp
response.sendRedirect("success.jsp");
}else{
response.sendRedirect("error.jsp");
}
%>
判斷使用者名稱為"admin",request 物件以重定向請求的方式跳轉到success.jsp
<!-- success.jsp檔案 -->
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String uname = request.getParameter("uname");
String pwd = request.getParameter("pwd");
%>
<!--頁面顯示msg和uname的值-->
<h2><%=pwd%>!歡迎使用者<%=uname%></h2>
</body>
</html>
並沒有客戶端(login.jsp)的表單資訊,說明Response物件的重定向請求會丟失資料。而且位址列的地址顯示是success.jsp,會顯示新的地址。
上述中request物件使用的請求轉發,Response物件使用了請求重定向。除了上述的區別,請求轉發和請求重定向的區別還有:請求轉發中瀏覽器發出了1次請求,得到了1次響應,請求重定向中瀏覽器至少發出了2次請求,得到了2次響應。