admin 管理员组文章数量: 1087139
2023年12月23日发(作者:df怎么定义python)
SSH整合
SSH整合前应该先熟悉各个框架的单独使用,至少要了解各自的xml配置。
环境:struts-2.3.15.1,spring-3.2.4,hibernate-4.2.3,myeclipse10,JDK-1.6,Mysql
Jar包:
struts-2.3.15.1:
sturts2空项目下的所有jar包
struts2-spring-plugin-2.3.15.1
其他
spring-3.2.4:
hibernate-4.2.3:
lib-required下的所有jar包
commons-logging-1.1.3
aopalliance-1.0
1. 新建web项目
2. 以简单的登录验证为例
3. 建立,login_,login_
4. 引入struts2
(1) 配置
reAndExecuteFilter
(2) src下的配置
method="login">
(3) 测试struts2是否能够通过
5. 引入spring
(1)配置,添加listener
(2)配置src下的
将spring的拷贝至src下,删除里面的配置项,只保留下面内容
xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/schema/beans /schema/beans/" >
6. 引入hibernate
(1)配置
xmlns:xsi="/2001/XMLSchema-instance" xmlns:jee="/schema/jee" xmlns:tx="/schema/tx" xmlns:aop="/schema/aop" xmlns:p="/schema/p" xmlns:util="/schema/util" xmlns:tool="/schema/tool" xmlns:context="/schema/context" xsi:schemaLocation="/schema/beans /schema/beans/ /schema/tx /schema/tx/ /schema/aop /schema/aop/ /schema/jee /schema/jee/ /schema/context /schema/context/ /schema/util /schema/util/ /schema/tool /schema/tool/" default-lazy-init="true" default-autowire="byName"> class="ManagerDataSource" > /> /> class="essionFactoryBean"> key="t">ialect key="t_session_context_class">thread class="ateTransactionManager"> class="ctionInterceptor"> key="*">PROPAGATION_REQUIRED,-ion class="meAutoProxyCreator">
7. 类图
以用户登录验证为基础的测试
包
类或接口
LoginAction
方法或属性
User user
UserManager userManager
String login()
int id
String username
String password
boolean exist()
SessionFactory sessionFactory
boolean exist()
String login()
UserDao userDao
String login()
e
User
UserDao
UserDaoImpl
UserManager
UserManagerImpl
流程控制
username
password
返回”success”/”error”
user
转跳login_/login_
spring
返回”success”/”error”
()
BROWER
user
返回true/false
()
Hibernate.
sql语句
返回结果
Database:
Table:user
8. 注意事项
(1) 输入内容的name为me rd时,LoginAction中应该为user生成相应的get/set方法。
(2) 通过spring注入的属性,应该生成相应的get/set方法。
(3) 如果登录时网页出现错误nested transactions not supported,一般错误出在UserDaoImpl的exist()方法的ransaction()这一行。这是因为getCurrentSession()没有获得session。先检查中事务管理配置,看看是否在UserManager中login方法或者UserDao的exist()方法上开启事务。然后检查UserDaoImpl的属性sessionFactory有没有get/set方法。检查session执行对应的数据库操作后,有没有提交事务(())。如果会报以上错误,在的hibernate配置中加入 key="t_session_context_class">thread
(4) 当前测试的代码只是完成了用户登录验证功能,只是将hibernate的SessionFactory通过spring注入,数据库操作使用的是原生的sql语句,没有使用实体。如果需要测试,请自己完成实体类xml或者使用HibernateAnnotation。
(5) 如果操作中出现其他错误,请google或baidu一下。
9. 主要代码
(1)
(2)
xmlns="/xml/ns/javaee" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_"> reAndExecuteFilter
(3)
value="false" /> "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "/dtds/"> method="login"> (4) xmlns:xsi="/2001/XMLSchema-instance" xmlns:jee="/schema/jee" xmlns:tx="/schema/tx" xmlns:aop="/schema/aop" xmlns:p="/schema/p" xmlns:util="/schema/util" xmlns:tool="/schema/tool" xmlns:context="/schema/context" xsi:schemaLocation="/schema/beans /schema/beans/ /schema/tx /schema/tx/ /schema/aop /schema/aop/ /schema/jee /schema/jee/ /schema/context /schema/context/ /schema/util /schema/util/ /schema/tool /schema/tool/" default-lazy-init="true" default-autowire="byName"> class="ManagerDataSource" > /> /> class="essionFactoryBean"> key="t">ialect key="t_session_context_class">thread class="ateTransactionManager"> class="ctionInterceptor"> key="*">PROPAGATION_REQUIRED,-ion class="meAutoProxyCreator"> (5) LoginAction package ; import ; import nager; import Support; public class LoginAction extends ActionSupport{ User user=new User(); UserManager userManager; public String login(){ return (user); } public User getUser() { return user; } public void setUser(User user) { = user; } public UserManager getUserManager() { return userManager; } public void setUserManager(UserManager userManager) { nager = userManager; } } (6) UserDaoImpl package ; import ; import ; import n; import nFactory; import o; import ; public class UserDaoImpl implements UserDao{ private SessionFactory sessionFactory; public void add(User user) { } public void delete(User user) { } public void update(User user) { } public List return null; } public User queryByName(String name) { return null; } public User queryById(int id) { return null; } public boolean exist(User user) { Session session=rentSession(); nsaction().begin(); Query query = SQLQuery("select * from username='"+rname()+"' and password='"+sword()+"'"); user where } } List list = (); nsaction().commit(); if(()>0){ return true; }else{ return false; } public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { nFactory = sessionFactory; } (7) UserManagerImpl package ; import ; import nFactory; import o; import ; import nager; public class UserManagerImpl implements UserManager{ private UserDao userDao; public void add(User user) { } public void delete(User user) { } public void update(User user) { } public List return null; } public User queryByName(String name) { return null; } public User queryById(int id) { return null; } /** * 检查是否存在用户 * 数据库有匹配的用户名与密码,返回true * 否则返回false */ public boolean exist(User user) { return (user); } /** * 用户登录 * 用户名和密码都匹配上时返回"success" * 否则返回"error" */ public String login(User user) { if(exist(user)){ return "success"; }else{ return "error"; } } } public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao userDao) { o = userDao; }
版权声明:本文标题:SSH整合过程(struts-2.3.15.1+spring-3.2.4+hibernate-4.2.3 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1703308631a446331.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论