首先,我個人習慣將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>