當客戶端發送一個請求到服務器,servlet容器創建ServletRequest 和ServletResponse 對象,把它們當作參數傳入到service()方法中。請求對象提供了對請求信息的訪問,錄入請求頭和請求數據。
首先我們看一個例子然後看一下ServletRequest接口中可用的方法:
示例1:Servlet getParameter()方法展示用戶輸入
在這個例子中,展示使用getParameter()方法返回給定參數的值。
在html表但中,我們獲取用戶輸入(name &age),存儲在對應的uname,uage參數中。
index.html:
<form action="details" method="get">
User Name: <input type="text" name="uname"><br>
User Age: <input type="text" name="uage"><br>
<input type="submit" value="submit">
</form>
MyServletDemo.java
在此servlet類中,我們通過getparameter()方法獲取參蘇和,該方法輸入ServletRequest接口。在這個例子中,我們有doGet()方法的HttpServletRequest參數,HttpServletRequest實現了ServletRequest接口,這就是爲什麼getparameter()方法對req對象時可用的。
得到這些值後,我們把他們寫入到webpage中。
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class MyServletDemo extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException
{
res.setContentType("text/html");
PrintWriter pwriter=res.getWriter();
String name = req.getParameter("uname");
String age = req.getParameter("uage");
pwriter.println("Name: "+name);
pwriter.println("Age: "+age);
pwriter.close();
}
}
web.xml
這是將servlet映射到url的部署描述符文件。因爲我們的表單有詳細信息頁面作爲action,所以我們將servlet類映射到詳細信息頁面。
<web-app>
<display-name>BeginnersBookDemo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>BeginnersBook</servlet-name>
<servlet-class>MyServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BeginnersBook</servlet-name>
<url-pattern>/details</url-pattern>
</servlet-mapping>
</web-app>
ServletRequest 接口中的方法:
1) String getParameter(String name): 返回制定參數的String值,如果不存在該參數則返回null.
2) Enumeration getParameterNames(): 它返回字符串對象的枚舉,其中包含請求中參數的名稱。
3) String[] getParameterValues(String name): 返回字符串數組,包含了參數中所有的值,如果沒有任何參數,則返回null.
4) String getCharacterEncoding(): 返回請求體使用的字符編碼名稱,如果沒有制定字符編碼則返回null.
5) void setCharacterEncoding(String env): 重載請求體中的字符編碼。
6) int getContentLength(): 返回請求內容的字節長度
9)String getContentType(): 返回請求體的MIME類型,如果未知則返回null.
注意:
我僅僅提到了一部分方法,如果你向看完整的方法清單,請參考官方文檔:
(office document)[https://docs.oracle.com/javaee/7/api/javax/servlet/ServletRequest.html]