1. 程式人生 > 其它 >jsp中request物件和response物件學習筆記

jsp中request物件和response物件學習筆記

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次響應。