java创建描述文件_java web项目的部署描述文件--web.xml

java学习记录(11)

java web项目的部署描述文件–web.xml

提纲

web.xml是什么

java web项目的启动过程

web.xml中的一些标签的含义

项目中的web.xml的解释

1 web.xml是什么

java web项目用部署描述文件来决定URLS与servlets的映射,哪些URLS需要进行验证等。这个部署描述文件是web.xml,它在java web项目打包war下面的WEB-INF目录下面,是java web项目中serverlet标准的一个部分。

2 java web项目的启动过程

web.xml有多项标签,在其加载的过程中顺序依次为:context-param >> listener >> fileter >> servlet​。(同类多个节点以出现顺序依次加载)

1. ​web.xml先读取context-param和listener这两种节点;

2. 然后容器创建一个ServletContext(上下文),应用于整个项目;

​3. 容器会将读取到的context-param转化为键值对并存入servletContext;

​4. 根据listener创建监听;

5. 容器会读取,根据指定的类路径来实例化过滤器;

6. 此时项目初始化完成;

7. 在发起第一次请求是,servlet节点才会被加载实例化。​

3 web.xml中的一些标签的含义

(1) XML文档有效性检查

不同的版本的web.xml文档书写有不同的格式。下面是3.1版本的部署描述符的书写格式。

(2)display-name

定义了web相应的名称,在把war文件放入到tomcat中在manager中就可以查看到对应的web名称。

sshTest

(3)context-param

1 context-param 定义了程序运行的上下文的一些参数,这里定义的是applicationContext.xml的文件路径。

contextConfigLocation

/WEB-INF/applicationContext*.xml

2 context-param值的获取,例如上例中的contextConfigLocation,可以在aciton中通过ServletActionContext来获取相关的参数。

String param_name=ServletActionContext.getServletContext().getInitParameter("contextConfigLocation");

System.out.println(param_name);

3 context-param的使用

什么情况下使用,为什么使用context-param:

比如:定义一个管理员email地址用来从程序发送错误,或者与你整个应用程序有关的其他设置。使用自己定义的设置文件需要额外的代码和管理;直接在你的程序中使用硬编码(Hard-coding)参数值会给你之后修改程序带来麻烦,更困难的是,要根据不同的部署使用不同的设置;通过这种办法,可以让其他开发人员更容易找到相关的参数,因为它是一个用于设置这种参数的标准位置。

4 spring的配置

配置Spring,必须需要listener,而context-param>可有可无,如果在web.xml中不写context-param>配置信息,默认的路径是/WEB-INF/applicationContext.xml,在WEB-INF目录下创建的xml文件的名称必须是applicationContext.xml。如果是要自定义文件名可以在web.xml里加入contextConfigLocation这个context参数:在param-value>里指定相应的xml文件名,如果有多个xml文件,可以写在一起并以“,”号分隔,比如在business-client工程中,我们采用了自定义配置方式,context-param配置如下:

contextConfigLocation

/WEB-INF/applicationContext*.xml

org.springframework.web.context.ContextLoaderListener

(4)listener

listener 为web应用程序定义监听器,监听器用来监听各种事件,比如:application和session事件,所有的监听器按照相同的方式定义,功能取决去它们各自实现的接口,常用的Web事件接口有如下几个:

1) ServletContextListener:用于监听Web应用的启动和关闭;

2) ServletContextAttributeListener:用于监听ServletContext范围(application)内属性的改变;

3) ServletRequestListener:用于监听用户的请求;

ServletRequestAttributeListener:用于监听ServletRequest范围(request)内属性的改变;

4) HttpSessionListener:用于监听用户session的开始和结束;

5) HttpSessionAttributeListener:用于监听HttpSession范围(session)内属性的改变。

listener主要用于监听Web应用事件,其中有两个比较重要的WEB应用事件:应用的启动和停止(starting up or shutting down)和Session的创建和失效(created or destroyed)。应用启动事件发生在应用第一次被Servlet容器装载和启动的时候;停止事件发生在Web应用停止的时候。Session创建事件发生在每次一个新的session创建的时候,类似地Session失效事件发生在每次一个Session失效的时候。为了使用这些Web应用事件做些有用的事情,我们必须创建和使用一些特殊的“监听类”。它们是实现了以下两个接口中任何一个接口的简单java类:javax.servlet.ServletContextListener或javax.servlet.http.HttpSessionListener,如果想让你的类监听应用的启动和停止事件,你就得实现ServletContextListener接口;想让你的类去监听Session的创建和失效事件,那你就得实现HttpSessionListener接口。

org.springframework.web.context.ContextLoaderListener

(5)filter

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

/*

(6)welcome-file-list

初始页,包含多个以此尝试

/index.html

参考链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值