1. 程式人生 > >jsp內建物件之Request和response

jsp內建物件之Request和response

1. 內建物件

之前我們使用一個物件,必須通過類名new出來,之後才能使用!

User  user=new User();

 user.屬性名/user.方法

但是我們剛才看到了一些列的request.getXXX()

疑問?request物件何時被建立?

jsp中,不需要我們手動的例項化,直接使用的物件====》內建物件

內建物件

 作用

對應的Java類

Page

 當前頁面

This

pageContext

當前頁面上下文物件

PageContext

request

請求物件

HttpServletRequest

response

響應物件

HttpServletResponse

session

會話物件

HttpSession

application

應用程式物件

ServletContext

out

輸出物件

JspWriter

config

 配置物件

ServletConfig

exception

異常物件

Throwable

JSP執行流程


宣告成員變數和區域性變數

    <%
        //宣告區域性變數   會在service方法中出現
        int  num1=5;
        int  num2=10;
     
     %>
  
  
  <%!  //宣告成員變數  會在 index_jsp.java類中出現
      int num1=50;
      int num2=100;
      
      //定義方法
       public  int getSum(){
       System.out.print(num1+num2);
         return num1+num2;
       }
   %>

<%!
       //成員變數
       int initNum=0;
       int serviceNum=0;
       int destroyNum=0;
       
       public  void jspInit(){
         System.out.println("jspInit====>初始化執行了"+(++initNum)+"次");
         //只有在使用者第一次訪問頁面的時候執行
       }
   
       public  void jspDestroy(){
         System.out.println("jspDestroy====>銷燬執行了"+(++destroyNum)+"次");
         //只有在關閉伺服器的時候執行
       }
    %>
    
    
    <%   // 只要是寫在這個 <%中的資料 務必在service方法中執行
     System.out.println("jspInit====>初始化執行了"+(initNum)+"次");
     System.out.println("jspDestroy====>銷燬執行了"+(destroyNum)+"次");
     System.out.println("jspService====>service執行了"+(++serviceNum)+"次");
     System.out.println("==========================================================");
     // 使用者每訪問一次  執行一次
     
     %>

二:JSP的資料互動

2.1Request請求物件

1.登入 login.jsp頁面

<body>
      <h1>登入頁面</h1>
      <form action="doLogin.jsp" method="get">
        <input type="text" name="userName" placeholder="請輸入使用者名稱">  <br/>
        <input type="password" name="pwd" placeholder="請輸入密碼"><br/>
        
       愛好:<br/>
        <input type="checkbox"  name="love"  value="java">java<br/>
        <input type="checkbox"  name="love"  value="sql">sql<br/>
        <input type="checkbox"  name="love"  value="javaScript">javaScript<br/>
        <input type="submit" value="提交資訊">
      </form>
  </body>

2. 處理頁面 doLogin.jsp

解決get請求方式亂碼治本的辦法

 <body>
   <h1>這是doLogin處理頁面</h1>
   <%
    //解決post請求方式亂碼治標的辦法   後續使用 過濾器Filter 根本上解決post請求亂碼的問題
    request.setCharacterEncoding("utf-8");
   
//使用request請求物件 獲取使用者在login.jsp頁面輸入和選擇的內容
//通過form表單中的name屬性值獲取對應的value值

String userName= request.getParameter("userName");    
String pwd= request.getParameter("pwd"); 
    
    out.println("使用者名稱==》"+userName+"<br/>");
    out.println("密碼==》"+pwd+"<br/>");
   
    String [] loves= request.getParameterValues("love");  //獲取使用者選擇項
    if(loves!=null&&loves.length>0){
     for(String love:loves){
        out.println(love+"<br/>");
      }
    }
    %>
  </body>

3. request的常用方法

getContextPath

 獲取web專案的相對路徑

getSchme

 獲取的協議名稱

getServerName

 獲取伺服器名稱

getServlerPort

獲取伺服器埠號

getParameter

 獲取指定的請求引數值

GetParameterValues

 獲取指定的請求引數集合

GetSession

 獲取當前請求所在的session物件

GetCookies

  獲取所有的cookie陣列

SetAttribute

 向request作用域中儲存屬性和值

