SSH框架整合
来源:互联网 发布:网络大专文凭含金量 编辑:程序博客网 时间:2024/06/07 00:00
1.整合Spring,Struts2
1.导入jar包,我的资源里有,可以自行下载
2.创建一个Actino类
public class UserAction extends ActionSupport{ public String userLogin(){ System.out.println("userLogin方法执行了!"); return null; }}
3.搭建struts.xml配置
- 导入约束
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
- 配置Action
<struts> <package name="user" extends="struts-default" namespace="/"> <action name="user_*" class="cn.itcast.web.action.UserAction" method="{1}"></action> </package></struts>
4.配置前端控制器
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <filter> <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern> </filter-mapping></web-app>
运行走一个,看看测试结果
结果报错了,把struts-spring-xx.jar的jar包删掉就行,删掉后就可以运行了
配置好初始环境后,我们开始整合spring,跟,sturts,我们选择使用注解整合,
开始整合 , 配置applicationContext.xml(spring)配置,
- 导入约束
<?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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- bean definitions here --></beans>
- 开启IOC注解,AOP注入开关
<!--IOC开关--> <context:component-scan base-package="cn.itcast"/> <!--AOP开关--> <aop:aspectj-autoproxy />
导回刚刚我们删除的jar包,
配置web.xml ,我们需要使用spring提供的监听器来完成工厂加载
<!--初始化spring工厂--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
然后修改Action类
@Controller("UserAction")public class UserAction extends ActionSupport{ @Resource(name="UserServiceImpl") private UserService us; public String userLogin(){ us.save(); System.out.println("userLogin方法执行了!"); return null; }}
service类
@Service("UserServiceImpl")public class UserServiceImpl implements UserService { public void save(){ System.out.println("调用了保存的方法!"); }}
修改struts.xml配置
我们刚刚导入的是struts 跟 spring的整合包,导入后,可以在xml里面获取对象,从而省了从WebApplicationContextUtils里面获取对象,
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <package name="user" extends="struts-default" namespace="/"> <!--class修改成了类的注解value--> <action name="user_*" class="UserAction" method="{1}"></action> </package></struts>
运行看看能不能跑通,
结果是可行的,我们以及整合了struts跟spring
整合spring跟hibernate
1.我们可省去hibernate的配置文件,把文件信息写到spring的配置里面
<?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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- bean definitions here --> <!--IOC开关--> <context:component-scan base-package="cn.itcast"/> <!--AOP开关--> <aop:aspectj-autoproxy /> <bean id="SessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <!--数据库数据--> <property name="dataSource" ref="DataSource"/> <!--hibernate其它配置--> <property name="hibernateProperties" > <props> <!--显示sql--> <prop key="hibernate.show_sql">true</prop> <!--格式化sql--> <prop key="hibernate.format_sql">true</prop> <!--每次运行都生成表--> <prop key="hibernate.hbm2ddl.auto">create</prop> <!--数据库方言,根据库配置--> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> </props> </property> <!--引入放映射文件的包,会自动解析里面的文件,不用一个一个导入--> <property name="mappingDirectoryLocations" value="classpath:cn/itcast/domain"/> </bean> <!--数据库基本信息--> <bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="user" value="root"/> <property name="password" value="1039191520"/> <property name="driverClass" value="com.mysql.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql:///ssh"/> </bean></beans>
因为要写入配置,所以我就没有在持久层使用注解,我选择使用Bean来配置,
创建持久层
package cn.itcast.dao.impl;import cn.itcast.dao.inter.UserDao;import cn.itcast.domain.User;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.springframework.stereotype.Repository;import javax.annotation.Resource;@Repository("UserDaoImpl")public class UserDaoImpl implements UserDao{ @Resource(name="SessionFactory") private SessionFactory factory; @Override public void save() { Session session = factory.openSession(); Transaction transaction = session.beginTransaction(); User user = new User(); user.setUname("zs"); session.save(user); transaction.commit(); session.close(); }}
创建JavaBean
package cn.itcast.domain;public class User { //唯一表示符 private String uid; private String uname;// 提供setget方法 public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; }}
创建映射文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="cn.itcast.domain.User" table="t_user"> <id name="uid" column="uid"> <!--主键--> <!-- 主键的生成策略 --> <generator class="uuid"></generator> </id> <property name="uname" column="uname"/> </class></hibernate-mapping>
然后我们运行试试,别忘了创建数据库,代码没问题
其实整合到这里,持久层还是有很多多余的代码,需要不断的从工厂获取session对象,不断的开启事务,
- 使用注解
- 使用Bean
最终整合spring-hibernate
spring给我们提供了一个实现类,我们只需要根据规则来,就可以直接使用它的查询功能直接查询,
2.它的类需要我们提供sessionFactory
有俩种解决方案
方案一(注解)
1.实现它提供的类 HibernateDaoSupport
public class UserDaoImpl extends HibernateDaoSupport implements UserDao{
2.给父类sessionFactory赋值
@Repository("UserDaoImpl")//使用注解开启事务@Transactionalpublic class UserDaoImpl extends HibernateDaoSupport implements UserDao{ @Autowired //自动注入,spring会自动调用该方法 public void setParents(SessionFactory factory){ //使用父类的方法,给父类的设置值 setSessionFactory(factory); } @Override public void save() { User user = new User(); user.setUname("lisi"); //使用HibernateDaoSupport提供的方法, getHibernateTemplate().save(user); }}
在spring配置里配置事务的配置
<!--生成数据库管理员--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="DataSource"/> </bean> <!--开启事务开关--> <tx:annotation-driven transaction-manager="transactionManager"/>
运行走一下
结果可行,三大框架整合就讲到这里,这里我插一嘴,还没有解决懒加载的问题,
spring提供了解决方法,有兴趣可以自己研究,,
- SSH框架整合笔记
- ssh框架整合
- SSH框架整合
- SSH+DWR 框架 整合
- SSH框架整合步骤
- SSH框架的整合
- SSH框架整合步骤
- SSH框架整合步骤
- SSH框架整合步骤
- SSH框架整合步骤
- ssh框架整合详解
- ssh框架整合流程
- ssh框架的整合
- SSH框架整合
- SSH框架整合步骤
- SSH框架整合示例
- SSH框架整合步骤
- SSH框架整合
- python numpy 排序
- 【Scikit-Learn 中文文档】使用 scikit-learn 介绍机器学习 | ApacheCN
- 3000道POJ英文题中高频词汇--HADOOP单词统计
- 11.21课堂笔记-查找节点和创建节点、插入节点和删除节点、复制节点替换节点、包裹节点和属性操作、样式操作、设置和获取HTML、文本和值
- 什么是RGB-D图像
- SSH框架整合
- 使用 C3P0连接数据库奇怪的发现java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: Y
- 小巧的jquery轮播图插件
- CNN情感分类
- Java任务--GUI(兴趣,性别)
- 获取泛型
- java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
- Android studio实现自动导包和自动删除无用导包
- eclipse常用快捷键