J2ee入门:servlet-mapping的映射配置

<servlet-mapping>元素在Servlet和URL样式之间定义一个映射。它包含了两个子元素<servlet- name>和<url-pattern>

<servlet-name>元素给出的Servlet名字必须是 在<servlet>元素中声明过的Servlet的名字

<url-pattern>元素指定对应于Servlet的URL路 径,该路径是相对于Web应用程序上下文根的路径。

Servlet 2.5规范允许<servlet-mapping>的<url-pattern>子元素出现多次,之前的规范只允许一 个<servlet-mapping>元素包含一个<url-pattern>子元素。

例如:

<servlet-mapping>

<servlet-name>helloworld</servlet-name>

<url-pattern>/hello</url-pattern>

<url-pattern>/hello</url-pattern>

</servlet-mapping>

我们看下面的例子:

在配置了Servlet与URL样式之间的映射后,当Servlet容器接收到一个请求,它首先确定该请求应该由哪一个Web应用程序来响应。

这是通过比较请求URI的开始部分与Web应用程序的上下文路径来确定的。

映射到Servlet的路径是请求URI减去上下文的路径,Web应用程序的 Context对象在去掉请求URI的上下文路径后,将按照下面的路径映射规则的顺序对剩余部分的路径进行处理,并且在找到第一个成功的匹配后,不再进行 下一个匹配。

1、容器试着对请求的路径和Servlet映射的路径进行精确匹配,如果匹配成功,则调用这个Servlet来处理请求。

2、容器试着匹配最长的路径前缀,以斜杠(/)为路径分隔符,按照路径树逐级递减匹配,选择最长匹配的Servlet来处理请求。

3、如果请求的URL路径最后有扩展名,如.jsp,Servlet容器会试着匹配处理这个扩展名的Servlet。

如果按照前面3条规则没有找到匹配的Servlet,容器会调用Web应用程序默认的Servlet来对请求进行处理,如果没有定义默认的Servlet,容器将向客户端发送HTTP 404错误信息(请求资源不存在)。

在部署描述符中,可以使用下面的语法来定义映射。

以/开始并且以 /* 结束的字符串用来映射路径,例如:

<url-pattern>/admin/*</url-pattern>

以 *. 为前缀的字符串用来映射扩展名,例如:如果没有精确匹配,那么对/admin/路径下的资源的所有请求将由映射了上述URL样式的Servlet来处理。

<url-pattern>*.do</url-pattern>

以一个单独的/指示这个Web应用程序默认的Servlet,例如:如果没有精确匹配和路径匹配,那么对具有.do扩展名的资源的请求将由映射了上述URL样式的Servlet来处理。

<url-pattern>/</url-pattern>

所有其他的字符被用于精确匹配,例如:如果对某个请求没有找到匹配的Servlet,那么将使用Web应用程序的默认Servlet来处理。

<url-pattern>/login</url-pattern>

下面我们看几个请求映射的例子,如表3-2和表3-3所示。如果请求/login,那么将由映射了URL样式/login的Servlet来处理。

表3-2 Servlet映射

映射的 URL 对应的Servlet
/hello servlet1
/bbs/admin/* servlet2
/bbs/* servlet3
*.jsp servlet4
/ servlet5

表3-3 实际请求映射的结果

去掉上下文路径的剩余路径 处理请求的Servlet
/hello servlet1
/bbs/admin/login servlet2
/bbs/admin/index.jsp servlet2
/bbs/display servlet3
/bbs/index.jsp servlet3
/bbs servlet3
/index.jsp servler4
/hello/index.jsp servlet4
/hello/index.html servlet5
/news servlet5

Tomcat在%CATALINA_HOME%\conf\web.xml文件中配置了默认的Servlet,配置代码如下:

<servlet>
  <servlet-name>default</servlet-name>
  <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>0</param-value>
    </init-param>
    <init-param>
      <param-name>listings</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>default</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

%CATALINA_HOME%\conf\web.xml文件中的配置将被运行在同一个Tomcat实例中的所有Web应用程序所共享。

时间: 2024-10-24 15:59:44

J2ee入门:servlet-mapping的映射配置的相关文章

atitit. orm mapping cfg 映射配置(3)-------hbnt one2maney cfg

atitit. orm mapping cfg  映射配置(3)-------hbnt one2maney  cfg 1. 建立list 1 2. 配置xml 1 3. Hibernate中Set和List的配置 1 4. Bag(结合了List与Set), 2 1. 建立list /** * 集合属性只能以接口声明.例如在下面的代码中,schools的类型只能是List,不能是ArrayList,但该集合属性必须使用实现类完成初始化. */ public List list=new Array

