java项目web.xml_java : maven web项目中的 web.xml

一直以来都是拷贝别人的代码,虽然说能够正常使用,但是说不出个原由,跟不会有啥区别呢? O(∩_∩)O不管记录的学习点难不难,都是进步的表现哦!既然有空闲时间,那就来总结点东西吧!

熟悉一个web项目,还得从web.xml入手。

web.xml 的加载顺序是:ServletContext -> context-param -> listener -> filter -> servlet ,而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。(这一句也忘记是从哪个笔者那里学来的)先来说说web.xml中的标签吧!

一、指定欢迎页 (常用标签之一)

default.html

login.jsp

welcome-file-list : 工作原理,简而言之就是配置项目的访问页。如果没有配置上面这一段代码或者是项目中没有web.xml文件,默认会将index.html作为欢迎页,如果index.html也找不到,tomcat会将找到的index.jsp作为欢迎页返回,如果上面这些都没有,就会提示  The requested resource (/XXX) is not available。  ~\(≧▽≦)/偶就遇到过这个问题,现在又学习了解下,相信下次就能很快解决问题,不重复犯错!

二、错误页面(常用标签之一)

8123e386bc0e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

在配置错误页面的时候,location的值如果没有 / 符号,就会提示错误信息:Multiple annotations found at this line:

- cvc-complex-type.2.2: Element 'location' must have no element [children], and the value must  be valid.

- cvc-pattern-valid: Value 'error.jsp' is not facet-valid with respect to pattern '/.*' for type 'null'.

错误页面如果配置的是*.html,无需再配置其它,如果是*.jsp页面,如果在jsp页面需要把isErrorPage设置为true,即:;(刚编写验证的代码中,没有设置isErrorPage为true,好像也没报错,正常显示啦O(∩_∩)O)

三、 上下文配置(常用标签之一)

context-param: 声明应用范围(整个WEB项目)内的上下文初始化参数,是放在ServletContext中的。

1.启动一个web项目时,容器(如:tomcat)会去读取它的配置文件web.xml中的两个节点: 和

2.紧接着容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文

3.容器将  转化为键值对,并交给 ServletContext

4.容器创建 中的类实例,即创建监听

5.在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在这个方法中获得ServletContext = ServletContextEvent.getServletContext();

context-param的值 = ServletContext.getInitParameter("context-param的键");

6.得到这个context-param的值之后,你就可以做一些操作了。注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早(这里验证了文章开始讲述的web.xml加载顺序)

下面是加载spring文件的配置 ,  和 一个自定义上下文参数的配置及servlet实现代码(用代码更好验证上面6点的描述O(∩_∩)O):

8123e386bc0e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

context-param 是给 Listener指定要加载的xml

8123e386bc0e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

O(∩_∩)O~ 上面很多也是从别的笔者那里学习的,百度context-params出来的结果都差不多,那就自己也记录一份,写个简单的例子验证下吧。只有自己经历过才会印象更深刻哦!

另外 区分下 ---- 存放servlet范围内的参数,只能在servlet的init()方法中取得,在web.xml中配置如下:

8123e386bc0e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

8123e386bc0e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

servlet范围内的参数获取

注意:load-on-startup : 标记容器是否在启动的时候就加载这个servlet; 当值为0或大于0时,表示容器在应用启动时就加载这个servlet;当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载;正数的值越小,启动该servlet的优先级越高。

四、filter过滤器配置

Filter 技术是servlet 2.3 新增加的功能,一个filter必须实现javax.servlet.Filter。

过滤器执行流程:servlet调用前截获→修改request头和数据→修改response头和数据→servlet调用后截获。

filter-class 中指定的过滤器类须继承javax.servlet.Filter 具有须有以下三种方法:

init(FilterConfig fc):初始化,读取配置文件中的iinit-param参数值,在WEB应用启动时调用

doFilter(...):用于对request,response进行处理,并能过chain.doFilter(...) 交过下一个控制器,访问filter-mapping映射到的url时调用

destroy():资源销毁

下面是字符集过滤器的配置使用例子:

8123e386bc0e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

8123e386bc0e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

8123e386bc0e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

上面是熟悉了解filter的使用,但是实际项目开发中这个可以交由spring管理,只需要web.xml配置下即可,spring字符集过滤器可以参考这个http://blog.csdn.net/gdufzxp/article/details/10077665  web.xml中filter更多详解可以参考:http://blog.csdn.net/ps101505138/article/details/24412005/上面的讲解都挺详细的,向大师们学习O(∩_∩)O

五、Servlet在web.xml中的配置

8123e386bc0e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

8123e386bc0e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

以上只是说明这几种标签在web.xml中的使用,不是很深入,就是说明如何使用O(∩_∩)O哈哈~   另外在送上几篇讲解比较详细的,供自己以后更深入的学习吧。                         web.xml配置详解:http://www.cnblogs.com/chinafine/archive/2010/09/02/1815980.html     http://www.cnblogs.com/morlin/p/4301063.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值