HttpServletRequest、request常用方法、request常見應用、請求轉發、RequestDispatcher
HttpServletRequest物件代表客戶端的請求,當客戶端通過HTTP協議訪問伺服器時,HTTP請求頭中的所有資訊都封裝在這個物件中,開發人員通過這個物件的方法,可以獲得客戶這些資訊。
request常用方法
獲得客戶機資訊
getRequestURL方法返回客戶端發出請求時的完整URL。
getRequestURI方法返回請求行中的資源名部分。
getQueryString 方法返回請求行中的引數部分。
getRemoteAddr方法返回發出請求的客戶機的IP地址
getRemoteHost方法返回發出請求的客戶機的完整主機名
getRemotePort方法返回客戶機所使用的網路埠號
getLocalAddr方法返回WEB伺服器的IP地址。
getLocalName方法返回WEB伺服器的主機名
getMethod得到客戶機請求方式
package com.hbsi.request;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Request1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println(request.getRequestURI());
System.out.println(request.getRequestURL());
System.out.println(request.getQueryString());
System.out.println(request.getMethod());
System.out.println(request.getRemoteAddr());
System.out.println(request.getRemoteHost());
System.out.println(request.getRemotePort());
System.out.println(request.getLocalAddr());
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
獲得客戶機請求頭
getHead(name)方法
getHeaders(String name)方法
getHeaderNames方法
獲得客戶機請求引數(客戶端提交的資料)
getParameter(name):獲取指定名稱的引數值。這是最為常用的方法之一。
getParameterValues(String name):獲取指定名稱引數的所有值陣列。它適用於一個引數名對應多個值的情況。如頁面表單中的複選框,多選列表提交的值。
getParameterNames():返回一個包含請求訊息中的所有引數名的Enumeration物件。通過遍歷這個Enumeration物件,就可以獲取請求訊息中所有的引數名。
getParameterMap():返回一個儲存了請求訊息中的所有引數名和值的Map物件。Map物件的key是字串型別的引數名,value是這個引數所對應的Object型別的值陣列。
package com.hbsi.request;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Request2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//String value = request.getHeader("Accept");
//System.out.println(value);
Enumeration e = request.getHeaderNames();
while(e.hasMoreElements()){
String name = (String) e.nextElement();
String value = request.getHeader(name);
System.out.println(name+":"+value);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
request常見應用
各種表單輸入項資料的獲取
text、password、radio、checkbox、
file、select、textarea、 hidden、
image、button給js程式設計用
下面是request程式碼
package com.hbsi.request;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Reqeust3 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println(request.getParameter("name"));
}
private void test1form(HttpServletRequest request) {
String name = request.getParameter("username");
String password = request.getParameter("password");
String sex = request.getParameter("sex");
String city = request.getParameter("city");
String [] likes = request.getParameterValues("likes");
String likeString="";
for(int i=0;likes!=null && i<likes.length;i++){
String like = likes[i];
likeString +=like;
}
String memo = request.getParameter("memo");
System.out.println(name+","+password+","+sex+","+city+","+likeString+","+memo);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
請求引數的中文亂碼問題
URL地址的編碼
package com.hbsi.request;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Request4 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String value = request.getParameter("name");
System.out.println(new String(value.getBytes("iso8859-1"),"UTF-8"));
}
private void test2(HttpServletRequest request)
throws UnsupportedEncodingException {
//get方式
String name = request.getParameter("username");
name = new String(name.getBytes("iso8859-1"),"UTF-8");
System.out.println(name);
}
private void test1(HttpServletRequest request)
throws UnsupportedEncodingException {
request.setCharacterEncoding("UTF-8");//只對post方式起作用
System.out.println(request.getParameter("username"));
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
防盜鏈
package com.hbsi.request;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Request5 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String referer = request.getHeader("referer");
if(referer==null || !referer.startsWith("http://localhost")){
response.sendRedirect("/servletdemo/index.jsp");
return;
}
response.setContentType("text/html;charset=utf-8");
String data = "祕密!!!!";
response.getWriter().write(data);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
request物件實現請求轉發:請求轉發指一個web資源收到客戶端請求後,通知伺服器去呼叫另外一個web資源進行處理。
請求轉發
Servlet API中定義了一個RequestDispatcher介面,俗稱請求分派器。它定義瞭如下兩個方法:
public void forward(ServletRequest request, ServletResponse response)
public void include(ServletRequest request, ServletResponse response)
獲取RequestDispatcher例項的方式主要有兩種:
呼叫ServletContext介面提供的getRequestDispatcher(String url)方法。
呼叫ServletRequest介面提供的getRequestDispatcher(String url)方法。
RequestDispatcher
include方法:
RequestDispatcher.include方法用於將RequestDispatcher物件封裝的資源內容作為當前響應內容的一部分包含進來,從而實現可程式設計的伺服器端包含功能。
被包含的Servlet程式不能改變響應訊息的狀態碼和響應頭,如果它裡面存在這樣的語句,這些語句的執行結果將被忽略。
package com.hbsi.request;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Request6 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getRequestDispatcher("/header.html").include(request, response);
response.getOutputStream().write("aaaaaaaaaaaa".getBytes());
request.getRequestDispatcher("/footer.html").include(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
相關推薦
HttpServletRequest、request常用方法、request常見應用、請求轉發、RequestDispatcher
HttpServletRequest物件代表客戶端的請求,當客戶端通過HTTP協議訪問伺服器時,HTTP請求頭中的所有資訊都封裝在這個物件中,開發人員通過這個物件的方法,可以獲得客戶這些資訊。 request常用方法 獲得客戶機資訊 getRequestURL方法返回客戶端發出請求時的完整URL。 ge
python爬蟲系列(1.2-urllib模組中request 常用方法)
一、request.Request方法的使用 上一章節中介紹了request.urlopen()的使用,僅僅的很簡單的使用,不能設定請求頭及cookie的東西,request.Request()方法就是進一步的包裝請求. 1、原始碼檢視引數 class Request: &nb
request常用方法的使用
1.用request的各種方法輸出request中的各種方法,新建頁面requestApp1.jsp原始碼如下: requestApp1.jsp <%@ page contentType="text/html;charset=gb2312"%> <%@ page imp
python的list的基本操作、list迴圈、切片、字典基本操作、字典巢狀、字串常用方法
上面說了字串和整形,那現在要是想存一個班級的人的名字,這個班有200個人,怎麼存呢,用字串的話,那就是names = 'marry lily king .....'這樣,但是這樣存是可以存,那要是想取到某個人的名字怎麼取呢,不能再去裡面看一遍吧,那累死人了,為了解決這個問題,又有一種新的資料型別應運而生,那就
Python自動化學習筆記(四)——Python資料型別(集合set,元組tuple)、修改檔案、函式、random常用方法
1.修改檔案的兩種方式 1 #第一種 2 with open('users','a+') as fw: #用a+模式開啟檔案,使用with這種語法可以防止忘記close檔案 3 fw.seek(0) #移動檔案指標到最前面,然後才能讀到內容 4 result=fw.read()
Request常用方法
getRequestURL方法返回客戶端發出請求時的完整URL。 getRequestURI方法返回請求行中的資源名部分。 getQueryString 方法返回請求行中的引數部分。 getPathInfo方法返回請求URL中的額外路徑資訊。額外路徑資訊是請求URL中的
JS資料型別判斷方式及優缺點、String常用方法
資料型別判斷方式及優缺點 JS中一共有七種資料型別: 一種引用型別——Object, 六種基本資料型別——Number、String、Boolean、Null、Undifined、Symbol(ES6新增) typeof(var):返回的是一個字串,但是對於複
JS陣列、字串常用方法
陣列: 1.push(): 向陣列尾部新增一個或多個元素,並返回新增新元素後的陣列長度。注意,該方法會改變原陣列。 1 var arr = [1,2,3]; 2 console.log(arr); // [1, 2, 3] 3 var b = arr.pu
request常用方法大全
原地址 一、HttpServletRequest介紹 HttpServletRequest物件代表客戶端的請求,當客戶端通過HTTP協議訪問伺服器時,HTTP請求頭中的所有資訊都封裝在這個物件中,通過這個物件提供的方法,可以獲得客戶端請求的所有資訊。 二、Req
Python3 21.6. urllib.request 常用方法中文翻譯(自翻)
request 是一個幫助開啟url(大多數為http)的方法. The urllib.request module defines the following functions: urllib.request 定義了以下的方法: urllib.request.urlope
request常用方法及應用
request常用方法 獲得客戶機資訊 getRequestURL方法返回客戶端發出請求時的完整URL。 getRequestURI方法返回請求行中的資源名部分。 getQueryString 方法返回請求行中的引數部分。 getRemoteAddr方法返回發出請求
一、Object常用方法(瞭解)
一、Object常用方法(瞭解) 1、Object類的hashCode()方法 * 原始碼:public native int hashCode() native的意思本地,藉助本地系統資源算了值,比如我們的虛擬機器是在Wi
http請求與Request常用方法
一、http請求 HTTP請求報文由3部分組成(請求行+請求頭+請求體): ①是請求方法,GET和POST是最常見的HTTP方法,除此以外還包括DELETE、HEAD、OPTIONS、PUT、TRACE。不過,當前的大多數瀏覽器只支援GET和POST,Spring 3
request 常用方法
StringBuffer getRequestURL():返回請求URL路徑,即返回除了引數以外的路徑資訊; 例如:http://localhost/IM/medicalController.do String getContextPath():返回上下文路徑,例如:/I
Hibernate學習筆記(四)----核心開發介面、物件的三種狀態、session常用方法
a) AnnotationConfiguration b) 進行配置資訊的管理 c) 用來產生SessionFactory d) 可以在configure方法中指定hibernate配置檔案 e) 只關注一個方
JSP內建物件request 常用方法 案例
JSP九大內建物件有 request,out,response,application,session,pageContext,page,confid,exception 下面我寫一個關於reques
字元流Writer、緩衝字元流BufferedWriter、FileWriter常用方法
一、字元流: 讀寫時都是以字元為單位進行的。 1:字元流的父類: 輸出流:Writer
JsonNode、JsonObject常用方法
最近專案中要用json,閒暇時間,對json進行下總結。 1.JsonNode 專案中用到的jar包 import com.fasterxml.jackson.core.JsonParseExcep
HttpServletRequest介面中常用方法
HttpServletRequest介面繼承於ServletRequest介面。HttpServletRequest物件代表客戶端的請求,當客戶端通過HTTP協議訪問伺服器時,http請求頭中的所有資訊都封裝在這個物件中,通過HttpServletReques
js-DOM、BOM相關方法及屬性的應用
1.獲取表單中一個元素----> 表單.元素name HTML程式碼: <form id="form1"> <input type="text" id="text1" name="username" value="" /> <input type='subm