Spring mvc 配置详解

Posted by luoxuehuan on May 23, 2016

一、web.xml

1.1 配置文件的配置

这样可以将一些配置 写在其他配置文件里,而不是堆积在web.xml里面。如果配置成spring/spring-*.xml则会扫描spring文件夹下所有以spring-开头的配置文件。导入到web.xml中。

<!-- 配置Spring配置文件的地址,如果有业务的spring配置,则在后面再加上Spring配置的路径 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			 /WEB-INF/config/core/spring/spring-*.xml
		</param-value>
	</context-param>
<!-- 配置Spring配置文件的地址 -->

1.2 过滤器配置(编码转换)

<!-- 过滤器,用来将请求的字符统一转化成 UTF-8 编码 -->
	<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>
		<!-- forceEncoding用来设置是否理会 request.getCharacterEncoding()方法,设置为true则强制覆盖之前的编码格式 -->
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>

	<!-- 过滤器,用来将请求的字符统一转化成 UTF-8 编码 -->
	<filter-mapping>
		<filter-name>CharacterEncoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
<!-- 不进行任何过滤 -->

1.3 Spring 分发Servlet配置

配置了.do和.dox则会进入Spring MVC的DispatcherServlet查看是否存在相应 的映射,如果存在相应的映射,则进行后续处理。 ``` spring org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/config/core/spring/spring-servlet.xml 1 spring *.do

<servlet-mapping>
	<servlet-name>spring</servlet-name>
	<url-pattern>*.dox</url-pattern>
</servlet-mapping> ```

1.4 事务的配置

这里主要配置事务的管理。Service层的方法名只有以save、update、remove、do、load开头才能开启事务,从而安全地操作数据库。 ```

<!-- 事务拦截方法配置(通过方法名控制) -->
<bean id="transactionAttributeSource"
	class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">
	<property name="properties">
		<props>
			<prop key="save*">PROPAGATION_REQUIRED</prop>
			<prop key="update*">PROPAGATION_REQUIRED</prop>
			<prop key="remove*">PROPAGATION_REQUIRED</prop>
			<prop key="do*">PROPAGATION_REQUIRED</prop>
			<prop key="load*">PROPAGATION_REQUIRED</prop>
		</props>
	</property>
</bean> ```

1.5 Spring的Web加载器配置

<!-- 配置Spring的web加载器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

1.6 授权与安全过滤器配置

安全过滤器用于拦截请求,根据安全过滤器的实现来规范用户登录与否的操作行为的不同。若用户没有登录,则不能访问相应的页面以及相应的方法。(以.do为后缀的方法;以 .jsp .sac为结尾的页面)

<!-- 授权与认证过滤器 -->
	<filter>
		<filter-name>security</filter-name>
		<filter-class>cn.com.hadon.security.SecurityFilter</filter-class>
	</filter>

	<!-- .do会被安全过滤器拦截。而.dox不会,未登陆用户也可以访问到controller里面的方法。 映射是Spring MVC做的。安全拦截是过滤器做的。 -->
	<filter-mapping>
		<filter-name>security</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>

	<filter-mapping>
		<filter-name>security</filter-name>
		<url-pattern>*.sac</url-pattern>
	</filter-mapping>

	<filter-mapping>
		<filter-name>security</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>

1.7 url转向配置

url转向配置可以在访问abc.jsp时 装饰城abc.sac??????? ``` forward cn.com.hadon.security.URLForwardServlet 0

<servlet-mapping>
	<servlet-name>forward</servlet-name>
	<url-pattern>*.sac</url-pattern>
</servlet-mapping>
<!-- URL 转向 --> ```

1.8 一些错误页面的配置

<!-- 错误页面 -->
	<error-page>
		<error-code>404</error-code>
		<location>/error_404.jsp</location>
	</error-page>

	<error-page>
		<exception-type>java.lang.Exception</exception-type>
		<location>/error_500.jsp</location>
	</error-page>
<!-- 错误页面 -->