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 並且對其進行操作