0
点赞
收藏
分享

微信扫一扫

Web.xml详解

丹柯yx 2022-02-20 阅读 105
xmlweb.xml

Web.xml

简单介绍

当启动一个web项目时,容器(包括Tomcat)首先会读取项目web.xml配置文件中的配置。

加载过程

  1. 读取节点<context-param>以及<listener>

  2. 创建ServletContext,web项目的所有部分共享此上下文

  3. <context-param>中存储的键值对存入servletContext

  4. 创建<listener>中的类实例,创建监听

  5. 读取<filter>,根据指定的类路径来实例化过滤器

以上都是web项目还没有完全启动起来时就完成的工作,总的来说,web.xml的加载顺序是<context-param>-<listener>-<filter>-<servlet>

主要标签

context-param

内部有一堆参数名和参数值的存在,用作应用的servlet上下文初始化参数,参数名在整个web应用中必须是唯一的,在web应用的整个生命周期中上下文初始化参数都存在,任意的servlet和jsp都可以随时访问他。

访问:ServletContext application = ServletContextEvent.getServletContext()
获取context-param的值:String value = application.getInitParam("contxt-param的key")

在Spring中的运用

<!-- spring config -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-configuration/*.xml</param-value>
</context-param>
<listener>
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

通过定义contextConfigLocation通知解析xml的类spring配置文件的位置

listener

定义

<listener>为web应用定义监听器,用于监听各种事件。

常用的事件监听接口:

  1. ServletContextListener:用于监听web Application的启动和关闭
  2. ServletContextAttributeListener:用于监听ServletContext的范围内属性的改变
  3. ServletRequestListener:用于监听请求
  4. ServletRequestAttributeListener:用于监听ServletRequest范围内属性的改变
  5. HttpSessionListener:用于监听用于session的开始和结束
  6. HttpSessionAtrributeListener:用于监听session内属性的改变

主要用于监听Web应用事件,其中有两个比较重要的事件:Application的启动和停止、Session的创建和失效
他们是实现了以下两个接口中任何一个接口的java类:javax.servlet.ServletContextListenerjavax.servlet.http.HttpSessionListener

listener配置

配置listener只要向web应用注册listener实现类即可。

  • 使用@WebListener修饰Listener的实现类即可
  • 在web.xml中使用<listener>配置

filter

定义

filter被认作是servlet的“加强版”,主要用于对用户request进行预处理,也可以对Response进行后处理,是个典型的 处理链。使用Filter的完整流程是:Filter对用户请求进行预处理,接着请求HttpServletRequest交给Servlet进行处理并生成响应,最后Filter在对服务器响应的HttpServletResponse进行后处理,Filter也可以通过初始化参数,且获得Filter的初始化参数的方法则使用FilterConfig的getInitParamter()

Filter的实现

必须实现javax.servlet.Filter接口,他定义了三个方法:

  1. void init(FilterConfig filterConfig):用于Filter的创建

  2. void destory():用于filter销毁前,完成对某些资源的回收

  3. void doFilter(ServletRequet request,ServletResponse response,FilterChain chain):实现过滤功能的核心方法

Filter的配置

  • 在Filter类中使用Annotation进行配置
  • 在web.xml文件中通过配置文件进行配置

servlet

定义

Servlet通常被称为 服务端小程序。客户端通常只用Get和Post两种请求,Servlet为了响应这两种请求,必须重写doGet()和doPost()方法。大部分时候Servlet对所有请求的响应都是完全一样的,此时只需要重写service()方法即可响应客户端的所有请求。

serlvet配置

  • 在Servlet类中使用@WebServlet注解进行配置
  • 在web.xml文件中进行配置

用web.xml配置Servlet,需要配置<servlet><serlvet-mapping><servlet>用于声明一个Servlet。<init-param>元素与<context-param>元素的用法相同。访问Servlet配置参数通过ServletConfig对象来完成

serlvet-mapping

<servlet-mapping>含有<servlet-name><url-pattern>

  • <servlet-name>:Servlet的名字,唯一性和一致性,与<servlet>元素中声明的名字一致。
  • <url-pattern>:指定相对于Servlet的URL的路径。该路径相对于web应用程序上下文的根路径。<servlet-mapping>将URL模式映射到某个Servlet,即该Servlet处理的URL。
举报

相关推荐

0 条评论