request中的那些方法到底是干什么的?


最近做Java Web項目,在.jsp頁面和servlet之間request和response還是有些混淆,查閱了一些資料,總結如下,方便以后使用:

 

首先,servlet接口是最基本的,提供的五個方法也不多說了,關鍵是了解清楚什么是request,什么事response。

 void destroy() 
          Called by the servlet container to indicate to a servlet that the servlet is being taken out of service.
 ServletConfig getServletConfig() 
          Returns a ServletConfig object, which contains initialization and startup parameters for this servlet.
java.lang.String getServletInfo() 
          Returns information about the servlet, such as author, version, and copyright.
 void init(ServletConfig config) 
          Called by the servlet container to indicate to a servlet that the servlet is being placed into service.
 void service(ServletRequest req, ServletResponse res) 
          Called by the servlet container to allow the servlet to respond to a request.

 

 

 

 

 

 

簡單來說:

request對象是服務器對瀏覽器請求的封裝,而response是服務器對服務器響應的封裝。

request用來取出請求信息,而response則用來添加要返回給瀏覽器的信息。

從常用的途徑來說: 

request 是請求的載體,它附帶着,請求的參數,ip,cookie,session,表單,字符編碼,或者上傳文件。你可以通過request去獲得你所需要的信息。

response是響應的載體,你可以設置,表頭,報文,響應文件類型,字符編碼,response,自帶一個輸出流,當你需要將一個頁面或者一個文件傳到客戶端時,你可以通過這個流來進行操作。

 

說到這里,我們不得不提一下request中最常用的幾個方法(可能是我項目經驗少,用到的不多),

java.lang.Object getAttribute(java.lang.String name) 
          Returns the value of the named attribute as an Object, or null if no attribute of the given name exists.
 java.lang.String getParameter(java.lang.String name) 
          Returns the value of a request parameter as a String, or null if the parameter does not exist.
 void setAttribute(java.lang.String name, java.lang.Object o) 
          Stores an attribute in this request.

 

 

 

 

很奇怪,有getAttributes()和setAttributes(),有getParameter()卻沒有setParameter()?那什么時候用getAttributes()什么時候用getParameter()呢?

 

1. 好,首先來看getParameter(),getParameter()用來去post或者get提交表單時候,獲得表單里的數據,或者是url上的參數,

什么是表單里的數據呢?看這段代碼:

<form action="HelloFormServlet" method="GET">
網址名:<input type="text" name="name">
<br />
網址:<input type="text" name="url" />
<input type="submit" value="提交" />
</form>

 HTML 表單和提交按鈕傳遞兩個值。我們將使用HelloFormServlet 來處理輸入

在Servlet中:

String name =new String(request.getParameter("name");
String url = new String(request.getParameter("url"));

那什么是url上的參數呢?比如這樣的:

<a href="/ControlCenterServlet?NewTopic.jsp&BoardID=1">××</a>

獲取方式也是通過getParameter():

request.getParameter("BoardID");

request.getParameter()方法傳遞的數據,會從Web客戶端傳到Web服務器端,代表HTTP請求數據。request.getParameter()方法返回String類型的數據。

 

2.而setAttributes()和getAttribute()發生在,當兩個Web組件之間為轉發關系時,轉發目標組件通過setAttributes(),getAttribute()方法來和轉發源組件共享request范圍內的數據。

假定a.jsp和b.jsp之間為轉發關系

a.jsp希望向b.jsp傳遞當前的用戶名字,如何傳遞這一數據呢?先在a.jsp中調用setAttribute()方法:

<%
String username=request.getParameter("username");
request.setAttribute("username",username);
%>
<!-- 轉發到b.jsp -->
<jsp:forward page="b.jsp" />

在b.jsp中通過getAttribute()方法獲得用戶名字:

<% String username=(String)request.getAttribute("username"); %>
username: <%= username %>

request.setAttribute()和getAttribute()方法傳遞的數據只會存在於Web容器內部,在具有轉發關系的Web組件之間共享。這兩個方法能夠設置Object類型的共享數據。

 

這篇博客將上述三個方法概括為:

http://blog.csdn.net/zkflame/article/details/51096836

request.getParameter()取得是通過容器的實現來取得通過類似post,get等方式傳入的數據。
request.setAttribute()和getAttribute()只是在web容器內部流轉,僅僅是請求處理階段。
getAttribute是返回對象,getParameter返回字符串
總的來說:
request.getAttribute()方法返回reques,sessiont范圍內存在的對象
request.getParameter()方法是獲取http提交過來的數據


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM