您的位置:首页 > 编程语言 > Java开发

跟着项目学javaweb(std):2(web.xml)

2016-03-08 17:38 330 查看

web.xml解析

我的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
<display-name>likessh Project</display-name>

<filter>
<filter-name>SSH</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>SSH</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>com.std.util.CreateFolder</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

</web-app>


下面根据我查的资料解析上面的xml文件:

启动后的工作:

1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取和两个结点。

2、紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文。

3、容器将转换为键值对,并交给servletContext。

4、容器创建中的类实例,创建监听器。

节点的加载顺序:

web.xml的节点加载与书写顺序完全无关,加载顺序为

ServletContext -> context-param -> listener -> filter -> servlet

但是同类型的节点调用和mapping的顺序有关,比如有多个filter,则根据filter-mapping的顺序加载filter。

xml文件的解析:

<?xml version="1.0" encoding="UTF-8"?>


声明该xml文件的版本号和编码。

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">[/code] 
xml文件的schema。

<display-name>likessh Project</display-name>


定义了web应用的名字。

<filter>
<filter-name>SSH</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>SSH</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


设置过滤器,可以过滤所有url。这里声明的是struts2过滤器。

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>com.std.util.CreateFolder</listener-class>
</listener>


配置了两个监听类。

第一个是启动spring的,配置后才能在启动时读取applicationContext.xml,从而初始化里面的bean。

第二个是我自己配置的监听类,用于在启动和终止web应用时执行一些代码,我这里为了启动服务器时自动创建几个文件夹,有调理的存放项目上传的文件。

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>


配置欢迎页面,在地址栏中,“8080:项目名”时默认打开的页面,可配置多个。

web.xml拓展补充

命名与定制URL。我们可以为Servlet和JSP文件命名并定制URL,其中定制URL是依赖一命名的,命名必须在定制URL前。下面拿serlet来举例:

为Servlet命名:

<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>net.test.TestServlet</servlet-class>
</servlet>


为Servlet定制URL、

<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>


定制初始化参数:可以定制servlet、JSP、Context的初始化参数,然后可以再servlet、JSP、Context中获取这些参数值。下面拿servlet来举例:

<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>net.test.TestServlet</servlet-class>
<init-param>
<param-name>userName</param-name>
<param-value>Tommy</param-value>
</init-param>
<init-param>
<param-name>E-mail</param-name>
<param-value>Tommy@163.com</param-value>
</init-param>
</servlet>


经过上面的配置,在servlet中能够调用

getServletConfig().getInitParameter(“param1”)

获得参数名对应的值。

指定错误处理页面,可以通过“异常类型”或“错误码”来指定错误处理页面。

<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception<exception-type>
<location>/exception.jsp<location>
</error-page>


设置会话(Session)过期时间,其中时间以分钟为单位,假如设置60分钟超时:

<session-config>
<session-timeout>60</session-timeout>
</session-config>


Web 应用描述: 给出于此相关的说明性文本

<disciption>Tomcat Example servlets and JSP pages.</disciption>
<context-param>
<param-name>ContextParameter</para-name>
<param-value>test</param-value>
<description>It is a test parameter.</description>
</context-param>


在servlet里面可以通过

getServletContext().getInitParameter(“context/param”)得到
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: