SpringMVC 4.2.2 - Web.xml,Dispatcher-Servlet及ApplicationContext配置笔记
1. Web.XML
- DispatcherServlet项:
SpringMVC DispatcherServlet是继承自HttpServlet一个 Servlet类 ,它实现对请求进行拦截。 DispatcherServlet需要在你的应用的Web.xml声明加载。
默认情况,Spring MVC会在<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
WEB-INF
寻找 dispacher-servlet.xml。
servlet-name:
以上配置中,servlet-name定义的名称为dispatcher, ,这样spring会自动扫描web-inf下名为dispatcher-servlet.xml文件。当然你可以使用其它[servet-name], 如,springmvcdispatcher, 那XML文件需要命名为:springmvcdispatcherr-servlet.xml。 里都是spring自动扫描的,如果你没有提供,将会报一个文件查找不到的异常。
- ContextLoaderListener:
启动ContextLoaderListener监听器,需要在Web.XML中添加如下配置,它会自动装配ApplicationContext的配置信息。
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
默认情况下会自动查找 /WEB-INF/applicationContext.xml,所以,需要在WEB-INF目录下创建的applicationContext.xml文件;文件 applicationContext.xml内容可以为空,但不能不创建这个文件, 如果没有applicationContext.xml文件,启动时会报错。
2.Dispatcher-Servlet.XML
- 激活@Controller注解模式
<mvc:annotation-driven />
- 设置对类的注解进行扫描,创建Bean及自动依赖注入
譬如,项目中MVC Controller包为com.kungfo.helloworld.Controller,则Spring会自动扫描包中的所有类。 根据实际项目包名修改即可。 如果有多个需要扫描的包,则可以用逗号分隔。<context:component-scan base-package="com.swirebev.mvc.Controller" />
- ViewResolver
此项设置将Controller返回的viewname映射到对应的View,即jsp页面。
如,Controller 返回 viewname为“ Welcome”,则会解析到/Web-INF/jsp路径下的 Welcome.jsp.
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/jsp/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean>
3.ApplicationContext
通常是一些bean管理,资源管理(读取资源文件),加入监听器等。
如,加载资源文件
<!-- 加载资源文件 其中包含变量信息 --> <context:property-placeholder location="classpath:jdbc.properties" />
数据源bean:
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.user}" /> <property name="password" value="${jdbc.password}" /> <property name="connectionProperties" value="useUnicode=yes;characterEncoding=utf8;" /> </bean>
4.供参考例子:
以下例子均已经验证可用。
- Web.XML
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>FrontOffice</display-name> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>
- Dispatcher-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"> <!-- 激活注解模式,如@Controller --> <mvc:annotation-driven /> <!-- 对包中的类的注解进行扫描,创建Bean及自动依赖注入 --> <context:component-scan base-package="com.swirebev.mvc.Controller" /> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/views/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans>
- applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd"> <!-- 加载资源文件 其中包含变量信息 --> <context:property-placeholder location="classpath:jdbc.properties" /> <!-- 数据库Datasource --> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.user}" /> <property name="password" value="${jdbc.password}" /> <property name="connectionProperties" value="useUnicode=yes;characterEncoding=utf8;" /> </bean> </beans>