web.xml配置spring启动的两种方式

方式1:通过前端控制器直接扫描全部容器。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
	id="jt-manage" version="3.1">
	<display-name>ds-manage</display-name>
	
	<!-- 定义前端控制器 -->
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<!--扫描全部以applicationContext开通的配置文件  -->
			<param-value>classpath:/spring/applicationContext*.xml</param-value>
		</init-param>
	</servlet>
	
	<!--/表示拦截所有请求和静态资源 不拦截动态资源 -->
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	
	<!--定义POST乱码解决  -->
	<filter>
		<filter-name>characterEncoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<!--定义初始化参数  -->
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	
	<filter-mapping>
		<filter-name>characterEncoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<!--定义默认访问页  -->
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	
</web-app>

方式2:通过监听器的方式启动Spring容器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
	id="jt-manage" version="3.1">
	<display-name>ds-manage</display-name>
	
	<!--配置监听器启动spring容器  --> 
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:/spring/applicationContext*.xml</param-value>
	</context-param>
	
	<!--1.配置前端控制器  -->
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!--配置加载SpringMVC.xml  -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:/spring/springmvc.xml</param-value>
		</init-param>
	</servlet>
	
	<!--
		/ 规定
		1.表示拦截 全部的请求  
		2.拦截所有静态资源js/css/image 后面在mvc配置放行
	    3.放行.jsp资源
	-->
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	
	<!--配置全站乱码解决 POST乱码  -->
	<filter>
		<filter-name>characterEncoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<!--定义默认字符集utf-8  -->
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	
	<filter-mapping>
		<filter-name>characterEncoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

总结:

  • 第一种
    如果SpringMVC和Spring的配置文件都是通过前端控制器扫描则容器的启动是懒加载。只有浏览器发出请求之后,前端控制器才会启动Spring容器和SpringMVC容器。
    弊端:如果是大型项目,用户访问时,这时后台的容器才会启动,用户等待的时间较长。

  • 第二种
    通过监听器的方式启动Spring容器。当web容器(如:tomcat)启动时,监听器就会监听是否要启动Spring容器,如果监听器检测到需要Spring容器,则监听器就会在后台启动Spring容器。当用户通过浏览器访问时,首先将将请求发给SpringMVC通过Spring容器获取具体的对象直接完成业务调用,用户不需要等待容器启动。
    弊端:服务开启时时间加长(不影响用户体验,可忽略)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值