SSH整合——基于XML方式

一、Spring整合Hibernate

方式一:零障碍整合

需要使用spring中提供的一个LocalSessionFacotry来加载Hibernate的配置文件。

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
		<property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
</bean> 
方式二:spring管理hibernate配置

不在需要hibernate.cfg.xml文件,所有关于hibernate.cfg.xml文件中的配置都在spring的配置文件中来配置。
1.首先要配置数据源
2.接下来引入properties文件,里面是MySQL相关配置名
3.创建LocalSessionFactoryBean来完成spring管理hibernate中的SessionFactory
4.加载hbm.xml配置文件

<context:property-placeholder location="classpath:db.properties" />

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
		<!-- 加载连接池 -->
		<property name="dataSource" ref="dataSource" />
		<property name="hibernateProperties">
			<!-- 以下属性在书写时不能省略hibernate -->
			<!-- <props> 
					<prop key="hibernate.show_sql">true</prop> 
					<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
					<prop key="hibernate.hbm2ddl.auto">update</prop> 
					<prop key="hibernate.format_sql">true</prop> 
				 </props> -->
			<!-- 上述的配置可以简写成以下 -->
			<value>
				hibernate.show_sql=true
				hibernate.dialect=org.hibernate.dialect.MySQLDialect
				hibernate.hbm2ddl.auto=update
				hibernate.format_sql=true
			</value>
		</property>

		<!-- 加载hibernate的Xxx.hbm.xml配置文件 -->
		<property name="mappingResources">
			<list>
				<value>brooker/domain/User.hbm.xml</value>
			</list>
		</property>
		<!--<property name="mappingLocations"> <list> <value>classpath:cn/ithiema/domain/User.hbm.xml</value> 
			</list> </property> <property name="mappingDirectoryLocations"> <list> <value>classpath:cn/itheima/domain</value> 
			</list> </property> -->

	</bean>
	<!-- 配置连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${jdbc.driverClass}" />
		<property name="jdbcUrl" value="${jdbc.url}" />
		<property name="user" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>
spring整合hibernate后的DAO
<!-- 声明Dao -->
	<bean id="userDao" class="brooker.dao.UserDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
编写service及测试
<!-- 声明Service -->
	<bean id="userService" class="brooker.service.UserServiceImpl">
		<!-- 将userDao注入到userService -->
		<property name="userDao" ref="userDao"></property>
	</bean>
Test:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class UserTest {
	@Autowired
	private UserService userService;
	
	@Test
	public void testAdd() {
		User user = new User();
		user.setName("maria");
		user.setAge(22);
		
		userService.add(user);
	}

	@Test
	public void testUpdate() {
		User user = userService.findById(1);
		user.setAge(21);
		userService.update(user);
	}
	
	@Test
	public void testFindAll() {
		List<User> list = userService.findAll();
		System.out.println(list);
	}
	
	@Test
	public void testDel() {
		User user = userService.findById(3);
		userService.del(user);
	}
	
	@Test
	public void testFindAllByCriteria() {
		DetachedCriteria dc = DetachedCriteria.forClass(User.class);
		dc.add(Restrictions.gt("age", 20));//选出age>20的user
		List<User> list = userService.findAllByCriteria(dc);
		System.out.println(list);
	}
	
	@Test
	public void testFindByNameQuery() {
		List<User> list = userService.findByNameQuery();
		System.out.println(list);
	}
}

二、Spring整合struts2框架

(1)方式一
创建一个addUser.jsp页面
 <body>
    	<form action="${pageContext.request.contextPath}/user_add" method="post">
    		姓名:<input type="text" name="name"><br>
    		年龄:<input type="text" name="age"><br>
    		<input type="submit" value="addUser">
    	</form>
  </body>
创建UserAction类
public class UserAction extends ActionSupport implements ModelDriven<User> {

	private User user = new User();
	
	private UserService userService;
	
	@Override
	public User getModel() {
		// TODO Auto-generated method stub
		return user;
	}
	
	//将UserService注入UserAction
	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public String add() {
		userService.add(user);
		return SUCCESS;
	}

}
Struts.xml文件中配置
	<package name="default" namespace="/" extends="struts-default">
		<!-- class直接填applicationContext中配置的id就行 -->
		<action name="user_*" class="userAction" method="{1}">
			<result name="success">/success.jsp</result>
		</action>
		
	</package>
applicationContext.xml中:
<!-- 配置action -->
	<bean id="userAction" class="brooker.action.UserAction" scope="prototype">
		<!-- 将userService注入action -->
		<property name="userService" ref="userService"></property>
	</bean>
(2)Spring整合struts2方式二:

在这里插入图片描述

web.xml
<!-- 以下是配置spring -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<!-- 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>
Spring整合struts2框架总结

1.如果在struts.xml文件中如果写的是全类名,我们使用action自动装配service方案
2.如果在struts.xml文件中这时,在applicationContext.xml文件中要配置<bean id=”userAction” class=” cn.itheima.action.UserAction”>
3.以上操作的前提是必须导入struts2-spring-plugin.xml文件
在这个文件中它改变struts2的bean工厂
4.默认情况下如果采用action自动装配service方案,这时每一次请求都会新创建一个action,并且service的装配类型是by name
5.如果我们采用的是spring管理action这种方案我们必须在声明中添加scope=prototype”,原因是struts2框架的action每一次请求都应该是一个新的action

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值