`

Servlet映射地址配置

 
阅读更多
  Servlet在编写完毕后,必须先在web.xml中配置才能访问。在配置时,需要指定一个Servlet的访问地址。Servlet映射地址不是随便 怎么写都可以,必须要遵从一定的规则,这个规则在Servlet的规范中有详细的说明。按照Servlet规范的要求,Servlet映射地址形式只能有 四种,即:

  第一种、以“/”开头,以“/*”结束的地址,这种地址映射称为路径映射。这种映射中使用了通配符,代表访问这个目录下的任意一个地址都将调用这个Servlet。比如,一个Servlet映射的地址是“/admin/*”,那么当访问/admin这个目录下的任意一个地址,都会映射到这个Servlet上,除非这个地址已经明确地映射到其它的Servlet上了。也即,当另外一个Servlet映射的地址是 “/admin/listUser”,那么当访问这个地址时,请求还是会被映射到这人Servlet上。

  第二种、以“*.”开头的地 址,这种地址映射称为扩展名映射。这也是一种模糊映射,代表访问相同扩展名的地址时,都会映射到这个Servlet上。这种地址映射在Struts中就得 到了应用,即所有访问以.do结束的地址时,都会映射到ActionServlet上。但不能将第一种与第二种地址映射形式结合起来用,即如果写成 “/admin/*.do”,这就错了。没有原因,因为这是规范。

  第三种、只有一个“/”的地址映射,这种地址映射称为默认映射。也就是说,如果用户访问了一个地址,这个地址没有明确地在web.xml中映射,也不满足以上两种形式的模糊映射,这个时候就访问“/”映射的 Servlet。这种地址映射,我们在实际开发中很少应用,但它对服务器来说是很重要的。以Tomcat为例,Tomcat实际上是一个纯粹的 Servlet容器,也就是说,只有Servlet才能在Tomcat上运行。但有可能会说,我们将HTML文件部署到Tomcat上也运行得很好啊。没 错,但真正运行的还是Servlet。什么意思呢?大家可以想一下,我们部署到服务器上所有的HTML文件,我们从来都不会到web.xml中去映射的, 根据我们刚刚讲到的,如果访问了没有映射的地址,服务器会访问“/”所对应的Servlet,而正是这个Servlet帮我们找到HTML文件,并把它写 到客户端的。也就是说,Tomcat预先定义了一个Servlet,并把它的地址映射为“/”。这样其它静态资源的访问实际上都是在访问这个 Servlet,而它的职责则是简单地找到这个文件,并把它们写到响应中去。

  第四种、明确的地址映射,这是我们最常用的一种地址映射形式。规范中没有对这种地址映射有特殊的要求,但在配置地址时,必须以“/”开头才可以,否则将报错。

  总结以上几种地址形式,我们可以了解到服务器在接收到一个地址请求后的处理流程。以一个用户访问http://www.java1995.com/class_intro/viewClassIntro.htm?id=1这个地址为例:

  第一步,服务器首先看/class_intro/viewClassIntro.htm这个地址有没有明确地映射,如果已经明确地映射了这个地址,则直接访问地址所对应的Servlet,处理请求生成响应。
第二步,如果没有明确映射这个地址,则看目录映射或扩展名映射中有没有满足这个地址的。也即有没有映射地址为“/class_intro/*”,或者 “*.htm”的Servlet,如果有一个满足就访问其所对应的Servlet。如果两个都满足,则访问目录映射所对应的Servlet。
第三步,如果也不满足模糊映射,则访问“/”所对应的Servlet。

  下面归纳了几种映射关系
  1./abc/* ------1
  2./* ------2
  3./abc ------3
  4.*.do ------4

注意:*.do的优先级最低
通过归纳的映射关系我们可以总结以下的一些行为
当请求URL为"/abc/a.html"时,"/abc/*"和"/*"都可以匹配这个URL 则Servlet引擎将调用1
当请求URL为"/abc"时,"/abc/*"和"/abc"都可以匹配这个URL 则Servlet引擎将调用3
当请求URL为"/abc/a.do"时,"/abc/*"和"/*.do"都可以匹配这个URL 则Servlet引擎将调用1
当请求URL为"/a.do"时,"/*"和"/*.do"都可以匹配这个URL 则Servlet引擎将调用2

分享到:
评论
3 楼 wangdongqiang 2014-07-02  
不错,
2 楼 wallimn 2014-05-24  
只写一个/,是只对根进行控制吧?
1 楼 yyanwhj0 2014-05-22  
学习了只写一个/是为了统一的进行控制是吗  还是考虑tomcat服务容器的原因呢
这么写的好处是什么呢

相关推荐

    Servlet的应用与配置

    Servlet 配置是指在 web.xml 文件中定义 Servlet 的配置信息,包括 Servlet 名称、映射 URL、初始化参数等。web.xml 文件是 Java Web 应用程序的标准配置文件,用于定义应用程序的结构和行为。 四、Servlet 生命...

    JavaWeb开发技术-实现Servlet虚拟路径的映射.pptx

    JavaWeb开发技术-实现Servlet虚拟路径的映射 ...实现Servlet虚拟路径的映射需要了解Servlet的多重映射、Servlet映射路径中使用通配符、缺省Servlet等概念,并遵循正确的步骤来配置Servlet的映射路径。

    servlet+mysql的jndi配置

    1. **添加Servlet映射和定义**:在`tomcat/conf/web.xml`文件中添加Servlet的映射和定义。 ```xml <servlet> <servlet-name>DataServiceServlet</servlet-name> <servlet-class>...

    Tomcat下Servlet的配置

    `web.xml`是应用的部署描述符,用于定义Servlet和它们的映射。 在`web.xml`中,你需要配置Servlet,例如: ```xml <servlet> <servlet-name>HelloWorldServlet</servlet-name> <servlet-class>...

    Tomcat Servlet配置文件

    - **作用**:此文件是所有Web应用程序的全局配置文件,用于配置Web应用级别的参数,比如Servlet映射、初始化参数等。 - **关键配置项**: - `<servlet>`:定义Servlet类及其初始化参数。 - `<servlet-mapping>`...

    Servlet虚拟路径映射配置详解

    Servlet 虚拟路径映射配置详解 Servlet 虚拟路径映射配置详解是指在 Servlet 中配置虚拟路径映射,以便客户端可以访问 Servlet。本文将详细介绍 Servlet 虚拟路径映射配置的详细信息。 1. 配置虚拟路径映射 在 ...

    Servlet的WEB工程配置文件说明

    - **`<servlet-mapping>`元素**用于将Servlet映射到特定的URL模式上,从而决定了Servlet处理哪些客户端请求。 - 在实际开发中,开发者需要根据具体的应用需求来配置这些元素,以实现所需的功能。 通过以上解析,...

    servlet入门配置

    - `web.xml`文件中的`<servlet>`和`<servlet-mapping>`元素定义了Servlet的映射关系,比如: ```xml <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>...

    Tomcat服务器配置、启动分析、Servlet文件配置

    在启动过程中,Tomcat会检查并解析`webapps`目录下的所有应用,读取每个应用的`WEB-INF/web.xml`,配置Servlet和过滤器的映射,设置会话超时和其他运行时参数。了解启动流程有助于优化应用性能和排查问题。 Servlet...

    Java servlet过滤器配置详解

    接下来,我们转向`web.xml`文件的配置,这是部署描述符,用来定义Servlet和过滤器的映射关系。配置`EncodingFilter`通常包括以下步骤: 1. 定义过滤器: ```xml <filter-name>EncodingFilter <filter-class>...

    servlet-api.jar 下载地址

    例如,你可以通过以下配置将一个Servlet映射到URL路径: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> ...

    JSPservlet中web.xml详细配置指南(包含所有情况)

    JSP/Servlet 中 web.xml 详细配置指南 web.xml 是 Java Web 应用程序的核心配置文件,它定义了 Web 应用的结构和行为。在 JSP/Servlet 中,web.xml 扮演着关键角色,用于配置 Web 应用程序的各个方面。本文将对 web...

    Java Servlet的注解配置与生命周期详解.docx

    如上所述,配置包括`<servlet>`和`<servlet-mapping>`两个元素,前者定义Servlet的名字和全限定类名,后者将URL映射到Servlet。例如: ```xml <servlet> <servlet-name>demo1</servlet-name> <servlet-class>...

    Servlet_JSP配置入门

    - **配置Web.xml**:在应用目录下的`WEB-INF`文件夹中编辑`web.xml`,注册Servlet,并映射URL。 #### 五、JSP配置与使用 JSP文件可以直接放在Tomcat的`webapps`目录下对应的应用目录内。当Tomcat接收到对JSP页面的...

    Servlet-JSP配置入门

    在这里,你可以定义Servlet类、映射URL以及设置初始化参数。 - **<servlet>`元素**:用于声明Servlet,其中`servlet-name`是Servlet的名称,`servlet-class`指定Servlet的全限定类名。 - **<servlet-mapping>`元素...

    Servlet_ServletAnnotations_Servlet_JSP:Servlet API 3.0引入了一个名为javax.servlet.annotation的新程序包。 它提供了可用于对Servlet类进行注释的注释类型。 如果使用批注,则不需要部署描述符(web.xml)。 但是您应该使用tomcat7或任何更高版本的tomcat。 注释可以替换Web部署描述符文件(web.xml)中的等效XML配置,例如servlet声明和servlet映射。 Servlet容器将在部署时处理带注释的类

    Servlet_ServletAnnotations Servlet API 3.0引入了一个名为javax.servlet.... 注释可以替换Web部署描述符文件(web.xml)中的等效XML配置,例如servlet声明和servlet映射。 Servlet容器将在部署时处理带注释的类。

    基于Annotation的Servlet配置

    在这里,`@WebServlet("/myServlet")`告诉容器(如Tomcat)将名为"MyServlet"的Servlet映射到URL路径"/myServlet"上。 除了URL映射,`@WebServlet`还可以用于设置其他属性,比如Servlet的加载顺序、初始化参数等。...

    OSGI的servlet配置和简单实例

    2. 配置Servlet映射 在OSGI中,我们使用HTTP白板规范(HTTP Whiteboard Pattern)来处理HTTP请求。这意味着我们需要在服务注册时提供URL模式,这通常通过添加额外的属性来完成,例如`HttpContextMapper`。 ```java ...

    Servlet开发(tomcat配置)

    - 创建`WEB-INF/web.xml`,这是Web应用的部署描述符,它定义了Servlet和它们的映射关系。 6. **web.xml配置**: `web.xml`文件中,我们定义了一个Servlet,名为`helloServlet`,并指定了其全限定类名`...

    servlet配置.docx

    web.xml 是一个配置文件,用于配置 Servlet 的映射和其他设置。在这个文件中,可以配置 Servlet 的名称、类路径、映射的 URL 等。在上面的代码中,配置了一个名为 MyServlet 的 Servlet,其类路径为 ...

Global site tag (gtag.js) - Google Analytics