j2ee之web.xml (Servlet 3.0)配置讲解

web.xml :是j2ee 项目最基本的配置文件,是服务器加载项目的入口,当然3.0开始也可以在代码中中配置项目所需要的一系列参数.在tomcat conf中存在web.xml,项目中的配置都会继承和覆盖该文件的配置. 基本配置:1.欢迎文件设置:  <welcome-file-list>  <welcome-file>index.html</welcome-file>  <welcome-file>index.htm</welcome-

elasticsearch中的mapping映射配置与查询典型案例

elasticsearch中的mapping映射配置示例比如要搭建个中文新闻信息的搜索引擎,新闻有"标题"."内容"."作者"."类型"."发布时间"这五个字段:我们要提供"标题和内容的检索"."排序"."高亮"."统计"."过滤"等一些基本功能.ES提供了smartcn的中文分词插件,测试的话建议使用IK分

Hibernate学习---第六节:数组&amp;list&amp;map&amp;set的映射配置

1.实体类,代码如下: package learn.hibernate.bean; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; /** * 持久化类设计 * 注意: * 持久化类通常建议要有一个持久化标识符(ID) * 持久化标识符通常建议使用封装类(例如:Integer 因为基本类型存在默认值) * 持久化类

Hibernate框架 主配置文件(Hibernate.cfg.xml) 映射配置 说明

Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties   <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hiber

J2EE之Servlet初见

Servlet是J2EE12种规范之中的一个.它也是用java语言编写的程序,其本身也是一种JAVA类,在须要的时候被实例化,不须要的时候自己主动销毁,Servlet的执行是在Servlet容器内执行,容器负责调度Servlet,同一时候也控制着它的生命周期.Servlet主要目的是被用来处理来自client上所发出的请求.然后将处理的结果用HTML页面的形式返回,形成动态网页展示给client. 生命周期 载入与实例化: 由Servlet容器负责.当容器检測到须要Servlet来响应第一个请求

j2ee规范——Servlet实例

之前学习j2ee的规范的时候学习过servlet(j2ee规范--Servlet),那是从宏观上了解了servlet,知道他是干什么用的?现在在项目中运用到了servlet,就是为了解决怎么用的问题.用一个实例去总结一下怎样运用. 在myeclipse中新建一个servlet程序,需要三个步骤.1.前台显示代码.2.继承HttpServlet.重写doGet或者doPost.3.在web.xml中注册servlet. 1.前台显示代码 <body> <h1>第一个servlet小例

Tomcat6.0下的jsp、servlet和javabean的配置

第一步:下载jdk和tomcat: 第二步:安装和配置你的jdk和tomcat:执行jdk和tomcat的安装程序,然后设置按照路径进行安装即可.1.安装jdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的jdk安装在C:\Program Files\Java): JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10 classpath=.;%JAVA_HOME%\lib\dt.jar;%

servlet虚拟路径映射

在web.xml文件中,一个<servlet-mapping>元素用于映射一个Servlet的对外访问路径,该路径也称为虚拟路径.例如<url-pattern>/TestServlet</url-pattern>,其中"/TestServlet"就是一个虚拟路径.创建的Servlet只有在web.xml中映射了虚拟路径,客户端才能访问.但是,在映射Servlet时,有一些细节问题需要注意,比如Servlet的多重映射,在映射路径中使用通配符等,接下来