1.request获取请求路径方法介绍
request对象中包含的是请求信息,当我们在浏览器地址栏上输入:
http://localhost:8080/Example/AServlet?username=zhangsan,这段地址也会作为请求信息封装在request对象中,request对象必然会提供相关的方法来获取这些请求信息,这些信息其实就是请求路径信息。
request对象通过以下方法来获取请求路径,如下所示:
- String getServerName():获取服务器名,localhost;
- String getServerPort():获取服务器端口号,8080;
- String getContextPath():获取项目名,/Example;
- String getServletPath():获取Servlet路径,/AServlet;
- String getQueryString():获取参数部分,即问号后面的部分:username=zhangsan
- String getRequestURI():获取请求URI,等于项目名+Servlet路径:/Example/AServlet
- String getRequestURL():获取请求URL,等于不包含参数的整个请求路径:http://localhost:8080/Example/AServlet 。
下面通过一张图来了解request对象调用哪些方法获取请求路径,如图1-1所示:
2.request获取请求路径练习
通过上面对request获取请求路径的方法介绍,为了更好的掌握这些方法,下面通过一个案例演示各个方法的执行效果,如下所示:
(1)创建一个web应用,Example07,在该应用下创建一个Servlet类,PathServlet,主要代码例1-1所示:
例1-1 PathServlet.java
public class PathServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* 通过request获取请求路径,并通过response对象,将获得的路径写回浏览器端
* */
response.getWriter().print(request.getScheme()+"</BR>");//获取协议
response.getWriter().print(request.getServerName()+"</BR>");//获取服务器名称
response.getWriter().print(request.getServerPort()+"</BR>");//获取协议端口号
response.getWriter().print(request.getContextPath()+"</BR>");//获取工程名称
response.getWriter().print(request.getServletPath()+"</BR>");//获取servlet路径
response.getWriter().print(request.getQueryString()+"</BR>");//获取参数
response.getWriter().print(request.getRequestURI()+"</BR>");//获取请求URI
response.getWriter().print(request.getRequestURL()+"</BR>");//获取请求URL
}
}
在例1-1中,使用response对象向浏览器端响应数据,每写一个路径便换行一次,在浏览器端的页面中换行需要使用html标签“</br>”。
(2)PathServlet在web.xml文件中,其访问路径的配置为:“/PathServlet”。
(3)将Example07发布到Tomcat服务器端,然后启动服务器,在浏览器地址栏上输入:http://localhost:8080/Example07/PathServlet?username=zhangsan&password=123,浏览器的显示结果如图1-2所示:
在图1-2中,我们依次获取的是协议名称、服务器名称、端口号、工程名称、Servlet访问路径、参数、URI及URL。在以后的开发中,我们要获取访问路径,最常用方法是request.getRequestURL()。
另外,还需要注意的是:我们在页面中使用的超链接、或者form表单,它们都有一个属性是用来表示要访问的路径,通常都是项目名称加上资源名称,现在学习了request获取请求路径的方法,以后在超链接和form表单中,项目名称都使用request.getContextPath()方法来代替。这样做的好处是防止以后项目名被更改后,需要将所有的超链接和表单访问路径都进行修改。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/253167.html