最近做Java Web項目,在.jsp頁面和servlet之間request和response還是有些混淆,查閱了一些資料,總結如下,方便以後使用: 首先,servlet介面是最基本的,提供的五個方法也不多說了,關鍵是瞭解清楚什麼是request,什麼事response。 簡單來說: 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提交過來的數據