java web中web.xml详解

时间:2022-06-16 13:35:32
一,前言
每次想了解一下java web 项目的构造,总是看到web.xml 就偃旗息鼓了,每次想到此事,便在网络上随便找点资料,看的时候摇头晃脑,貌似明白了,过后却又一知半解,故在此在前辈们的基础上总结一番; 众所周知在java web 的项目中,有许多 xml文件 ,spring,hibernate,struts 等;当然我认为最为重要的要属于 web.xml,当然web.xml不是项目中所必须的;
(如果不应用任何框架 里面无任何比如servlet,filter,listener等配置 确实没问题 直接访问jsp)暂时从我学习到工作的经历过来看,几乎在所有的项目中都会有web.xml,可见其重要性;
 
二,web.xml在项目中的作用
我的理解:web.xml是项目在发布的时候,用来指引服务器如(tomcat):在建立容器,初始化配置文件,设置访问初始页面;
查询资料:web.xml文件是用来初始化配置信息:比如Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。
 
三,web.xml的加载顺序
应用服务服务器会根据自己的设置,来解析web.xml,所以在编写上面有没有特别的要求,但是据说有些有要求,所以我觉得在大致上面按照一般的步骤去编写就可以了,比如 先写<filter></filter>然后才是<filter-mapping></filter-mapping>;显示
<servlet></servlet>然后才是<servlet-mapping></servlet-mapping>,还是要遵循着一些基本的原则;
一般加载的步骤如下:
1,服务器(tomcat)先加载:<content-param></content-param>
ServletContext对象是在Web应用程序装载时初始化的,所以<content-param></content-param>可以在任意时候想上写文中写入键值对;
例:
<content-param>
      <param-name>name</param-name>
      <param-value>value</param-value>
</content-param>
由于是放置于上下文环境中,在程序直接可以用getServletContext().getInitParameter("name"),获取其中设置的值;
 
2,<listener></listener>
实现 HttpSessionListener, ServletContextListener, ServletContextAttributeListener接口,然后实现其中的方法;
作用;统计访问次数
例:
<listener>
      <listener-class><listener-class>
</listener>
 
3,<filter></filter>和<filter-mapping></filter-mapping>
功能:在用户访问的时候,通过拦截请求,统一编码,判断是否登陆;
例:
<filter>
    <filter-name>name</filter-name>
    <filter-class></filter-class>
   <init-param>
         <param-name>encoding</param-name>
         <param-value>utf-8</param-value>
   </init-param>
</filter>
<filter-mapping>
        <filter-name>SetFilter</filter-name>
         <url-pattern>/*</url-pattern>
</filter-mapping>
 
4,<servlet></servlet>和<servlet-mapping></servlet-mapping>
看到servlet应该就很眼熟,所以就不多做赘述了;
例:
 <servlet-name>DemoServlet</servlet-name>
  <servlet-class>com.test.DemoServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>DemoServlet</servlet-name>
  <url-pattern>/demoServlet</url-pattern>
 </servlet-mapping>
 
四:web.xml其他配置
一下节点在配置过程中,都比较简单,就不一一介绍了;
<description/> 
<dispaly-name</dispaly-name>
<icon>
<distributable/>
<session-config/>
<mime-mapping />
<error-page>
<jsp-config/>
<welcome-file-list/>
< resource-ref></resource-ref>
... ...
 
五:总结
<!ELEMENT web-app (icon?, display-name?, description?, distributable?, context-param*, filter*, filter-mapping*, listener*, servlet*, servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?, error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*, login-config?, security-role*,env-entry*, ejb-ref*, ejb-local-ref*)>
千里之行始于足下,看别人做100遍不如自己亲自写1遍。