SpringMVC 配置

web.xml配置

  1. contextConfigLocation
    指定Spring Ioc容器需要读取的XML文件路径
  2. ContextLoaderListener   Spring监听器
    Spring MVC在Web容器中的启动类,读取applicationContext.xml
    负责Spring Ioc容器在Web上下文中的初始化
    ServletContextListener接口有两个方法:contextInitialized,contextDestroyed
  3. DispatcherServlet
    前端处理器,接受HTTP请求和转发请求的类
  4. CharacterEncodingFilter
    字符集过滤器
  5. IntrospectorCleanupListener
    放置Spring内存溢出的监听器
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
   xmlns="http://java.sun.com/xml/ns/javaee" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  	
	<!-- 项目名称 -->
	<display-name>springmvcTest</display-name>
	
	<!-- 配置SpringMVC前端控制器 --> 
	<servlet>
    	<servlet-name>spring</servlet-name>
  		<!--servlet-class中的值是spring-webmvc包提供的类,即前端控制器,用于控制所有请求 -->
      	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      	<!-- 设置springmvc-servlet.xml路径 -->
      	<!-- contextConfigLocation配置springmvc加载的指定配置文件路径 -->
      	<!-- 如果不指定,默认加载的是/WEB-INF/servlet名称-serlvet.xml -->
      	<init-param>
      		<param-name>contextConfigLocation</param-name>
      		<param-value>classpath:spring/springmvc.xml</param-value>
      	</init-param>
      	<!-- 设置启动顺序 -->
    	<load-on-startup>1</load-on-startup>
    </servlet>
    
	<!-- servlet映射关系配置 -->
    <servlet-mapping>
    	<servlet-name>spring</servlet-name>
    	<!--url-pattern(重点)中有3个值,分别为/、 /*、 *.action  -->
     	<url-pattern>/</url-pattern>
    </servlet-mapping>
    
    <!-- 配置字符编码过滤器 -->
	<filter>
   		<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
   		<url-pattern>/*</url-pattern>
    </filter-mapping>
     
</web-app>

关于指定路径的问题

默认配置:放在WEB-INF目录下,名称 xxx-servlet.xml,不需要配置<init-param>
指定路径:
<!-- 放在WEB-INF目录下,可以不使用 xxx-servlet.xml命名 -->
<param-value>/WEB-INF/springmvc.xml</param-value>
<!-- 放在WEB-INF/spring目录下 -->
<param-value>/WEB-INF/spring/springmvc.xml</param-value>
<!-- 放在src目录下 -->
<param-value>classpath:springmvc.xml</param-value>
<param-value>/WEB-INF/classes/springmvc.xml</param-value>
<!-- 放在src/spring目录下 -->
<param-value>classpath:spring/springmvc.xml</param-value>
<param-value>/WEB-INF/classes/spring/springmvc.xml</param-value>

注:
classpath: = /WEB-INF/classes/
classpath:springmvc.xml与classpath:/springmvc.xml,加不加/都一样
/WEB-INF/classes与WEB-INF/classes,加不加/都一样
指定路径的时候<servlet-name>spring 与<param-value>springmvc.xml名字可以不一样
默认路径的时候<servlet-name>xxx 必须要使用xxx-servlet.xml的前导名xxx作为名称

springmvc-servlet.xml配置


1 处理器适配器和处理器映射器

<!-- 单独配置处理器映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> 
 <!-- 单独配置处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> 

<!-- 配置注解驱动:可以自动加载处理器映射器和处理器适配器,因此可以代替上述单独配置处理器映射器和处理器适配器  -->
<mvc:annotation-driven />

2 视图解析器

视图解析器是为了当html,jsp等前端文件放到WEB-INF/的路径下时,浏览器不能直接访问,就需要使用视图解析器来访问相应的前端文件

<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<!-- 配置逻辑视图的前缀 -->
	<property name="prefix" value="/WEB-INF/jsp/" />
	<!-- 配置逻辑视图的后缀 -->
	<property name="suffix" value=".jsp" />
</bean> 

3 转换器(自定义参数绑定)

3.1 注解方式

转换器的id要与注解驱动中conversion-service属性内容一致

<!-- 配置注解驱动 (加上了转换器) -->
<mvc:annotation-driven conversion-service="conversionService" />
<!-- 转换器的配置(方式1) -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
	<property name="converters">
		<set>
			<bean class="com.zl.converter.DateConverter" />
		</set>
	</property>
</bean>
3.2 非注解方式

该方式需要独立配置处理器映射器和处理器适配器,不再使用注解驱动的方式

 <!-- 转换器的配置(方式2) -->
<!-- 该方式需要独立配置处理器映射器和处理器适配器,不再使用注解驱动的方式 -->
<bean
	class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
	<property name="webBindingInitialzer" ref="customBinder" />
</bean>
<!-- 自定义webBinder -->
<bean id="customBinder"
	class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
	<property name="conversionService" ref="conversionService" />
</bean>
<!-- 转换器配置 -->
<bean id="conversionService"
	class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
	<property name="converters">
		<set>
			<bean class="com.zl.converter.DateConverter" />
		</set>
	</property>
</bean>

4 异常处理器

<!-- 配置全局异常处理器 -->
<bean id="customHandleException" class="com.zl.exception.CustomHandleException"/>

<!-- 配置使用 SimpleMappingExceptionResolver 来映射异常 -->	   
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
	<!-- 定义默认的异常处理页面 -->		 		   
	<property name="defaultErrorView" value="error" />		 
	<!--  配置异常的属性值为ex,那么在错误页面中可以通过 ${exception} 来获取异常的信息 -->
	<!-- 如果不配置这个属性,它的默认值为exception	-->		       
	<property name="exceptionAttribute" value="exception"></property>		       
	<property name="exceptionMappings">           
		<props>
			<!-- 映射特殊异常对应error.jsp这个页面 -->				               
			<prop key=".DataAccessException">error</prop>				               
			<prop key=".NoSuchRequestHandlingMethodException">error</prop>				               
			<prop key=".TypeMismatchException">error</prop>				               
			<prop key=".MissingServletRequestParameterException">error</prop>				           
		</props>		       
	</property>  
</bean>

5 文件上传解析器

CommonsMultipartResolver这个Bean的id必须为multipartResolver
原因:CommonsMultipartResolver Bean是在DispatcherServlet中加载的,而DispatcherServlet是通过名字来查找这个Bean的。而其他的,则是按照类型查找。

<!-- 配置文件上传解析器:id必须为multipartResolver -->
<bean id="multipartResolver"
	class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!-- 设置文件上传大小 -->
	<property name="maxUploadSize" value="500000" />
</bean>

6 json转换器

没有使用注解驱动时,需要配置,如果使用注解驱动,无需配置

<!--处理器适配器 -->
<bean
	class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
	<property name="messageConverters">
		<list>
			<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
		</list>
	</property>
</bean>

7 拦截器

拦截器是拦截tomcat容器和spring容器之间的交互信息,主要是用于验证用户在访问该网页时是否登陆

<!-- 配置拦截器 -->
<mvc:interceptors>
	<mvc:interceptor>
		<!-- 所有的请求都进入拦截器 -->
		<mvc:mapping path="/**" />
		<!-- 配置具体的拦截器 -->
		<bean class="com.zl.web.interceptor.MyInterceptor1" />
	</mvc:interceptor>
</mvc:interceptors>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值