一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程。web.xml主要用来配置Filter、Listener、Servlet等。但是web.xml并不是必须的,一个web工程可以没有web.xml文件。

1 web.xml工作过程

1 启动一个web项目时,容器(如tomcat)会去读web.xml,读取<listener>监听器和<context-param>两个结点

2 然后容器创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文

3 容器将<context-param></context-param>转换为键值对,并交给servletContext

4 容器创建<listener>中的类实例,创建监听器

5 在监听器中有contextInitialized(ServletContextEventargs)初始化方法,在这个方法中获得ServletContext=ServletContextEvent.getServletContext();context-param的值=ServletContext.getInitParameter("context-param的键")

6 得到这个context-param的值后,就可以做一些操作了,注意,这个时候web项目还没有完全启动成功,换句话说,这个时候对<context-param>中的键值得操作,将在web项目完全启动以前被执行

举例:可以在项目启动之前就打开数据库,那么就可以在<context-param>中设置数据库的连接方式,在监听类中初始化数据库的连接

2 常用配置详解

2.1 servlet-mapping

<servlet>
 	<servlet-name>DispatcherServlet</servlet-name>
 	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 	<init-param>
 		<param-name>contextConfigLocation</param-name>
 		<param-value>classpath:spring/SpringMVC.xml</param-value>
 	</init-param>
 		<!-- 配置springmvc什么时候启动,参数必须为整数 -->
		<!-- 如果为0或者大于0,则springMVC随着容器启动而启动 -->
		<!-- 如果小于0,则在第一次请求进来的时候启动 -->
		<load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
 	<servlet-name>DispatcherServlet</servlet-name>
 	<url-pattern>*.action</url-pattern>
 </servlet-mapping>

由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成

 <servlet>元素用于注册Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。

<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:<servlet-name>和<url-pattern>,分别用于指定Servlet的注册名称和Servlet的对外访问路径

2.2 init-param

<init-param>
 		<param-name>contextConfigLocation</param-name>
 		<param-value>classpath:spring/SpringMVC.xml</param-value>
 	</init-param>
 		<!-- 配置springmvc什么时候启动,参数必须为整数 -->
		<!-- 如果为0或者大于0,则springMVC随着容器启动而启动 -->
		<!-- 如果小于0,则在第一次请求进来的时候启动 -->
		<load-on-startup>1</load-on-startup>

web应用启动时,启动springmvc配置

如果WEB应用启动时就需要启动某个框架程序,那么可以把框架程序的启动代码放到一个Servlet的init方法中,并为这个Servlet配置</load-on-startup>。这样的话,当WEB应用启动时,框架也将随之启动。例如我们以后将要学习到的struts框架采用的就是这种启动方式。

2.3 filter过滤器

<!-- 配置过滤器,解决post的乱码问题 -->
	<filter>
		<filter-name>encoding</filter-name>	
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