学科分类
目录
Java Web

获取请求行信息的相关方法

当访问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对象可以很方便的获取到请求行的相关信息。

点击此处
隐藏目录