Servlet路径映射配置
要使Servlet对象正常的运行,需要进行适当的配置,以告诉Web容器哪个请求调用哪个Servlet对象处理,对Servlet起到一个注册的作用。Servlet的配置信息包含在web.xml文件中,主要通过两步进行配置:

(1)声明Servlet对象
通过< servlet>标签声明一个Servlet对象,在此标签下包含两个主要子元素,为别为<
servlet-name>与< servlet-class>,其中<
servlet-name>用于指定Servlet的名称,该名称可以是自定义的名称,<
servlet-class>用于指定Servlet对象的完整位置,包含Servlet对象的包名和类名。
(2)映射Servlet

由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把Servlet程序映射到一个URL地址上,在web.xml文件中声明Servlet对象后,需要映射Servlet的URL。该操作是使用<
servlet-mapping>标签进行配置。< servlet-mapping>标签包含两个子元素,分别为<
servlet-name>与< url-pattern>。·,其中< servlet-name>元素与<
servlet>标签中的< servlet-name>元素相对应,不可以随意命名。< url-pattern>用于映射访问URL。

例如:

其中访问URL的相对路径为“/servlet/MyServlet”
(3)同一个Servlet可以被映射到多个URL上,即多个 <
servlet-mapping>元素的<
servlet-name>子元素的设置值可以是同一个Servlet的注册名,如下修改就为一个Servlet指定了两个url-pattern,通过这两个URL都可以访问同一个Servlet程序。

URL 配置格式

  1. 完全路径匹配 (以/开始 ) 例如:/hello、 /init
    (注意:如果没有“/”,会发生404,are you ok当前工程没有被正确发布,访问该工程所有静态资源、动态资源 发生404 —– 工程启动时出错了)

  2. 目录匹配 (以/开始) 例如:/* 、/abc/* (代表abc目录下的所有资源,即“/adc/hjhsdfkj”也可以访问)
    / 代表网站根目录

  3. 扩展名 (不能以/开始) 例如:* .do(即“dhjhs/dsajh/dsjkdn.do”,只要是以.do结尾的即可访问) 、* .action

    典型错误 /*.do

优先级:完全匹配>目录匹配 > 扩展名匹配

路径问题

相对路径:相对当前网页地址
绝对路径 解决相对路径,会根据当前地址改变问题。

Servlet接口

init方法
在Servlet的配置文件中,可以使用一个或者多个<
init-param>标签为servlet配置一些初始化参数。

ServletConfig

在Servlet程序中通过ServletConfig对象*(ServletConfig接口位于javax.servlet包中,它封装了Servlet的配置信息,在Servlet初始化期间被传递)
获得cast对应数据

ServletConfig对象定义了4个方法:

getInitParameter —— 通过name获得value

getInitParameterNames —– 获得所有name

思考 :如何在doGet 或 doPost 方法中 获得 Servlet初始化参数
将ServletConfig对象保存实例成员变量

GenericServlet 已经将ServletConfig 保存成员变量 —– 在子类中通过 getServletConfig方法 获得
初始化参数

结论:子类Servlet不需要覆盖 init(ServletConfig) , 只需要通过GenericServlet中
getServletConfig() 获得ServletConfig对象
因此,假如在doGet方法中获得Servlet初始化参数,可以:

应用:在init-param 指定配置文件位置和名称,配置Servlet随服务器启动创建 load-on-startup

ServletConfig 配置初始化数据,只能在配置Servlet获得(当前的),其它Servlet无法获得 —–
每个Servlet程序都对应一个ServletConfig对象,并且是独立的,不可以互相使用(其获得自己已配置的初始化参数)

ServletContext

  • WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,考雅思还是考托福它代表当前web应用。
  • ServletConfig对象维护了ServletContext对象的引用,在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
  • 一个WEB应用中的所有servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象

应用:
1、 获得整个web应用初始化参数
2、 实现全局数据共享(例如统计访问次数)
3、 实现服务器端转发功能
4、
读取web工程资源文件

1、获取WEB应用的初始化参数 和 ServletConfig 对象不同
* ServletConfig对象
配置参数,只对配置Servlet有效,如果配置参数,所有Servlet都可以访问 通过ServletContext,通过标签<
context-param>(注意:不同于初始化参数配置,标签不嵌套在< servlet>标签中)实现

ServletConfig与ServletContext的区别:

2、通过ServletContext 在多个Servlet间 共享数据
在ServletContext中
保存站点访问次数 ,每当一个用户访问站点,将访问次数+1
在CountServlet 初始化过程中,向ServletContext 保存访问次数 —-
0 ————–> ServletContext setAttribute

每次访问次数 +1 — 数据存放ServletContext中 —- 所有Servlet都可以获得该数据

在ServletContext中保存数据,所有Servlet都可以访问

3、通过ServletContext 完成服务器程序转发

什么是转发? 转发和重定向区别 ?

使用转发还是重定向? —- 转发性能好于重定向,请求次数少

4.缺省Servlet

  • 缺省Servlet 功能:处理其他Servlet都不处理请求
    tomcat/conf/web.xml
    org.apache.catalina.servlets.DefaultServlet 作为缺省Servlet
  • 当访问Tomcat服务器中的某个静态HTML文件和图片时,实际上是在访问这个缺省Servlet

最新文章

  1. Python-Jenkins API使用 —— 在后端代码中操控Jenkins
  2. MVC 5 中Filter控制 action的访问权限
  3. sorl入门
  4. ntko office在线编辑控件问题记录
  5. AbstractFactoryPattern(抽象工厂)
  6. [转]netty对http协议解析原理
  7. BZOJ4699 : 树上的最短路
  8. Access数据库参数没值
  9. 【转】C# Winform打包部署时添加注册表信息实现开机启动
  10. 记录一个 关于 python 普通方法,静态方法和类方法 的介绍。@classmethod @staticmethod
  11. UDP TCP应用场景
  12. 老李分享:性能测试你不应该只知道loadrunner(1)
  13. 【Android Developers Training】 68. 序言:添加动画
  14. Leetcode题解(四)
  15. luogu【P2753】[USACO4.3]字母游戏Letter Game
  16. 解决问题:CA_ERROR证书出错,请登录微信支付商户平台下载证书-企业付款到零钱接口(原创)
  17. [PA2014]Kuglarz
  18. php和js字符串的acsii码函数
  19. RxJava + Retrofit完成网络请求
  20. 渗透测试===使用BURPSUIT暴力破解某网站的手机验证码

热门文章

  1. python基础问题
  2. C++五十一篇 -- VS2017开发人员新闻无法联网
  3. 深入刨析tomcat 之---第12篇 how tomcat works( 第17章 ) 解析catalina.bat 梳理启动流程
  4. jvm源码解读--05 常量池 常量项的解析JVM_CONSTANT_Utf8
  5. ThinkPHP5 5.0.22/5.1.29 远程代码执行漏洞
  6. JBoss JMXInvokerServlet 反序列化漏洞
  7. 浅谈MySQL与mongodb的区别
  8. JIPB | 两篇连发:华中农大黄俊斌团队报道二羟基异丁酰化调控稻曲病菌致病新机制
  9. 中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(上)
  10. VGG Net 论文细读