`
xuhuazhi
  • 浏览: 1213 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

WEB项目漫谈(二)--web.xml

 
阅读更多

下面的内容主要来自以下几个链接,和其他网络内容,只是略作总结,因为每个都很长,不可能看完,看完也不可能都记住,记下来,什么后都可以翻翻看看:

http://www.jb51.net/article/19141.htm

http://mianhuaman.iteye.com/blog/1105522

http://www.cnblogs.com/konbluesky/articles/1925295.html

http://blog.csdn.net/liaoxiaohua1981/article/details/6761053

 

web.xml是web项目的基础配置文件,struts,spring什么的都要先配在这里,然后起作用。里面的标签主要包括

1. context-param

2. filter

3. listener

4. servlet

其他还有 session-config,distributable,welcome-file-list,error-page等

 

web.xml的加载顺序是context-param->listener->filter->servlet

 

在web项目启动时,容器首先会创建一个ServletContext,这个ServletContext初始化被整个项目所共享。context-param中的内容会转变成键值对,然后传递给ServletContext。context-param大多是用来配置一些参数,如

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.properties</param-value>
    </context-param>

 

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

这些内容会在稍后初始化的listener中被调用。

 

listener,监听类,监听web应用中的事件。最常用的接口有两个:

javax.servlet.ServletContextListener
javax.servlet.http.HttpSessionListener 

从名字就可以看出来一个用来监听servlet,一个监听session。最常被举例的应用是统计网站的在线人数,只要实现了HttpSessionListener这个接口,就必须实现sessionCreate()和sessionDestoryed()这两个方法,那么在session被创建或销毁时就会调用这两个方法,以此来实现统计。另一个比较常见的是spring的ContextLoaderListener,这个类继承了ServletContextListener接口,在应用启动时,它可以读取前面context-param中配置的contextConfigLocation,然后读取xml文件中的内容。listener的配置相对简单,如下:   

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

 

filter,过滤器,对于web项目中的资源,如js,jsp等,都可以设计filter,当试图访问这些资源时会先调用相应的filter。定义一个filter类要实现javax.servlet.Filter接口,接口中有三个方法,inti(),destory(),doFilter(),在filter被创建时会调用inti(),当访问相应资源时,doFilter()方法会被调用,方法里有一个FilterChain类型的参数,顾名思义,这个参数用来实现多个filter的顺序调用。一个filter的配置分为两部分,首先定义这个filter,包括filter的name,对应的类,和类里面会用到的参数。然后定义这个filter对应的拦截资源。不难理解,filter的定义要写在filter-mapping的前面,对同一个资源,mapping的先后顺序决定filter的调用顺序:

    <filter>
        <filter-name>cachefilter</filter-name>
        <filter-class>
            com.opensymphony.oscache.web.filter.CacheFilter
        </filter-class>
        <init-param>
            <param-name>time</param-name>
            <param-value>60</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>CacheFilter</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>

 

servlet,在早前传统的WEB开发中,servlet应该是可以在web.xml中唱主角的,页端的get、post请求会到达定义好的servlet中,然后进行处理,再返回给页端。在这个WEB开发必用框架的年代,servlet应该是很少用了,也只能主体功能之外需要一些额外处理的时候会专门定义servlet。servlet的配置和filter大致相同,servlet有一个filter没有的标签是load-on-startup,它可以指定servlet的加载顺序,已经是否在项目启动时就加载。

 

除了上述几个主要的配置项外,还有一些小的配置项,比如<welcome-file-list>定义默认首页,<error-page>等,在开头的链接中都有很详尽的讲述。

分享到:
评论

相关推荐

    漫谈WebLogic-CVE-2020-25511

    漫谈WebLogic-CVE-2020-25511

    漫谈hp-BTO软件优化IT业务成果(ppt-51页).ppt

    * 完全基于Web的项目管理方式 * 双向集成MS Project, hp Service Center和其它系统连接战略性计划和自下而上的执行 * 执行标准和方法论的企业内部基线 * 通过drag and drop工作流引擎,简化工作流设计 * 提供先进的...

    03443 项目培训--咨询业与咨询师漫谈--咨询学会内部交流资料(PPT 21页).ppt

    《咨询业与咨询师漫谈》是一份关于咨询行业的内部交流资料,主要涵盖了咨询业的分类、代表性公司以及咨询师的素质与职业发展路径。在本文中,我们将深入探讨这些关键知识点。 首先,咨询业主要分为四类:信息咨询、...

    Java安全漫谈 - 07.反序列化篇(1)1

    Java安全领域中的反序列化漏洞是一个重要的议题,它涉及的是将对象从二进制数据恢复为程序可以理解的形式时可能存在的安全隐患。反序列化是序列化过程的逆向操作,序列化是将对象的状态转换为可存储或可传输的数据...

    软件工程思想漫谈--林锐

    ### 软件工程思想漫谈--林锐 #### 关键知识点提炼 ##### 1. 软件工程的历史背景与发展 - **60年代初期的软件开发**:早期的程序设计是由少数技术高超的人士进行的,他们的程序设计方式随意性强,缺乏统一的标准与...

    漫谈兼容内核[pdf]

    02.漫谈兼容内核之二:关于kernel-win32的对象管理.pdf 03.漫谈兼容内核之三:关于kernel-win32的文件操作.pdf 04.漫谈兼容内核之四:Kernel-win32的进程管理.pdf 05.漫谈兼容内核之五:Kernel-win32的系统调用机制....

    漫谈兼容内核.7z

    谈兼容内核之一:ReactOS怎样实现系统调用.pdf 漫谈兼容内核之二:关于kernel -win32的对象管理.pdf 漫谈兼容内核之三:关于kernel-win32的文件操作.pdf 漫谈兼容内核之四:Kernel-win32的进程管理.pdf 漫谈兼容内核...

    Java安全漫谈 - 04.RMI篇(1)1

    Java安全漫谈 - 04.RMI篇(1)1

    [NET 4.0面向对象编程漫谈 应用篇].金旭亮---高清版.pdf

    .NET 4.0面向对象编程漫谈应用篇是一本专注于.NET 4.0框架下进行面向对象编程技术的电子书籍。作者金旭亮将其专业见解和实践经验融入到这本书中,让读者在应用层面上深入理解面向对象编程(Object-Oriented ...

    Java安全漫谈 - 08.反序列化篇(2)1

    Java安全漫谈 - 08.反序列化篇(2)1

    王明夫:知行合一_内圣外王--王阳明漫谈.ppt

    王明夫:知行合一_内圣外王--王阳明漫谈.ppt

    漫谈兼容内核

    02.漫谈兼容内核之二:关于kernel-win32的对象管理.pdf 03.漫谈兼容内核之三:关于kernel-win32的文件操作.pdf 04.漫谈兼容内核之四:Kernel-win32的进程管理.pdf 05.漫谈兼容内核之五:Kernel-win32的系统调用...

    2022年漫谈hp-BTO软件优化IT业务成果(共50张PPT).pptx

    HP的项目需求标准化和组合管理方法,强调了自上而下和自下而上的计划执行,支持Web上的项目管理,并与MS Project、hp Service Center等系统无缝对接。通过拖放式工作流引擎,简化了流程设计,提高了审计能力。同时,...

    程序设计方法漫谈!--经典!

    对于初学者而言,常常误以为编写代码就是全部,结果导致在项目中花费大量时间调试和重构。书中指出,缺乏有效的程序设计方法是新手们遇到问题的主要原因。 程序设计的核心方法之一是“多思考”。在实际工作中,...

    Java安全漫谈 - 03.反射篇(3)1

    Java安全漫谈 - 反射篇(3)深入讲解了如何在Java中通过反射机制处理可变长参数和访问私有方法。反射是Java中一个强大的特性,它允许程序在运行时检查和操作类、接口、字段和方法,极大地增强了代码的灵活性。然而,这...

    Java安全漫谈 - 01.反射篇(1)1

    Java 反射机制安全漫谈 Java 反射机制是 Java 语言中的一种强大功能,允许程序在运行时访问和修改类的信息。然而,这种功能也引入了安全隐患。本文将讨论 Java 反射机制的安全问题,重点介绍反射机制的基本概念、...

    [NET 4.0面向对象编程漫谈 基础篇].金旭亮--高清版.pdf

    在.NET 4.0面向对象编程漫谈基础篇中,金旭亮详细介绍了.NET框架下的面向对象编程的基础知识和技巧。面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它使用“对象”来设计软件。对象可以包含数据...

    酒的漫谈-PowerPoint演示文稿.pptx

    酒的漫谈-PowerPoint演示文稿.pptx

    ATT&CK.红队战术漫谈.pdf

    ATT&CK.红队战术漫谈

Global site tag (gtag.js) - Google Analytics