34.1.3 Spring的web.xml配置
和其他Web框架一样,Spring的MVC框架是一个请求驱动的Web框架,其设计围绕一个中心的Servlet进行,它能将请求分发给控制器,并提供其他功能帮助Web应用开发。
DispatcherServlet实际上是一个Servlet,它从HttpServlet继承而来。和其他Servlet一样,DispatcherServlet定义在Web应用的web.xml文件里。DispatcherServlet处理的请求必须在同一个web.xml文件里使用url-mapping定义映射,下面的例子演示了如何配置DispatcherServlet:
<web-app>
<servlet>
<servlet-name>Dispatcher</servlet-name>
<servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
在上面的配置中,所有以.do结尾的请求都会由名为Dispatcher的DispatcherServlet处理,该Servlet配置了初始化参数contextConfigLocation,设置IoC配置文件的名称为/WEB-INF/application- Context.xml。如果不配置该参数,则它会读取默认的文件名/WEB-INF/Dispatcher-servlet.xml。通常习惯使用applicationContext.xml,也可以配置多个XML文件:
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml, /WEB-INF/part2.xml</param-value>
</init-param>
//spring 加hibernate配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"> <value>classpath:hibernate.cfg.xml</value> </property> </bean> <bean id="myTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="mySessionFactory" /> </property> </bean> <bean id="myBaseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> <property name="transactionManager" ref="myTransactionManager" /> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED</prop> <!-- <prop key="insert*">PROPAGATION_REQUIRED</prop> <prop key="save">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="edit*">PROPAGATION_REQUIRED</prop> <prop key="del*">PROPAGATION_REQUIRED</prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="disPlay*">PROPAGATION_REQUIRES_NEW</prop> --> </props> </property> </bean> <bean id="UsersDAO" class="com.notepad.dao.UsersDAO"> <property name="sessionFactory"> <ref bean="mySessionFactory" /> </property> </bean> <bean id="userTarget" class="com.notepad.bussies.UserService"> <property name="usersDao"> <ref local="UsersDAO" /> </property> </bean> <bean id="UserService" parent="myBaseTransactionProxy"> <property name="proxyTargetClass"> <value>true</value> </property> <property name="target"> <ref local="userTarget" /> </property> </bean> </beans>