GetAttribute

 從request作用域中獲取指定屬性的值

SetCharacterEncoding

 設定請求的編碼格式

GetMethod

 獲取請求型別

GetRequestDispatcher

 獲取轉發器

2.2Response響應物件

SetCharacterEncoding

設定響應的編碼格式

addCookie

 新增cookie

SetHeader

 設定訊息頭資訊

SetStatus

 設定狀態碼

SendRedirect

 重定向

SetContentType

設定瀏覽器的資料型別

GetOutputStream

 獲取輸出到瀏覽器的位元組流物件

GetWriter

獲取輸出到瀏覽器的字元流物件

2.3:轉發



特點:

 01.轉發是伺服器的行為

 02.URL地址不會變化

 03.資料不會丟失

 04.延長一次請求作用域

Aaa.jsp

<body>
	<form action="Bbb.jsp" method="get">
		<table>
			<tr>
				<td>使用者名稱</td>
				<td><input type="userName" name="userName"></td>
			</tr>
			<tr>
				<td>密碼</td>
				<td><input type="password" name="password"></td>
			</tr>
			<tr>
				<td colspan="2">
					<input type="submit" value="登入">
				</td>
			</tr>
		</table>
	</form>
</body>

Bbb.jsp

<body>
	<%
		String userName = request.getParameter("userName");
		String password = request.getParameter("password");
		if (userName.equals("meng") && password.equals("3588105")) {
			//
			request.getRequestDispatcher("Ccc.jsp").forward(request, response);
			
		}else{
			out.print("賬號或者密碼不正確");
		}
	%>
</body>

Ccc.jsp

<body>
	您好歡迎訪問
</body>

2.4:重定向

特點:

 01.重定向是客戶端的行為

 02.URL地址會變化,是最後一次請求的路徑

 03.資料會丟失

 04.至少兩次訪問伺服器


<body>
	<form action="Bbb.jsp" method="get">
		<table>
			<tr>
				<td>使用者名稱</td>
				<td><input type="userName" name="userName"></td>
			</tr>
			<tr>
				<td>密碼</td>
				<td><input type="password" name="password"></td>
			</tr>
			<tr>
			    <td colspan="2">
			        <input type="submit" value="登入">
			    </td>
			</tr>
		
		</table>
	
	</form>
</body>
這個是:Bbb.jsp
<body>
	<%
		String userName = request.getParameter("userName");
		String password = request.getParameter("password");
		if (userName.equals("meng") && password.equals("3588105")) {
			
			request.getRequestDispatcher("Ccc.jsp").forward(request, response);
			
		}else{
			out.print("賬號或者密碼不正確");
		}
	%>
</body>

<body>
	<%
		String userName = request.getParameter("userName");
		String password = request.getParameter("password");
		if (userName.equals("meng") && password.equals("3588105")) {
			
			request.getRequestDispatcher("Ccc.jsp").forward(request, response);
			
		}else{
			out.print("賬號或者密碼不正確");
		}
	%>
</body>

<body>
	<%
		String userName = request.getParameter("userName");
		String password = request.getParameter("password");
		if (userName.equals("meng") && password.equals("3588105")) {
			
			//1.通過響應告訴瀏覽器該搶救這樣的一個地址
			//2.瀏覽器訪問指定的URL==== Ccc.jsp
			response.sendRedirect("Ccc.jsp");
		}else{
			out.print("賬號或者密碼不正確");
		}
	%>
</body>
<body>
	您好歡迎訪問   Ccc.jsp
</body>

總結:

request負責封裝客戶端請求,response封裝的是伺服器的響應重定向採用response.sendRedirect(url)實現,重定向行為發生於瀏覽器,位址列地址改變轉發採用request.getRequestDispatcher(url).forword(request,response)實現,轉發行為發生於伺服器,位址列地址不改變
選擇進入
<body>
	<a href="result.jsp?color=黃色">黃色</a>
	<a href="result.jsp?color=綠色">綠色</a>
	<a href="result.jsp?color=紫色">紫色</a>
	<a href="result.jsp?color=黑色">黑色</a>
	<a href="result.jsp?color=粉色">粉色</a>
</body>
<body>
	您所選擇的是<%= request.getParameter("color") %>
</body>