SSH2 development
1. 项目文件列表
2. Bean 依赖关系:
3. 实现目标
实现对用户的增删查改
4. 开发步骤
建立ssh2 项目->增加hibernate capability,选择annotation和core library,不要选择建立session factory,而是让spring来管理->增加spring capability,选择aop,core,presistence core, persistence jdbc librara->在web-inf目录下的web.xml中加入filter和listener如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
->在src目录下新建struts.xml文件,dtd文件在struts2的demo中copy一个即可
->ok,准备工作已经完成。
->重启服务器,会发现报错,xxx.asm.xxx的错误,这是由于spring中的asm.jar文件与hibernate中的asm.jar版本冲突,删掉asm.2.x.x.jar即可。
从bean的依赖关系可以看出,action依赖于service的实现,service又依赖于下一
层的userdao。
5. 建立cn.scau.ssh2.beans.User包
包下有User.java是user的属性文件。
还有一个validation.xml待会再说。
6. 建立 cn.scau.ssh2.dao包
包下的UserDao.java是一个接口,规定了增删查改的方法
package cn.scau.ssh2.dao;
import java.util.List;
import cn.scau.ssh2.beans.User;
public interface UserDao {
public void saveUser(User user);
public void removeUser(User user);
public User findUserById(int id);
public List<User> findAllUserser();
public void updateUser(User user);
}
7. 建立cn.scau.ssh2.dao.impl包
包下有UserDaoImpl.java为具体的实现:
package cn.scau.ssh2.dao.impl;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import cn.scau.ssh2.beans.User;
import cn.scau.ssh2.dao.UserDao;
//继承HibernateDaoSupport,用到了getHibernateTemplate这个方法。
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
@SuppressWarnings("unchecked")
public List<User> findAllUserser() {
String hql = "from User user order by user.id desc";
List<User> list = this.getHibernateTemplate().find(hql);
return list;
}
public User findUserById(int id) {
User user = (User) this.getHibernateTemplate().get(User.class, id);
return user;
}
public void removeUser(User user) {
this.getHibernateTemplate().delete(user);
}
public void saveUser(User user) {
this.getHibernateTemplate().save(user);
}
public void updateUser(User user) {
this.getHibernateTemplate().update(user);
}
}
8. 建立cn.scau.ssh2.service包
包下的UserService.java其实现与UserDao差不多,因为UserService 依赖于UserDao的实现。
这里就不贴代码,具体看project里的就行
9. 建立cn.scau.ssh2.service.impl包
包下的UserServiceImpl.java的实现就是调用UserDaoImpl中的方法。
详见project。
10. 建立cn.scau.ssh2.action包
包下的各个action实现对页面的控制。
Code:
package cn.scau.ssh2.action;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import cn.scau.ssh2.beans.User;
import cn.scau.ssh2.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
public class SaveUserAction extends ActionSupport {
private static final long serialVersionUID = -4055521880257114396L;
private User user;
private UserService userService;
// get方法可以不用写,因为要用到的只是set方法
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}
@Override
public String execute() throws Exception {
this.userService.save(user);
return SUCCESS;
}
}
11. 其他action类似实现,主要是在execute()中调用UserService对数据库crud的方法。
此处要注意:可以看到多了一个UpdatePUserAction,这是因为update用户时,先要把用户先preview,然后再update,所以多一个UpdatePUserAction,然后再掉转到update.jsp页面输入需要update的数据。
12. 其实不是写完所有action后才写struts.xml和applicationContext.xml文件,而是每写完一个action,在struts.xml和applicationContext.xml中对action进行配置。
13. struts.xml
code:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.custom.i18n.resources"
value="globalMessages">
</constant>
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<package name="cn.scau.ssh2.action" extends="struts-default">
<action name="saveUser" class="saveUserAction">
<result name="success" type="redirect">
listUser.action
</result>
<result name="input">/save.jsp</result>
</action>
<action name="listUser" class="listUserAction">
<result name="success">/list.jsp</result>
<result name="input">/index.jsp</result>
</action>
<action name="deleteUser" class="removeUserAction">
<result name="success" type="redirect">
listUser.action
</result>
</action>
<action name="updatePUser" class="updatePUserAction">
<result name="success">/update.jsp</result>
</action>
<action name="updateUser" class="updateUserAction">
<result name="success" type="redirect">listUser.action</result>
<result name="input">/update.jsp</result>
</action>
</package>
</struts>
14. applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- destroy-method="close"将连接放回连接池-->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/ssh2"></property>
<property name="username" value="root"></property>
<property name="password" value="rick"></property>
<property name="maxActive" value="100"></property>
<property name="maxIdle" value="30"></property>
<property name="maxWait" value="500"></property>
<property name="defaultAutoCommit" value="true"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="show_sql">true</prop>
<!-- <prop key="hbm2ddl.auto">update</prop> -->
</props>
</property>
<property name="mappingResources">
<list>
<value>cn/scau/ssh2/beans/User.hbm.xml</value>
</list>
</property>
</bean>
<bean id="userDao" class="cn.scau.ssh2.dao.impl.UserDaoImpl"
scope="singleton">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="userService"
class="cn.scau.ssh2.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
<!-- scope="prototype"因为struts2中action是有状态的,所以要将scope设为"prototype",如果不设,可以试一下效果,当输入有误信息时会出现错误提示重复输出的情况-->
<bean id="saveUserAction" class="cn.scau.ssh2.action.SaveUserAction"
scope="prototype">
<property name="userService" ref="userService"></property>
</bean>
<bean id="listUserAction" class="cn.scau.ssh2.action.ListUserAction"
scope="prototype">
<property name="userService" ref="userService"></property>
</bean>
<bean id="removeUserAction"
class="cn.scau.ssh2.action.RemoveUserAction" scope="prototype">
<property name="userService" ref="userService"></property>
</bean>
<bean id="updatePUserAction"
class="cn.scau.ssh2.action.UpdatePUserAction" scope="prototype">
<property name="userService" ref="userService"></property>
</bean>
<bean id="updateUserAction"
class="cn.scau.ssh2.action.UpdateUserAction" scope="prototype">
<property name="userService" ref="userService"></property>
</bean>
</beans>
15. 实现对输入信息的校验
在action包下可以看到有*Action-validation.xml文件,实现校验。因为我们在action中定义的是对象类型,所以校验时采用的validator为visitor。使用了visitor则要在相应的bean包中加入user对象的基本属性的校验。
16. 此时完成ssh2整合,可以在此基础上实现对业务逻辑的开发。
END:ssh2 project是参照浪曦风中叶老师的视频画葫芦出来的,可以在vercd中找到相应的链接下载。
分享到:
相关推荐
java(1) 整合入门(spring,struts,hibernate的整合)资料(1) 中大软件工厂项目前培训资料(1) 完整笔记+源码(1) ssh(1) C#查询参数化例子(1) 学习笔记+完整源码(1) 介绍与深入(1) 学习笔记(不含整合)(1) C#(1) .CHM格式...
SSH整合是Java Web开发中的一个经典组合,由Struts2、Spring和Hibernate三大框架组成,再加上C3P0作为数据库连接池,形成了高效且灵活的应用架构。本学习笔记将深入探讨这四个组件如何协同工作,构建出强大的企业级...
SSH是Java开发中广泛使用的三大框架——Struts2、Hibernate和Spring的缩写。这三大框架结合使用,能够构建高效、灵活的企业级Web应用程序。现在,让我们深入探讨这些框架的知识点。 **Struts2笔记** Struts2是MVC...
SSH项目是一种经典的Java Web开发框架组合,由Spring、Hibernate和Struts2三个开源框架组成。这个项目示例提供了一个基于这些技术的简单应用,帮助开发者理解如何将它们整合在一起进行实际开发。 **Spring框架**是...
本笔记主要涵盖了Java服务器页面(JSP)开发中的三大主流框架:Struts、Hibernate和Spring。这三大框架是企业级Web应用开发中的基石,为开发者提供了高效、灵活且可扩展的解决方案。Struts作为MVC(模型-视图-控制器...
内涵数据库设计模型 和数据库设计代码! 图书管理系统: 数据库使用的mysql 里面的发送e-mail我用的是一个我申请的邮箱在测试 可以用自己的! 代码功能基本都有注释.... 才学完s2sh的入门笔记吧!... 供学习使用........
这个“struts+spring+hibernate学习笔记”应该涵盖了这三个框架的基础知识以及如何将它们整合使用的详细教程。 Struts是一个基于MVC(Model-View-Controller)设计模式的开源框架,主要用于控制Web应用的流程。它...
当 Struts、Spring 和 Hibernate 结合在一起时,通常称为 SSH(Struts-Spring-Hibernate)整合框架。Spring 作为整体的协调者,可以管理 Struts 的 Action 对象以及 Hibernate 的 SessionFactory 和 Session。Struts...
Struts、Spring 和 Hibernate 是Java开发中非常著名的三个框架,它们常常被组合使用,形成了一个强大的企业级应用开发解决方案,通常被称为"SSH"或者"SSH2"。这三种框架各有侧重点,Struts负责表现层,Spring处理...
【Struts+Spring+Hibernate 学习总结】 SSH(Struts、Spring、Hibernate)是Java Web开发中的一个经典企业级应用架构,它将MVC设计模式应用到Web应用的各个层次,实现了良好的分层和解耦。这篇学习总结旨在帮助读者...
Struts+Spring+Hibernate 应用开发详解是一个深入讲解如何集成这三个开源框架进行J2EE应用开发的教程。Struts、Spring和Hibernate分别是MVC模式中的Controller、Service和Persistence层的代表,它们的结合能够构建出...
Struts、Hibernate和Spring是Java开发中非常重要的三个框架,它们构成了经典的SSH(Struts、Spring、Hibernate)架构,用于构建高效、灵活的企业级应用程序。本笔记将详细讲解这三个框架的核心概念、工作原理以及...
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可...2. 部分字体及插图等来自网络,若是侵权请联系删除,本人不对所涉及的版权问题或内容负法律责任。收取的费用仅用于收集和整理资料耗费时间的酬劳
2. "Ajax+Struts2+Spring+Hibernate整合 - fuliangliang的Blog - CSDNBlog.mht":此文章可能深入讲解了如何在Struts2的基础上引入Ajax技术,以实现页面的异步更新,提升用户体验。同时,它也可能涉及了四大框架的...
spring 2.5.6 + struts 2.2.1 + hibernate 3.5.5 内有 AOP 的切面、全部的注解的 M V C 结构,之外还在上网上找了一个同学的学习笔记一起打包,感觉好不错!
Java SSH框架,全称为Struts、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架,用于构建高效、可扩展的企业级应用。本笔记主要围绕这三个框架进行深入学习,结合IOC(Inversion of Control,控制反转...
SSH版本1.0——基于struts,struts2,spring2,hibernate3 本软件是作者上课时所使用的课件,用于SSH教学任务,于上课时分发给学生。 本课件大部分资料由作者完成,另一部分来源于教科书及网络,经作者整理、加工、...
### Struts + Hibernate + Spring 技术整合学习笔记 #### 一、技术整合概述与应用场景 在企业级应用开发中,Struts + Hibernate + Spring(简称SSH)是一种非常流行的组合方式,它们各自承担着不同的角色,共同...
Spring 2.5 学习笔记是针对这个经典版本的框架进行深入理解的教程,而SSH则代表了Spring、Struts和Hibernate这三个Java Web开发中最常用的开源框架的整合。这篇笔记详细介绍了如何在项目中使用Spring 2.5以及如何与...