`

Servlet的Request中和用户请求路径相关的操作有多个(网络整理)

阅读更多

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

 

分享到:
评论

相关推荐

    servlet是如何同时处理多个请求的

    - 如果Servlet需要存储请求相关的数据,可以使用ThreadLocal变量,这样每个线程都有自己独立的数据副本,避免了线程间的数据冲突。 通过理解以上概念,开发者可以更好地编写高效且线程安全的Servlet,以适应高并发...

    servlet中实现请求转发,用户登录

    // 进行用户登录验证,假设有一个UserDAO用于数据库操作 User user = new UserDAO().checkLogin(username, password); if (user != null) { // 验证成功,进行请求转发到主页 RequestDispatcher dispatcher = ...

    Servlet中的相对路径和绝对路径归纳

    Servlet 中的相对路径和绝对路径归纳 在 Servlet 编程中,路径是非常重要的一个概念。路径可以分为相对路径和...相对路径和绝对路径都有其适用场景,了解它们的区别和使用场景可以帮助开发者更好地编写 Servlet 程序。

    使用Servlet技术响应用户请求

    服务阶段,每次有请求到达,Servlet容器会调用`service()`方法,根据请求类型决定执行`doGet()`或`doPost()`。终止阶段,当Servlet不再需要时,容器调用`destroy()`方法,释放Servlet占用的资源。 Servlet接口定义...

    servlet请求转发、重定向、包含

    Servlet请求转发、重定向和包含是Servlet中处理客户端请求的重要技术,它们都涉及到如何有效地管理用户请求和页面跳转,但各自有不同的特性和应用场景。 1. **请求转发(Request Forward)** - 请求转发是在服务器...

    过滤多个servlet

    "过滤多个Servlet"这个主题就涉及到如何在Web应用程序中设置过滤器(Filter)来拦截和处理多个目标Servlet的请求。 首先,让我们理解Servlet Filter的工作原理。Servlet Filter是一个实现了javax.servlet.Filter...

    练习servlet

    这是配置Servlet的重要部分,包括定义Servlet、映射URL路径、设置初始化参数等。例如,你可能会看到这样的配置: ```xml &lt;servlet&gt; &lt;servlet-name&gt;MyServlet&lt;/servlet-name&gt; &lt;servlet-class&gt;...

    使用servlet实现简单用户登录

    Servlet捕获这个请求,解析参数,然后进行下一步操作。 4. **数据库连接**: - 在实现登录功能时,通常需要与数据库交互,验证用户名和密码。这个项目中可能使用了JDBC(Java Database Connectivity)来连接到...

    JAVAEE中Servlet实例Response与Request对象方法调用范例

    本实例主要探讨Servlet中的两个关键对象:HttpServletRequest(Request)和HttpServletResponse(Response),它们是Servlet API的核心组成部分,用于处理HTTP请求和构建响应。 Request对象是用于获取客户端发送的...

    Java中Request请求转发详解

    Java中Request请求转发是指在Servlet中使用RequestDispatcher将请求转发到另一个Servlet或JSP页面,以实现请求的重定向或包含。在本文中,我们将通过示例代码详细介绍Java中Request请求转发的实现过程。 ...

    用Servlet获得界面中用户填写的信息

    在Java Web开发中,Servlet是一种Java编程语言编写的...这只是一个起点,实际的Web应用可能涉及到更复杂的用户认证、数据持久化、安全性等多个方面。学习并理解这些概念对于成为一名专业的Java Web开发者至关重要。

    Servlet实现多文件批量下载

    首先,我们需要创建一个Servlet来处理用户的下载请求。在Servlet中,我们需要处理GET或POST请求,根据请求参数获取需要下载的文件列表。这些文件路径可能存储在数据库或者服务器的某个目录下。确保文件路径的安全性...

    基于servlet的用户登录

    本项目"基于servlet的用户登录"是利用Servlet技术实现一个简单的用户登录功能,结合了JSP(JavaServer Pages)来展示界面,提供用户交互。这个教程将深入讲解如何使用Servlet进行用户身份验证。 首先,我们需要了解...

    Servlet_操作数据库

    在这个示例中,我们有两个Servlet:AddMessageServlet和getMessageServlet,分别对应数据的添加和查询操作。 1. **Servlet基础**: Servlet是Java Servlet API中的一个接口,它是服务器端的Java应用程序,用于扩展...

    jsp和servlet请求与响应

    ### JSP和Servlet请求与响应详解 #### 一、JSP内置对象概述 JSP(Java Server Pages)是一种用于创建动态网页的技术。它基于Java Servlet规范,并提供了许多内置对象,以便开发者可以更方便地处理HTTP请求和响应。...

    基于servlet 小型用户管理系统

    总的来说,基于Servlet的小型用户管理系统是一个涵盖Web开发多个方面的实践项目,包括前端交互、后端处理、数据库操作、安全性以及用户体验。通过这个项目,开发者可以提升对Servlet、JDBC、HTML/CSS/JavaScript、...

    Servlet request常用方法

    Servlet Request的常用方法,及基本语句

    纯Servlet实现用户管理系统(入门实例,深刻认识Servlet)

    7. **异常处理**:在处理用户请求时,Servlet可能会遇到各种异常,如网络问题、数据库错误等。我们需要适当地捕获和处理这些异常,确保系统稳定性,并向用户提供有用的反馈。 8. **会话管理**:对于用户登录状态的...

    servlet3异步请求

    要开始使用Servlet3的异步请求,首先你需要一个支持Servlet 3.0及以上版本的容器,如Tomcat 7+、Jetty 9+等。然后,你需要在`web.xml`配置文件或者通过Java注解声明一个支持异步的Servlet。使用`@AsyncSupported`...

    基于servlet的用户信息管理

    在这个"基于servlet的用户信息管理"项目中,我们主要关注的是如何使用Servlet来实现用户信息的增删改查操作,以及与前端JSP页面的交互。 首先,我们需要理解Servlet的基本工作流程。当用户通过浏览器发送HTTP请求到...

Global site tag (gtag.js) - Google Analytics