- 浏览: 149825 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
chen_zujun:
java Object生成实例的new和newInstance的区别? -
honey00125:
感谢楼主分享!
JQuery权威指南源代码整理下载 -
Jojay90:
真的不错, 谢谢此分享!
JQuery权威指南源代码整理下载 -
wjyuian:
感谢楼主,好资料,,下了看看
JQuery权威指南源代码整理下载 -
toefllitong:
感谢楼主的分享,支持越来越多的人分享
JQuery权威指南源代码整理下载
web.xml加载顺序
应用服务器启动时web.xml加载过程,至于这些节点在xml文件中的前后顺序没有关系,不过有些应用服务器,我曾碰到过的 websphere就严格要求web.xml的节点顺序,否则部署不成功,所以还是赞成按照web.xml标准格式写
content-param --> listener --> filter --> servlet
1、启动WEB项目的时候,应用服务器会去读它的配置文件web.xml.读两个节点:<listener></listener> 和 <context-param></context-param>
2、紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.
3、容器将<context-param></context-param>转化为键值对,并交给ServletContext.
4、容器创建<listener></listener>中的类实例,即创建监听.
5、在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在这个方法中获得:
ServletContext = ServletContextEvent.getServletContext();
context-param的值 = ServletContext.getInitParameter("context-param的键");
6、得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早.换句话说,这个时候,你对<context-param>中的键值做的操作,将在你的WEB项目完全启动之前被执行.如果想在项目启动之前就打开数据库,那么这里就可以在<context-param>中设置数据库的连接方式,在监听类中初始化数据库的连接,这个监听是自己写的一个类,除了初始化方法,它还有销毁方法.用于关闭应用前释放资源.比如说数据库连接的关闭.
对于某类配置节而言,与它们出现的顺序是有关的。
以 filter 为例,web.xml 中当然可以定义多个 filter,与 filter 相关的一个配置节是 filter-mapping,这里一定要注意,对于拥有相同 filter-name 的 filter 和 filter-mapping 配置节而言,filter-mapping 必须出现在 filter 之后,否则当解析到 filter-mapping 时,它所对应的 filter-name 还未定义。
web 容器启动时初始化每个 filter 时,是按照 filter 配置节出现的顺序来初始化的,当请求资源匹配多个 filter-mapping 时,filter 拦截资源是按照 filter-mapping 配置节出现的顺序来依次调用 doFilter() 方法的。
servlet 同 filter 类似,此处不再赘述。
比如filter 需要用到 bean ,但加载顺序是: 先加载filter 后加载spring,则filter中初始化操作中的bean为null;所以,如果过滤器中要使用到 bean,可以将spring 的加载 改成 Listener的方式
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
web.xml节点解析
根节点
1、 <web-app></web-app>
常用节点介绍
2、 <context-param /> 用来设定web站台的环境参数
它包含两个子元素:
<param-name></param-name> 用来指定参数的名称
<param-value></param-value> 用来设定参数值
在此设定的参数,可以在servlet中用 getServletContext().getInitParameter("my_param") 来取得
例子:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath*:/log4j.properties</param-value>
</context-param>
3、 <listener /> 用来设定Listener接口
它的主要子元素为
<listener-class></listener-class> 定义Listener的类名称
例子:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
4、 <filter /> 是用来声明filter的相关设定
<filter-name></filter-name> 这当然就是指定filter的名字
<filter-class></filter-class> 这是用来定义filter的类的名称
<init-param></init-param> 用来定义参数,它有两个子元素:
<param-name></param-name> 用来指定参数的名称
<param-value></param-value> 用来设定参数值
例子:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
5、 <servlet /> 用来声明一个servlet的数据,主要有以下子元素:
<servlet-name></servlet-name> 指定servlet的名称
<servlet-class></servlet-class> 指定servlet的类名称
<jsp-file></jsp-file> 指定web站台中的某个JSP网页的完整路径
<init-param></init-param> 用来定义参数,和前面的<init-param>差不多
同样,与<servlet></servlet>一起使用的是
<servlet-mapping></servlet-mapping> 用来定义servlet所对应的URL,包含两个子元素:
<servlet-name></servlet-name> 指定servlet的名称
<url-pattern></url-pattern> 指定servlet所对应的URL
<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>
基本节点:
6、 <description/> 是对站台的描述
例子:<description>传道、授业、解惑</description>
7、 <display-name/> 定义站台的名称
例子:<display-name>我的站点</display-name>
8、 <icon>
icon元素包含small-icon和large-icon两个子元素.用来指定web站台中小图标和大图标的路径.
<small-icon>/路径/smallicon.gif</small-icon>
small-icon元素应指向web站台中某个小图标的路径,大小为16 X 16 pixel,但是图象文件必须为GIF或JPEG格式,扩展名必须为:.gif或.jpg.
<large-icon>/路径/largeicon-jpg</large-icon>
large-icon元素应指向web站台中某个大图表路径,大小为32 X 32 pixel,但是图象文件必须为GIF或JPEG的格式,扩展名必须为; gif或jpg.
例子:
<icon>
<small-icon>/images/small.gif</small-icon>
<large-icon>/images/large.gir</large-icon>
</icon>
9、 <distributable/> 是指定该站台是否可分布式处理
10、 <session-config/> 用来定义web站台中的session参数
包含一个子元素:
<session-timeout></session-timeout> 用来定义这个web站台所有session的有效期限,单位为 分钟
11、 <mime-mapping /> 定义某一个扩展名和某一个MIME Type做对应该
包含两个子元素:
<extension></extension> 扩展名的名称
<mime-type></mime-type> MIME格式
例子:
<mime-mapping>
<extension>doc</extension>
<mime-type>application/vnd.ms-word</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xls</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
12、 <error-page>
<error-page>
<error-code>500</error-code>
<location>/message.jsp</location>
</error-page>
<error-page>
<error-code>400</error-code>
<location>/message.jsp</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/message.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/message.jsp</location>
</error-page>
<error-page>
<error-code>502</error-code>
<location>/index.jsp</location>
</error-page>
13、 <jsp-config/>
<jsp-config>
<taglib>
<taglib-uri>/struts-tags</taglib-uri>
<taglib-location>/WEB-INF/struts-tags.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/struts-dojo-tags</taglib-uri>
<taglib-location>/WEB-INF/struts-dojo-tags.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/s</taglib-uri>
<taglib-location>/WEB-INF/struts-tags.tld</taglib-location>
</taglib>
</jsp-config>
14、 <welcome-file-list/>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
15、 <resource-ref></resource-ref> 定义利用JNDI取得站台可利用的资源
有五个子元素:
<description></description> 资源说明
<rec-ref-name></rec-ref-name> 资源名称
<res-type></res-type> 资源种类
<res-auth></res-auth> 资源经由Application或Container来许可
<res-sharing-scope></res-sharing-scope> 资源是否可以共享,有Shareable和Unshareable两个值,默认为Shareable
比如,配置数据库连接池就可在此配置
<resource-ref>
<description>JNDI JDBC DataSource of shop</description>
<res-ref-name>jdbc/sample_db</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
还有其他元素如果想更为详细的了解它可以到http://java.sun.com/xml/ns/j2ee/web-mapp_2_4.xsd网页
发表评论
-
Struts2 action中获取web.xml中的context-param以及获取request, response对象的方法
2012-06-28 19:15 3542web.xml中的context-param参数:<co ... -
Annotation-java注解
2012-03-29 17:21 1065Java中提供3个内置注释类型 a. Overr ... -
memcache基础知识-stats参数
2012-03-22 23:53 7210安装memcache: #tar -xvf libe ... -
Log4j扩展的一个按天滚动的appender类,同时支持动态日志
2012-03-22 23:43 2289扩展的一个按天滚动的appender类 暂时不支持datePa ... -
log4j 配置说明
2012-03-01 17:03 1474Log4J 基本使用方法 l ... -
linux命令分析日志
2012-01-05 00:35 1880cat 命令是 concatenate(连锁)的简写,意思是合 ... -
weblogic部署应用碰到的问题
2011-09-21 23:55 14243java.io.IOException: invalid he ... -
Apache2.2.8 + svn-1.4.6安装配置实录
2008-06-18 09:40 1052Apache2.2.8 + svn-1.4.6安装 ... -
JSP下动态INCLUDE与静态INCLUDE的区别,Forward和Redirect的区别分析
2008-11-03 23:02 1484动态INCLUDE与静态INCLUDE的区别 动态inc ... -
关于switch case 语句的总结!
2008-11-12 18:03 1270最近面试过程中遇到一道试题: public class Te ... -
public ,private ,protected 及不写时的区别? final、finally和finalize的区别是什么?
2008-11-18 14:58 1045一、java 作用域public , ... -
文件夹映射到文件夹 文件夹映射到盘符
2009-03-12 16:54 2187今天工作中遇到一个问题需要将一个目录 D:\improve\w ... -
web.xml中参数的问题:context-param和init-param的区别
2011-02-28 11:28 832web.xml里面可以定义两种参数: (1)applicat ... -
VMware-redhat server5网络配置实现网络连接详解
2011-02-22 14:08 2390网络配置详解一:三种 ... -
Java集合的Stack、Queue、Map的遍历
2010-11-11 17:45 1500import java.util.HashMap; impo ... -
Java中的容器讲解
2010-11-11 17:42 1238线性表,链表,集合,哈希表是常用的数据结构,在进行Java开发 ... -
Map--读"找出数组中重复次数最多的元素并打印"有感Map的使用
2010-10-09 11:51 3835目的:了解Map的containsKey的是用以及Map的遍历 ... -
Web应用中request获取各种获取path或URI,URL的方法
2010-08-19 17:25 6792Web应用中有各种获取path或URI,URL的方法,假设网页 ... -
Jboss应用服务器问题收集!
2010-07-22 15:22 2776问题1:Jsp exception,错误代码:Unable t ... -
apache配置虚拟主机
2010-03-26 11:34 788Apache配置虚拟主机 Alias /jquery &qu ...
相关推荐
DWR有个专门用于解析上面配置语句的解析器,虽然上面的是JDK5中才有的特性,因为有解析器的原因这也可以应用与JDK5之前的版本. 解析规则是不可见的,但有两种例外情况. 一种情况是因为DWR1.0的解析器中有个Bug,在有些...
从Web服务中把XML译码成为强类型对象 第二十章与浏览器通信(628) 20.1节连接到外部URL 20.2节使用FlashVars 20.3节在Flex里面调用JavaScript函数方法 20.4节在JavaScript中调用ActionScript方法函数 20.5节经由...
使用microsoft.web.ui.webcontrols的TabStrip与IFame组件,达到页的切换效果 HttpModule 实现 ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web...
12.6 从XML DOM节点的子树中删除仅有空白符的文本节点 451 12.7 解析Microsoft Excel的XML 452 12.8 验证XML文档 454 12.9 过滤属于指定命名空间的元素和属性 455 12.10 用SAX合并连续的文本事件 458 12.11 ...
8.8 异步加载并解析XML文件 8.9 动态加载HTML内容到标签页中 8.10 使用AJAX刷新异步提交表单 8.11 使用AJAX刷新上传图片 8.12 使用AJAX刷新验证PHP会话是否有效 8.13 在AJAX异步调用时显示加载指示器 8.14 在AJAX...
03 DOM节点的增删改查与属性设值 04 正反选练习 05 js练习之二级联动 06 jquery以及jquery对象介绍 07 jquery选择器 08 jquery的查找筛选器 09 jquery练习之左侧菜单 第44章 01 jquery属性操作之html,text,val方法...
C#编程经验技巧宝典源代码,目录如下: 第1章 开发环境 1 <br>1.1 Visual Studio开发环境安装与配置 2 <br>0001 安装Visual Studio 2005开发环境须知 2 <br>0002 配置合适的Visual Studio 2005...