1.  Servlet程序必须映射到一个URL地址

由于客户端是通过URL访问web服务器资源,所以Servlet程序必须映射到一个URL地址。这个工作在web.xml文件中使用<servlet>元素和<servlet-maping>元素完成

<servlet>用于注册Servlet,<servlet-name>和<servlet-Class>分别用于设置Servlet的注册名称和完整类名

一个<servlet-maping>元素用于映射一个已经注册的Servlet的一个对外访问路径,子元素<servlet-name>和<url-pattern>分别指定Servlet的注册名称和对外访问路径

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet>
<servlet-name>ServletDemo</servlet-name>
<servlet-class>cn.school.ServletDemo</servlet-class>
</servlet>
<servlet>
<servlet-name>ServletDemo2</servlet-name>
<servlet-class>cn.school.ServletDemo2</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>ServletDemo</servlet-name>
<url-pattern>/ServletDemo</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ServletDemo2</servlet-name>
<url-pattern>/servlet/ServletDemo2</url-pattern>
</servlet-mapping> </web-app>

对于第一个程序,使用http://localhost:8080/D623/ServletDemo

对于第二个程序,  使用http://localhost:8080/D623/servlet/ServletDemo2

 

2. 同一个Servlet可以被映射到多个URL地址上去

  即是一个Servlet注册名可以对应多个<servlet-mapping>元素

也就是说可以有多个地址访问同一个Servlet程序

  <servlet>
<servlet-name>ServletDemo</servlet-name>
<servlet-class>cn.school.ServletDemo</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>ServletDemo</servlet-name>
<url-pattern>/my1/ServletDemo</url-pattern>
</servlet-mapping> <servlet-mapping>
<servlet-name>ServletDemo</servlet-name>
<url-pattern>/my2/ServletDemo</url-pattern>
</servlet-mapping> <servlet-mapping>
<servlet-name>ServletDemo</servlet-name>
<url-pattern>/my3.html</url-pattern>
</servlet-mapping>

注意最后一个访问地址是http://localhost:8080/D623/my3.html

在地址栏中出现这样的地址看起来好像是一个静态页面,其实Selvlet是动态页面,这就是常说的伪静态

3. Servlet映射地址可以使用* 通配符

但只有两种固定格式

*.扩展名 或者 以 /* 结尾

  <servlet>
<servlet-name>ServletDemo</servlet-name>
<servlet-class>cn.school.ServletDemo</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>ServletDemo</servlet-name>
<url-pattern>/ServletDemo</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ServletDemo</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping> <servlet-mapping>
<servlet-name>ServletDemo</servlet-name>
<url-pattern>*.dd</url-pattern>
</servlet-mapping>

  通配符的意思是可以输入任何字符

注意一点,当修改web.xml时,不需要重新生成web应用,web服务器会自动监测web.xml的改动

Tomcat服务器的conf文件夹下context.xml文件有一句

   <WatchedResource>WEB-INF/web.xml</WatchedResource>

4.  最先匹配最像的路径

如下映射关系

Servlet1 映射到 /abc/*

Servlet2 映射到 /*

Servlet3 映射到 /abc

Servlet4 映射到 *.do

当请求URL为 /abc/a.html 时,匹配Servlet1

当请求URL为 /abc 时,匹配Servlet3

当请求URL为/abc/a.do 时,匹配Servlet1 (*在前面的方式优先级最低

当请求URL为 /a.do 时 匹配Servlet2

Servlet的一些细节(1)的更多相关文章

  1. Servlet的一些细节问题

    Servlet的细节问题 1.一个已经注册的Servlet可以被多次映射即: <servlet> <!-- servlet的注册名 --> <servlet-name&g ...

  2. servlet中的细节

    Get方法有大小限制:1024个字符.这些信息使用 Query_String头传递,并通过Query_String环境变量访问.Post方法:请求体信息使用FromData头传递.读取所有表单参数:g ...

  3. Servlet的一些细节(2)

    1. Servlet的创建时间 Servlet是不能单独运行,调用它的叫做Servlet引擎,或者叫做web服务器 针对客户端的多长Servlet请求,通常情况下,服务器只会创建一个Servlet实例 ...

  4. [Java.Web] Servlet 的一些细节

    本文来自 传智播客视频PPT 1. 由于客户端是通过 URL 地址访问 web 服务器中的资源,所以 Servlet 程序若想被外界访问,必须把 servlet 程序映射到一个 URL 地址上,这个工 ...

  5. Servlet的一些细节

    由于客户端是通过URL地址访问web服务器的中的资源的,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet& ...

  6. 2016-2-1 Servlet细节

    Servlet的一些细节(韩顺平老师视频讲解)(1)由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序想要被外界访问,必须把servlet程序映射到一个URL地址上.这个工作在 ...

  7. JavaWeb -- Servlet运行过程 和 细节

    Servlet的运行过程 lServlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后: ①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象.如果是,则 ...

  8. Servlet映射细节

    Servlet的映射细节: 1):一个Servlet程序(Web组件),可以配置多个<url-pattern>,表示一个Servlet有多个资源名称. <servlet-mappin ...

  9. java web学习总结(五) -------------------servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

随机推荐

  1. OSX安装nginx和rtmp模块(rtmp直播服务器搭建)

    1.安装Homebrew,执行命令 1 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ma ...

  2. 【转】 CoreGraphics QuartzCore CGContextTranslateCTM 用法

    原文:http://blog.csdn.net/sqc3375177/article/details/25708447 CoreGraphics.h 一些常用旋转常量 #define M_E 2.71 ...

  3. ZendStudio快捷键

    Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前 ...

  4. php 备份和还原数据库

    ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $int ...

  5. Extjs4 关于Store的一些操作(转)

    1.关于加载和回调的问题 ExtJs的Store在加载时候一般是延迟加载的,这时候Grid就会先出现一片空白,等加载完成后才出现数据:因此,我们需要给它添加一个提示信息! 但是Store却没有wait ...

  6. C#应用程序获取项目路径的方法总结

    一.非Web程序   //基目录,由程序集冲突解决程序用来探测程序集 1.AppDomain.CurrentDomain.BaseDirectory     //当前工作目录的完全限定路径2.Envi ...

  7. 技术大牛面试 http://www.itmian4.com/forum.php?mod=viewthread&tid=3824

    不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛人,NOI金牌,开源社区名人,三年级开始写Basic...在跪拜之余我们不禁要想,和这些牛人比,作为绝大部分技 ...

  8. spoj SORTBIT - Sorted bit squence

    Let's consider the 32 bit representation of all integers i from m up to n inclusive (m ≤ i ≤ n; m × ...

  9. [BZOJ - 2463] [中山市选2009] 谁能赢呢?【“博弈论”】

    题目链接:BZOJ - 2463 题目分析 这道题的题解是,由于两人都采取最优策略,所以最后一定所有格子都会被走到.(Why..表示不懂..哪位神犇可以给我讲一下QAQ) Upd:半群的神犇告诉我,并 ...

  10. codeforces Minesweeper 1D

    题意:就是挖地雷,给你一个字符串,‘*’代表地雷,‘1’代表在它的周围有1个地雷,‘2’代表在左右都有个地雷,‘?’代表不确定是不是地雷,可以是1,2,*,问你最后有几种方式确定所有的的地雷. 思路: ...