Servlet的Request中和用户请求路径相关的操作有多个,下面一一列举:
1.getQueryString(),&之后GET方法的参数部分。
2.getServletPath(),web.xml中定义的Servlet访问路径。
3.getPathInfo(),Servlet访问路径之后,QueryString之前的中间部分。
4.getContextPath(),Context路径前缀(这个应该是最熟悉的啦)。
5.getRequestURI(),等于getContextPath() + getServletPath() + getPathInfo()。
6.getRequestURL(),等于getScheme() + "://" + getServerName() + ":" + getServerPort() + getRequestURI()。
7.getPathTranslated(),等于getServletContext().getRealPath("/") + getPathInfo()。
注意:
1.getServletContext().getRealPath("/") 后包含当前系统的文件夹分隔符(windows系统是"\",linux系统是"/"),而getPathInfo()以"/"开头。
windows 下面
E:\apache-tomcat-6.0.20\webapps\standardweb\
2.getPathInfo()与getPathTranslated()在servlet的url-pattern被设置为/*或/aa/*之类的pattern时才有值,其他时候都返回null。
3.在servlet的url-pattern被设置为*.xx之类的pattern时,getServletPath()返回的是getRequestURI()去掉前面ContextPath的剩余部分。
本篇文章来源于 Goldtimes.net 原文链接:http://www.goldtimes.net/teach/view/1124.htm
request对象中的方法是比较实用的,大家应该对它们都有所了解。下面我们通过一个TestServlet来讲解一下常用的方法。TestServlet源代码如下:
package coresun;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("<html><head><title>使用request中的方法</title></head><body><h2>");
out.println("request.getRequestURL()= "+request.getRequestURL()+"<br>");
out.println("request.getRequestURI()= "+request.getRequestURI()+"<br>");
out.println("request.getContextPath()= "+request.getContextPath()+"<br>");
out.println("request.getServletPath()= "+request.getServletPath()+"<br>");
out.println("request.getQueryString()= "+request.getQueryString()+"<br>");
out.println("request.getPathInfo()= "+request.getPathInfo()+"<br>");
out.println("request.getPathTranslated()= "+request.getPathTranslated());
out.println("<br>");
out.println("request.getProtocol()= "+request.getProtocol()+"<br>");
out.println("request.getMethod()= "+request.getMethod()+"<br>");
out.println("request.getScheme()= "+request.getScheme()+"<br>");
out.println("request.getRequestedSessionId()= "+request.getRequestedSessionId()+"<br>");
out.println("request.isRequestedSessionIdFromCookie()= "+request.isRequestedSessionIdFromCookie()+"<br>");
out.println("request.isRequestedSessionIdFromURL()= "+request.isRequestedSessionIdFromURL()+"<br>");
out.println("request.isRequestedSessionIdValid()= "+request.isRequestedSessionIdValid()+"<br>");
out.println("</h2></body></html>");
}
}
此Servlet在web.xml文件中的部署如下:(只有关键代码)
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>coresun.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
*.do表示只要是以.do结尾的地址,都可以访问此Servlet。然后在地址栏中输入如下网址:(假设服务器为本地,端口8080,Web根目录为FilterWeb)
http://localhost:8080/FilterWeb/update.do?userName=zhangsan&age=20
页面返回的结果如下:
request.getRequestURL() = http://localhost:8080/FilterWeb/update.do
request.getRequestURI() = /FilterWeb/update.do
request.getContextPath() = /FilterWeb
request.getServletPath() = /update.do
request.getQueryString() = userName=zhangsan&age=20
request.getPathInfo() = null
request.getPathTranslated() = null
request.getProtocol() = HTTP/1.1
request.getMethod() = GET
request.getScheme() = http
request.getRequestedSessionId() = 0D5219B7FF11D47EBE95B2E6A31076B5
request.isRequestedSessionIdFromCookie() = true
request.isRequestedSessionIdFromURL() = false
request.isRequestedSessionIdValid() = true
request.getAuthType() = null
这些方法的含义大家通过它的名字应该能够揣摩出来的。
下面更改servlet的url-pattern地址,如下:
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>coresun.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
以上表示只要是以/faces/开头的地址,此Servlet都可以访问
浏览器的地址栏中填入如下地址:
http://localhost:8080/FilterWeb/faces/update?userName=zhangsan&age=20
页面返回的结果如下:
request.getRequestURL() = http://localhost:8080/FilterWeb/faces/update
request.getRequestURI() = /FilterWeb/faces/update
request.getContextPath() = /FilterWeb
request.getServletPath() = /faces
request.getQueryString() = userName=zhangsan&age=20
request.getPathInfo() = /update
request.getPathTranslated() = D:\FilterProject\FilterWeb\update
request.getProtocol() = HTTP/1.1
request.getMethod() = GET
request.getScheme() = http
request.getRequestedSessionId() = 0D5219B7FF11D47EBE95B2E6A31076B5
request.isRequestedSessionIdFromCookie() = true
request.isRequestedSessionIdFromURL() = false
request.isRequestedSessionIdValid() = true
request.getAuthType() = null
分享到:
相关推荐
本包里的三个类是模拟了tomcat是如何多线程的使用同一个servlet的实例来同时使用service方法处理请求
servlet中实现请求转发,用户登录,在servlet中验证用户名和密码.
Servlet技术是Java Web开发中常用的一种技术,用于响应用户请求并生成动态内容。本文将介绍Servlet技术的基本原理以及使用方式。 首先,Servlet是一个Java类,它可以接收HTTP请求并且生成HTTP响应。当服务器接收到...
关于Servlet中的相对路径和绝对路径归纳.
Servlet Request的常用方法,及基本语句
servlet请求转发、请求重定向、请求包含 获取form数据
通过地址解析一张图说明浏览器和Tomcat服务器之间的通信关系。相关技术点有servlet、request、response、(XML小配置)等等。
然而,一个映射可能是由一个URL和许多Servlet实例组成,例如:一个分布式的Servlet引擎可能运行在不止一个的服务器中,这样的话,每一个服务器中都可能有一个Servlet实例,以平衡进程的载入。作为一个Servlet的...
JSP、Servlet中的相对路径和绝对路径(包括路径问题),解决繁琐的路径问题。
一个简单的servlet加jsp的程序,实现用户注册登陆,有完整代码加逻辑。可以实现数据库连接,比较简单。
主要介绍了Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法,结合实例形式详细分析了post数据发送及获取请求数据的原理与相关操作注意事项,需要的朋友可以参考下
我们老师教学演示的servlet例子 从简单到难文件夹有八个demo供初学者学习 servlet01 servlet02 servlet03 servlet04 servlet05 servlet06 servlet07 servlet08 servlet是在服务器上运行的小程序。这个词是在Java ...
一个servlet类处理多个请求(反射优化),简单易懂
NULL 博文链接:https://zengteng0204520quan.iteye.com/blog/974636
request是代表与 Web 客户机发出的一个请求相关的对象和属性。 一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)。 session是代表与用于某个 Web 客户机的一个用户体验...
jsp本质上是servlet,但是为了更加符合mvc的框架,将页面显示和逻辑控制分离,jsp页面只负责页面,也就是mvc中的V(view),而servlet负责mvc中的C(control)。
JavaWeb_servlet(11)_ 通过 ServletContex 获得类路径下的文件路径
演示了过滤器捕获客户端发送的request请求,并对request请求进行分析处理,从而让后台得到处理后的请求
Servlet+JSP+JavaBean(MVC)模式适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据。 Servlet+JSP、JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此...
如检查中有一个或多个未正确,给出提示信息并转去重新执行注册文件;所有注册信息正确则将请求转发给servlet程序reg.java; 3) servlet程序reg.java:将所有注册信息保存到注册数据库register中,然后转去执行...