获取请求行信息的相关方法
当访问Servlet时,会在请求消息的请求行中,包含请求方法、请求资源名,请求路径等信息,为了获取这些信息,在HttpServletRequest接口中,定义了一系列用于获取请求行信息的方法,如表1所示。
表1 获取请求行的相关方法
方法声明 | 功能描述 |
---|---|
String getMethod() | 该方法用于获取HTTP请求消息中的请求方式(如GET、POST等) |
String getRequestURI() | 该方法用于获取请求行中资源名称部分,即位于URL的主机和端口之后、参数部分之前的部分。 |
String getQueryString() | 该方法用于获取请求行中的参数部分,也就是资源路径后面的问号(?)以后的所有内容 |
String getProtocol() | 该方法用于获取请求行中的协议名和版本,例如,HTTP/1.0或HTTP/1.1 |
String getContextPath() | 该方法用于获取请求URL中属于WEB应用程序的路径,这个路径以“/”开头,表示相对于整个WEB站点的根目录,路径结尾不含“/”。如果请求URL属于WEB站点的根目录,那么返回结果为空字符串("") |
String getPathInfo() | 该方法用于获取请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。如果请求URL中没有额外路径信息部分,getPathInfo返回null |
String getPathTranslated() | 该方法用于获取URL中的额外路径信息所对应的资源的真实路径。假设“/controller/one.jsp”中的“/one.jsp”为额外路径信息,getPathTranslated()即为“/one.jsp”所对应的资源文件的真实路径 |
String getServletPath() | 该方法用于获取Servlet的名称或Servlet所映射的路径 |
在表1中,列出了一系列用于获取请求消息行的方法,为了大家更好地理解这些方法,接下来,通过一个案例来演示这些方法的使用,如例1所示。
例1 RequestLineServlet.java
1 package cn.itcast.chapter05.request;
2 import java.io.*;
3 import javax.servlet.*;
4 import javax.servlet.http.*;
5 public class RequestLineServlet extends HttpServlet {
6 public void doGet(HttpServletRequest request,
HttpServletResponse response)
7 throws ServletException, IOException {
8 response.setContentType("text/html;charset=utf-8");
9 PrintWriter out = response.getWriter();
10 // 获取请求行的相关信息
11 out.println("getMethod : " + request.getMethod() + "<br>");
12 out.println("getRequestURI : " + request.getRequestURI() + "<br>");
13 out.println("getQueryString : " + request.getQueryString() + "<br>");
14 out.println("getProtocol : " + request.getProtocol() + "<br>");
15 out.println("getContextPath : " + request.getContextPath() + "<br>");
16 out.println("getPathInfo : " + request.getPathInfo() + "<br>");
17 out.println("getPathTranslated : " + request.getPathTranslated()+ "<br>");
18 out.println("getServletPath : " + request.getServletPath() + "<br>");
19 }
20 public void doPost(HttpServletRequest request, HttpServletResponse response)
21 throws ServletException, IOException {
22 doGet(request, response);
23 }
24 }
在web.xml中配置完RequestLineServlet映射后,启动Tomcat服务器,在浏览器的地址栏中输入URL地址http://localhost:8080/chapter05/RequestLineServlet
访问RequestLineServlet,浏览器显示的结果如图1所示。
图1 运行结果
从图1中可以看出,浏览器显示出了请求RequestLineServlet时,发送的请求行信息。由此可见,通过HttpServletRequest对象可以很方便的获取到请求行的相关信息。