10.如何在Servlet中获取请求信息
- Servlet的service()方法用于应答请求:因为每次请求都会调用service()方法。
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException
(1) ServletRequest:封装了请求信息。可以从中获取到任何的请求信息
(2) ServletResponse:封装了相应信息,如果想给用户什么响应,具体可以 使用该接口的方法实现。
(3) 这两个接口的实现类都是服务器给予实现的,并且在服务器调用service方法时传入.
- ServletRequest:
1. 获取请求参数
>String getParameter(String name)
根据请求参数的名字,返回参数值。若请求参数有多个值,如多选checkbox,该方法只能获取到第一个提交的值。
>Map<String[]> getParameterMap()
返回请求参数的键值对:key 参数名,value 参数值 String 数组类型
>Enumeration<String> getParameterNames()
返回参数对应的Enumeration对象。类似于ServletConfig(或ServletContext)的getInitParameterNames()方法
>String[]getParameterValues(String name)
根据请求参数的名字,返回请求参数对应的字符串数组。
2. 获取请求的URI
HttpServletRequest servletRequest =(HttpServletRequest)request;
String URI = servletRequest.getRequestURI();
System.out.println(URI);
3. 获取请求方式:
String method = servletRequest.getMethod();
System.out.println(method);
4. 获取请求的字符串(若是一个GET请求),即问号后的字符串
String queryString = servletRequest.getQueryString();
System.out.println(queryString);
5. 获取请求的Servlet请求的映射路径
String servletPath = servletRequest.getServletPath();
System.out.println(servletPath); // /loginServlet
6. 和attribute相关的方法
注:HttpServletRequest:是ServletRequest的子接口。针对于HTTP请求所定义。里面包含了大量获取HTTP请求相关的方法。
<form action="loginServlet" method="get">
user:<input type="text" name="user"/>
password:<input type="text" name="password"/>
<br><br>
Interesting:
<input type="checkbox" name="interesting" value="reading"/>Reading
<input type="checkbox" name="interesting" value="game"/>Game
<input type="checkbox" name="interesting" value="party"/>Party
<input type="checkbox" name="interesting" value="shopping"/>Shopping
<input type="checkbox" name="interesting" value="sport"/>Sport
<input type="checkbox" name="interesting" value="TV"/>TV
<input type="submit" value="Submit"/>
</form>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.shi.webapp.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
public void service(ServletRequest request, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("请求来了");
String user = request.getParameter("user");
String password = request.getParameter("password");
System.out.println("user:"+user+",password:"+password);
String interesting = request.getParameter("interesting");
System.out.println("--->"+interesting);
String []interestings = request.getParameterValues("interesting");
for (String inter:interestings) {
System.out.println("....."+inter);
}
Enumeration<String> enumer = request.getParameterNames();
while (enumer.hasMoreElements()) {
String name = enumer.nextElement();
System.out.println("`````"+name);
}
Map<String, String[]> map = request.getParameterMap();
for (Map.Entry<String, String[]> entry: map.entrySet()) {
System.out.println("**"+entry.getKey()+":"+Arrays.asList(entry.getValue()));
}
HttpServletRequest servletRequest = (HttpServletRequest)request;
String URI = servletRequest.getRequestURI();
System.out.println(URI);
String method = servletRequest.getMethod();
System.out.println(method);
String queryString = servletRequest.getQueryString();
System.out.println(queryString);
String servletPath = servletRequest.getServletPath();
System.out.println(servletPath); // /loginServlet
}