ssh完整例子--第一个ssh


一共有6步(文章底部附有源码下载地址,刚学完ssh的可以借鉴)

1 写一个Hibernate应用,完成用户的增加
	1) User实体
	2)UserDao接口
		save(User u)
	3)UserDaoImpl实现UserDao
		save(User u){
			//用hibernate api
		}
		
2 让spring注入SessionFactory

	1)在上一个应用中导入Spring的jar包
		除了基础的6个包,还得导入2个jar包
		org.springframework.jdbc-3.0.5.RELEASE.jar
		org.springframework.orm-3.0.5.RELEASE.jar
		org.springframework.transaction-3.0.5.RELEASE.jar
		
		
	2) 增加配置文件beans.xml
		<bean id="sessionFactory"
			class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
				<property name="configLocation"  value="classpath:hibernate.cfg.xml"/>
		</bean>
		
		
		<bean id="userDao" class="包名.UserDaoImpl">
			<property name="sessionFactory" ref="sessionFactory">
		</bean>
		
	3) 在测试方法中,获得userDao,然后测试save()
	
			UserDao userDao= (UserDao)cxt.getBean("userDao");
			
3 添加数据源,并注入到SessionFactory	

	1) 需要导入2个包
			commons-dbcp.jar
			commons-pool.jar
	
		注:数据源的第3方实现有非常多,现我们用其中一种,commons-dbcp
	
	2) 配置Datasource
	<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://localhost:3306/spring_db"/>
		<property name="username" value="root"/>
		<property name="password" value="123456"/>
	</bean>
	
	3)在SessionFactory Bean中注入dataSource
	
	<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<!-- 注入DataSource Bean-->
		<property name="dataSource" ref="myDataSource"/>
		
		<property name="mappingResources">
			<list>
				<value>com/toceansoft/entity/User.hbm.xml</value>
			</list>
		</property>
		
		<property name="hibernateProperties">
			<value>
				hibernate.dialect=org.hibernate.dialect.MySQLDialect
				hibernate.hbm2ddl.auto=update
				hibernate.show_sql=true
			</value>
		</property>
	</bean>
	
	4) 测试结果
	
4 使用spring提供的HibernateTemplate

	1) 在Dao中添加
	private HibernateTemplate hibernateTemplate;
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.hibernateTemplate = new HibernateTemplate(sessionFactory);
	}
	
	2)修改方法,改成使用hibernateTemplate
		save(o)
			hibernateTemplate.save(o);
			
5 使用spring在业务层切入事务

	1)在业务层写一个接口UserService
		public void add(User u);
	2) 写一个实现类UserServiceImpl实现接口UserService
		public void add(User u){}
	3)实现类UserServiceImpl提供userDao的get/set方法
	
	4)在beans.xml中配置UserServiceImpl 的Bean,并注入userDao
	
	5)配置事务管理器Bean
	<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	6) 配置事务通知
	<tx:advice id="txAdvice" transaction-manager="txManager">
		<!-- 包括隔离级别,事务传播属性。。。 -->
		<tx:attributes>
			<tx:method name="add*" propagation="REQUIRED"/>
			<tx:method name="*" propagation="SUPPORTS" read-only="true"/>
		</tx:attributes>
	</tx:advice>
	7)配置aop切面
	<aop:config>
		<aop:pointcut id="serviceMethods"
			expression="execution(* com.toceansoft.service.impl.*.*(..))"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"/>
	</aop:config>
	8)测试结果
	9)在add方法内抛出异常,再测试观察结果
		throw new RuntimeException();
		
6 整合Spring与Struts
	1)在把上面的java 应用变成web应用
			--把上面应用Src下的所有东东复制到web应用的src
			
	2)导入struts2开发的基础jar包,还需要一个特殊包
		struts-spring-plugin.jar
		
		导入与struts2整合的spring相应的包
		org.springframework.web.struts-3.0.5.RELEASE.jar
		org.springframework.web-3.0.5.RELEASE.jar
		
	3) 把beans.xml 复制到WEB-INF,并且改名为applicationContext.xml(可选的)
	
	4) 在web.xml中配置spring启动的监听器
	<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml,classpath*:applicationContext2.xml</param-value>
	</context-param>
	<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	5)在web.xml配置Struts2的启动
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
		<!--  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>-->
	</filter>
	
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	6)在Web包下写UserAction,并且提供业务层UserSerivce的set方法
	
	7)在appplicationContext.xml中配置UserAction bean
	<bean id="userAction" class="com.toceansoft.web.action.UserAction" scope="prototype">
		<property name="userService" ref="userService" />
	</bean>
	注:scope="prototype"
	
	8) 在struts.xml中配置UserAction
	<!-- 跳转到添加产品页面 -->
		<action name="User_toAdd" >
			<result>/User_add.jsp</result>
		</action>
		
		<!-- 添加产品 -->
		<!-- 关键点:这里的class设置action bean在spring配置文件中bean的id -->
		<action name="User_add" class="userAction" method="add">
			<result name="success">/grobal_message.jsp</result>
		</action>
		
	9) 写2个页面
	User_add.jsp
	grobal_message.jsp
	
	10)部署测试

源码下载:Spring_Strtus2_Hibernate

源码下载:Spring_Strtus2_Hibernate 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值