当客户端发送一个请求到服务器,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]