1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 4 xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 5 xsi:schemaLocation=" 6 http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context 9 http://www.springframework.org/schema/context/spring-context.xsd 10 http://www.springframework.org/schema/tx 11 http://www.springframework.org/schema/tx/spring-tx.xsd 12 http://www.springframework.org/schema/aop 13 http://www.springframework.org/schema/aop/spring-aop.xsd"> 14 15 <!-- 配置数据源 dbcp数据源 --> 16 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 17 <property name="driverClassName" value="${driverClass}" /> 18 <property name="url" value="${jdbcUrl}" /> 19 <property name="username" value="${user}" /> 20 <property name="password" value="${password}"/> 21 </bean> 22 23 <!-- 使用配置文件 加载 数据库需要的4要素 经常使用 --> 24 <context:property-placeholder location="classpath:jdbc.properties" /> 25 26 27 <!--配置sessionFactory --> 28 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 29 <!-- 读取hibernate配置文件<property name="configLocation" value="classpath:hibernate.cfg.xml"/> --> 30 <!-- 配置数据源 --> 31 <property name="dataSource" ref="dataSource"></property> 32 <!-- 配置映射文件 Teacher.hbm.xml --> 33 <property name="mappingDirectoryLocations" value="cn/bdqn/bean"/> 34 <property name="hibernateProperties"> 35 <props> 36 <prop key="hibernate.hbm2ddl.auto">update</prop> 37 <prop key="hibernate.show_sql">true</prop> 38 <prop key="hibernate.format_sql">true</prop> 39 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop> 40 </props> 41 </property> 42 </bean> 43 44 <!--配置dao层 --> 45 <bean id="teacherDao" class="cn.bdqn.dao.impl.TeacherDaoImpl"> 46 <property name="sessionFactory" ref="sessionFactory"/> 47 </bean> 48 49 <!--配置service层 --> 50 <bean id="teacherService" class="cn.bdqn.service.impl.TeacherServiceImpl"> 51 <property name="dao" ref="teacherDao"></property> 52 </bean> 53 54 <!-- 配置action层 --> 55 56 <!-- ==========================事务======================================= --> 57 <!-- 配置事务管理器 --> 58 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 59 <property name="dataSource" ref="dataSource"/> 60 </bean> 61 62 63 <tx:advice id="txAdvice" transaction-manager="transactionManager"> <!-- 设置事务的通知 --> 64 <tx:attributes> 65 <!-- 对连接点上的方法进行事务属性的配置 --> 66 <tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED"/> 67 <tx:method name="delete*" isolation="DEFAULT" propagation="REQUIRED"/> 68 <tx:method name="update*" isolation="DEFAULT" propagation="REQUIRED"/> 69 <tx:method name="find*" read-only="true" isolation="DEFAULT" propagation="REQUIRED"/> 70 </tx:attributes> 71 </tx:advice> 72 73 <aop:config> 74 <!-- 指定切入点 --> 75 <aop:pointcut expression="execution(* *..service.*.*(..))" id="myPoint"/> 76 <aop:advisor advice-ref="txAdvice" pointcut-ref="myPoint"/> 77 </aop:config> 78 79 </beans>
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 6 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 7 <display-name></display-name> 8 9 10 <!-- 配置全局监听器 确保 容器 对象 只被实例化一次! --> 11 <listener> 12 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 13 </listener> 14 <!-- 默认xml名称 必须是 applicationContext.xml 必须在 WEB-INF的根目录下 15 现在我们 设置applicationContext.xml文件的路径 我们也可以更改 xml文件的名称 --> 16 <context-param> 17 <param-name>contextConfigLocation</param-name> 18 <param-value>classpath:applicationContext.xml</param-value> 19 </context-param> 20 21 22 <servlet> 23 <servlet-name>AddServlet</servlet-name> 24 <servlet-class>cn.bdqn.servlet.AddServlet</servlet-class> 25 </servlet> 26 27 <servlet-mapping> 28 <servlet-name>AddServlet</servlet-name> 29 <url-pattern>/AddServlet</url-pattern> 30 </servlet-mapping> 31
在 dao层以及service层创建对应的 根据ID获取Teacher的信息!
使用get方式 不会报错!
但是使用load方式获取数据的话,就会出现No Session!
因为在前台真正获取数据的时候,事务已经提交了,session也关闭了!
这时候 我们需要配置 OpenSessionInView模式!来保证用户获取数据的时候还有session!
只需要在web.xml文件中配置如下节点:
<!-- 设置openSessionInView 必须在struts2的核心控制器 之前 不然会起作用 -->
<filter>
<filter-name>open</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>open</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--配置struts2的核心控制器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
OpenSessionInView模式
32 <welcome-file-list> 33 <welcome-file>index.jsp</welcome-file> 34 </welcome-file-list> 35 </web-app>
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" 4 "http://struts.apache.org/dtds/struts-2.1.dtd"> 5 6 <struts> 7 <package name="default" namespace="/" extends="struts-default"> 8 <!-- 每次请求AddServlet 都会实例化一个 对象 需要让spring容器去管理 --> 9 <action name="AddServlet" class="teacherAction" method="add"> 10 <result>/success.jsp</result> 11 </action> 12 </package> 13 14 </struts>