1. 程式人生 > >request物件詳解

request物件詳解

 

2018年10月27日15:45:51於易動


 申請物件:

型別:HttpServletRequest的:

請求物件:封裝了請求頭資訊,請求體資訊等 
 
 .1:特點:型別:HttpServletRequest
 2:生命週期:  
   誕生:客戶端瀏覽器每次發出請求,都會建立一個響應物件。 
   銷燬:服務方法執行完畢就會銷燬 
 
 .3:請求物件的作用:
  a:作為域物件使用 
  .b:能夠獲得請求頭資訊 


  .c:獲得其他的資訊的API方法 
  .d:獲得請求引數:  
  e:請求轉發和請求包含: 
 
 
 作用: 

  •      a:作為域物件的使用:( 本質上是地圖結構,存值和取值用)  

     domain:map結構:存值和取值,移除掉等。 
     域範圍:在當前的請求請求鏈當中有效(沒死亡的話就有效
          .setAttribute(String attName,Object attValue);


          API方法: 
     存屬性:的setAttribute(“attName”,“attValue”); 鍵值對作為一個有物件的屬性。 
     取值:getAttribute(“attName”); 取出來的值型別一定是物件型別:

   如果指定的屬性名稱不存在,將會獲得一個null。
     移除:removeAttribute(“attName”); 
     獲得所有的屬性的名稱:  


     getAttributeNames(); 返回的是一個列舉型別 
     

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.yidongxueyuan.domain.User;

/*
 *  演示 request 物件 的域方法: 
 */
public class AServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		User user = new User(10001,"陳哥");
		//存值: 
//		request.setAttribute("username", "晨哥");
//		request.setAttribute("pasword", "321547");
		
		
		//存放在域物件當中: request物件: 
		request.setAttribute("user", user);
		
		//取值: 
		User req_user= (User)request.getAttribute("user");
		System.out.println(req_user);//
		
		// 移除: 
		// 獲得所有的屬性的名稱: 
		
	}

}
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.yidongxueyuan.domain.User;

/*
 * 獲得request 域物件當中的屬性“
 */
public class BServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		
		//獲得域物件當中的屬性: 
		User user= (User)request.getAttribute("user");
		System.out.println(user);// null : 原因: 這個request物件是新建立的request物件。, 這個物件沒有任何的屬性。 
		
		
	}

}
  •    .B:能夠獲得請求頭資訊: 

   getHeader( refer) 

           返回的是請求來源的那個頁面,refer : 指的是;
 作用:

1  防盜鏈, 防止直接從瀏覽器訪問。

2  統計 廣告的投放效果

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
 * 獲得request物件的請求頭資訊: 
 */
public class CServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		//獲得主機: http://localhost:8080/
		String header = request.getHeader("host");
		System.out.println(header);
		
		//refer 頭: 
		String header2 = request.getHeader("Referer");// http://localhost:8080/javaEE-07/html/01-form.html
		System.out.println(header2);
		
		//作用: 
		//  防盜鏈: 
		if(header2 == null){//這說明是通過瀏覽器的位址列直接訪問: 二沒有進行登入: 
			 response.sendRedirect("/javaEE-07/html/login.html");
		}
		
		//request.getHeader("user-agent")//能夠獲得瀏覽器的版本資訊和作業系統的資訊。 
		
		
		//  統計廣告的投放的效果: 
		//  baidu 
		     // 培訓機構   
		//  搜狗 
		    //  培訓機構: 
		
	}

}

getDateHeader(java.lang.String name)返回的型別是一個long型別。一定是毫秒值: 
          返回指定請求頭的值作為long值表示Date物件 
   .getHeader(java.lang.String name) 
          以String形式返回指定請求標題的值。 
   列舉<java.lang.String> getHeaderNames() 
          返回此請求包含的所有標頭名稱的列舉。 
   列舉<java.lang.String> getHeaders(java.lang.String name)返回一個頭對應多個值的情況:型別是列舉型別。 
          返回指定請求標頭的所有值,作為String物件的列舉 
   .getIntHeader(java.lang.String name) 
          以int形式返回指定請求標頭的值。 


   

  •    C:請求物件獲得其他的API方法: 

   
       例子:   http:// localhost:8080 / javaEE-07 / html / 01-form.html?username = lisi&age = 21
   URL:統一資源定位符:  定位
   URI:統一描述符:描述了訪問的具體的資源:javaEE-07 / html / 01-form.html
   
   http:協議:  
        https:
        jdbc     :  資料庫
        mailTo :郵件協議: 
        ftp       :       檔案傳輸協議: 
        soap   :簡單的物件訪問協議: 
        
    ip:localhost ===“127.0.0.1迴環地址,測試網絡卡正確:     
常見埠:   

  • 8080:tomcat 
  • 521:oracle  
  • 3306:mysql 
  • redis 

              
   javaEE-07:專案名稱:            
  /html/01-form.html:訪問的資源: 
  username = lisi&age = 21:

query部分:URL 後面追加的引數

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
 *	request物件 獲得其他的API方法”
 *  和URL相關的API方法: 
 *   
 */
public class DServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		String url= request.getRequestURL().toString();//
		String uri =request.getRequestURI();//     /javaEE-07/servlet/DServlet
		
		//協議: 
		String http = request.getScheme();
		
		//ip地址: 
		String ip = request.getServerName();
		
		//埠號: 
		int port = request.getServerPort();
		
		//獲得專案名稱: 
		String contextPath = request.getContextPath();// /javaEE-07
		
		//獲得訪問的url: 
		String servletPath = request.getServletPath();
		
		//獲得query部分:
		String queryString = request.getQueryString();
		
		System.out.println(url);
		System.out.println(http+"://"+ip+":"+port+contextPath+servletPath+"?"+queryString);
		
		System.out.println("==========");
		System.out.println(contextPath+servletPath);
		System.out.println(uri);
		
		
		
	}

}

獲取IP  並且對其進行操作