1. 程式人生 > >HttpServletRequest、request常用方法、request常見應用、請求轉發、RequestDispatcher

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):獲取指定名稱的引數值。這是最為常用的方法之一。

getParameterValuesString 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常見應用

各種表單輸入項資料的獲取

textpasswordradiocheckbox

fileselecttextarea、 hidden

imagebuttonjs程式設計用

下面是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);

}

}

相關推薦

HttpServletRequestrequest常用方法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緩衝字元流BufferedWriterFileWriter常用方法

一、字元流:                       讀寫時都是以字元為單位進行的。              1:字元流的父類:                                輸出流:Writer                            

JsonNodeJsonObject常用方法

 最近專案中要用json,閒暇時間,對json進行下總結。 1.JsonNode 專案中用到的jar包 import com.fasterxml.jackson.core.JsonParseExcep

HttpServletRequest介面中常用方法

     HttpServletRequest介面繼承於ServletRequest介面。HttpServletRequest物件代表客戶端的請求,當客戶端通過HTTP協議訪問伺服器時,http請求頭中的所有資訊都封裝在這個物件中,通過HttpServletReques

js-DOMBOM相關方法及屬性的應用

1.獲取表單中一個元素----> 表單.元素name HTML程式碼: <form id="form1">     <input type="text" id="text1" name="username" value="" />     <input type='subm