首先,我个人习惯将SpringMVC的配置文件命名为spring-mvc.xml,下面都会使用该命名。
以下是常用的配置:
一、在web.xml中,配置springmvc的前端控制器DispatcherServlet
<!-- 配置DispatchcerServlet -->
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置Spring mvc下的配置文件的位置和名称 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
(ps:,其中<url-pattern>标签是用来拦截所有请求,包括静态资源。)
二、配置spring-mvc.xml
1、配置自动扫描包,会去该包内查找相关注解,将其注册为bean并自动注入容器中。
<context:component-scan base-package="com.shenofusc" />
2、配置注解驱动,其自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。
<mvc:annotation-driven/>
3、配置视图解析器,如何把handler返回的ModelAndView解析为实际的物理视图View
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
三、根据项目需求可选择配置
1、注解处理器映射器和适配器。使用了会主动帮我们注册这两个,所以不用配置也可以。
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
2、 放过静态资源拦截
<mvc:default-servlet-handler/>
3、文件上传的控制器,有文件上传的一定要记得配置
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
<property name="maxUploadSize" value="10485760000"></property>
<property name="maxInMemorySize" value="40960"></property>
</bean>
4、如果使用freeMark的话,则需要配置
<!-- spring上下文获取bean -->
<bean class="com.shenofusc.entity.freemarker.SpringContextUtil" lazy-init="false" />
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!-- 指定FreeMarker模板文件目录 -->
<property name="templateLoaderPath" value="/WEB-INF/views/" />
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">0</prop>
<prop key="defaultEncoding">UTF-8</prop>
<prop key="url_escaping_charset">UTF-8</prop>
<prop key="locale">zh_CN</prop>
<prop key="boolean_format">true,false</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="date_format">yyyy-MM-dd</prop>
<prop key="time_format">HH:mm:ss</prop>
<prop key="number_format">0.######</prop>
<prop key="whitespace_stripping">true</prop>
<prop key="classic_compatible">true</prop>
</props>
</property>
<property name="freemarkerVariables">
<map>
<entry key="xml_escape" value-ref="fmXmlEscape" />
</map>
</property>
</bean>
<!--freeMark的视图解析器-->
<bean id="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true" />
<property name="viewClass" value="com.shenofusc.entity.freemarker.ExtFreeMarkerView" />
<property name="prefix" value="" />
<property name="suffix" value=".ftl" />
<property name="contentType" value="text/html; charset=UTF-8" />
<property name="attributesMap">
<map>
<entry key="newTag">
<bean class="com.shenofusc.entity.freemarker.TagCreator" />
</entry>
</map>
</property>
</bean>