HttpServletRequest、request常用方法、request常見應用、請求轉寄、RequestDispatcher

來源:互聯網
上載者:User

標籤:http   io   os   ar   使用   java   for   sp   資料   

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.