- 浏览: 25872 次
- 性别:
- 来自: 长沙
文章分类
最新评论
这是spring4的最后一章,前面的学习都是做铺垫,这一章才是真正的实战,所有技术的学习都是为了应付实际项目需求。这一章将详细讲解ssh框架。
本章使用到的知识点较多,直接上代码吧,注释写得很详细。
由于博客单个文件限制10M,所以将lib拆分成3个压缩包上传。请解压lib压缩包到项目的lib下即可运行。
lib列表:
antlr-2.7.7.jar
aopalliance-1.0.jar
asm-3.3.jar
asm-commons-3.3.jar
aspectjweaver.jar
commons-beanutils-1.8.0.jar
commons-collections-3.1.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang-2.4.jar
commons-lang3-3.1.jar
commons-logging-1.1.3.jar
dom4j-1.6.1.jar
ehcache-core-2.4.3.jar
ezmorph-1.0.6.jar
freemarker-2.3.19.jar
hibernate-c3p0-4.3.5.Final.jar
hibernate-commons-annotations-4.0.4.Final.jar
hibernate-core-4.3.5.Final.jar
hibernate-ehcache-4.3.5.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jandex-1.1.0.Final.jar
javassist-3.18.1-GA.jar
jboss-logging-3.1.3.GA.jar
jboss-logging-annotations-1.2.0.Beta1.jar
jboss-transaction-api_1.2_spec-1.0.0.Final.jar
mchange-commons-java-0.2.3.4.jar
mysql-connector-java-3.1.12-bin.jar
ognl-3.0.6.jar
slf4j-api-1.6.1.jar
spring-aop-4.0.6.RELEASE.jar
spring-aspects-4.0.6.RELEASE.jar
spring-beans-4.0.6.RELEASE.jar
spring-context-4.0.6.RELEASE.jar
spring-context-support-4.0.6.RELEASE.jar
spring-core-4.0.6.RELEASE.jar
spring-expression-4.0.6.RELEASE.jar
spring-jdbc-4.0.6.RELEASE.jar
spring-orm-4.0.6.RELEASE.jar
spring-tx-4.0.6.RELEASE.jar
spring-web-4.0.6.RELEASE.jar
spring-webmvc-4.0.6.RELEASE.jar
struts2-core-2.3.16.3.jar
struts2-spring-plugin-2.3.16.3.jar
xwork-core-2.3.16.3.jar
applicationContext.xml
hibernate.cfg.xml
struts.xml
User.java
BaseDao.java
BaseDaOImpl.java
UserService.java
UserServiceImpl.java
UserAction.java
本章使用到的知识点较多,直接上代码吧,注释写得很详细。
由于博客单个文件限制10M,所以将lib拆分成3个压缩包上传。请解压lib压缩包到项目的lib下即可运行。
lib列表:
antlr-2.7.7.jar
aopalliance-1.0.jar
asm-3.3.jar
asm-commons-3.3.jar
aspectjweaver.jar
commons-beanutils-1.8.0.jar
commons-collections-3.1.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang-2.4.jar
commons-lang3-3.1.jar
commons-logging-1.1.3.jar
dom4j-1.6.1.jar
ehcache-core-2.4.3.jar
ezmorph-1.0.6.jar
freemarker-2.3.19.jar
hibernate-c3p0-4.3.5.Final.jar
hibernate-commons-annotations-4.0.4.Final.jar
hibernate-core-4.3.5.Final.jar
hibernate-ehcache-4.3.5.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jandex-1.1.0.Final.jar
javassist-3.18.1-GA.jar
jboss-logging-3.1.3.GA.jar
jboss-logging-annotations-1.2.0.Beta1.jar
jboss-transaction-api_1.2_spec-1.0.0.Final.jar
mchange-commons-java-0.2.3.4.jar
mysql-connector-java-3.1.12-bin.jar
ognl-3.0.6.jar
slf4j-api-1.6.1.jar
spring-aop-4.0.6.RELEASE.jar
spring-aspects-4.0.6.RELEASE.jar
spring-beans-4.0.6.RELEASE.jar
spring-context-4.0.6.RELEASE.jar
spring-context-support-4.0.6.RELEASE.jar
spring-core-4.0.6.RELEASE.jar
spring-expression-4.0.6.RELEASE.jar
spring-jdbc-4.0.6.RELEASE.jar
spring-orm-4.0.6.RELEASE.jar
spring-tx-4.0.6.RELEASE.jar
spring-web-4.0.6.RELEASE.jar
spring-webmvc-4.0.6.RELEASE.jar
struts2-core-2.3.16.3.jar
struts2-spring-plugin-2.3.16.3.jar
xwork-core-2.3.16.3.jar
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" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <!-- 定义数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <property name="url" value="jdbc:mysql://localhost:3306/test"> </property> <property name="username" value="root"></property> <property name="password" value="root"></property> </bean> <!-- session工厂 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="configLocation" value="classpath:hibernate.cfg.xml"/> <!-- 自动扫描注解方式配置的hibernate类文件 --> <property name="packagesToScan"> <list> <value>com.fx.entity</value> </list> </property> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- 配置事务通知属性 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <!-- 定义事务传播属性 --> <tx:attributes> <tx:method name="insert*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="edit*" propagation="REQUIRED" /> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="new*" propagation="REQUIRED" /> <tx:method name="set*" propagation="REQUIRED" /> <tx:method name="remove*" propagation="REQUIRED" /> <tx:method name="delete*" propagation="REQUIRED" /> <tx:method name="change*" propagation="REQUIRED" /> <tx:method name="get*" propagation="REQUIRED" read-only="true" /> <tx:method name="find*" propagation="REQUIRED" read-only="true" /> <tx:method name="load*" propagation="REQUIRED" read-only="true" /> <tx:method name="*" propagation="REQUIRED" read-only="true" /> </tx:attributes> </tx:advice> <!-- 配置事务切面 --> <aop:config> <aop:pointcut id="serviceOperation" expression="execution(* com.fx.service..*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" /> </aop:config> <!-- 自动加载构建bean --> <context:component-scan base-package="com.fx" /> </beans>
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!--方言--> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- 显示sql语句 --> <property name="show_sql">true</property> <!-- 自动更新 --> <property name="hbm2ddl.auto">update</property> </session-factory> </hibernate-configuration>
struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.action.extension" value="action" /> <!-- 声明action,访问路径,继承默认的struts --> <package name="s2sh" namespace="/user" extends="struts-default"> <!-- 登录访问路径:/user/user_login.action user_*表示action访问路径由user_开头,{1}表示方法名称为UserAction中login()方法 --> <action name="user_*" method="{1}" class="com.fx.action.UserAction"> <result name="success">/success.jsp</result> <result name="error">/index.jsp</result> </action> </package> </struts>
User.java
package com.fx.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name="t_user") public class User { private Integer id; private String userName; private String password; @Id @GenericGenerator(name = "generator", strategy = "native") @GeneratedValue(generator = "generator") @Column(name = "id", length=11) public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Column(name = "userName", length = 20) public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } @Column(name = "password", length = 20) public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
BaseDao.java
package com.fx.dao; import java.io.Serializable; import java.util.List; /** * 基础数据库操作类 * */ public interface BaseDao<T> { /** * 保存一个对象 * * @param o * @return */ public Serializable save(T o); /** * 删除一个对象 * * @param o */ public void delete(T o); /** * 更新一个对象 * * @param o */ public void update(T o); /** * 保存或更新对象 * * @param o */ public void saveOrUpdate(T o); /** * 查询 * * @param hql * @return */ public List<T> find(String hql); /** * 查询集合 * * @param hql * @param param * @return */ public List<T> find(String hql, Object[] param); /** * 查询集合 * * @param hql * @param param * @return */ public List<T> find(String hql, List<Object> param); /** * 查询集合(带分页) * * @param hql * @param param * @param page * 查询第几页 * @param rows * 每页显示几条记录 * @return */ public List<T> find(String hql, Object[] param, Integer page, Integer rows); /** * 查询集合(带分页) * * @param hql * @param param * @param page * @param rows * @return */ public List<T> find(String hql, List<Object> param, Integer page, Integer rows); /** * 获得一个对象 * * @param c * 对象类型 * @param id * @return Object */ public T get(Class<T> c, Serializable id); /** * 获得一个对象 * * @param hql * @param param * @return Object */ public T get(String hql, Object[] param); /** * 获得一个对象 * * @param hql * @param param * @return */ public T get(String hql, List<Object> param); /** * select count(*) from 类 * * @param hql * @return */ public Long count(String hql); /** * select count(*) from 类 * * @param hql * @param param * @return */ public Long count(String hql, Object[] param); /** * select count(*) from 类 * * @param hql * @param param * @return */ public Long count(String hql, List<Object> param); /** * 执行HQL语句 * * @param hql * @return 响应数目 */ public Integer executeHql(String hql); /** * 执行HQL语句 * * @param hql * @param param * @return 响应数目 */ public Integer executeHql(String hql, Object[] param); /** * 执行HQL语句 * * @param hql * @param param * @return */ public Integer executeHql(String hql, List<Object> param); }
BaseDaOImpl.java
package com.fx.dao.impl; import java.io.Serializable; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import com.fx.dao.BaseDao; @Repository("baseDao") @SuppressWarnings("all") public class BaseDaOImpl<T> implements BaseDao<T> { private SessionFactory sessionFactory; public SessionFactory getSessionFactory() { return sessionFactory; } @Autowired public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } private Session getCurrentSession() { return sessionFactory.getCurrentSession(); } public Serializable save(T o) { return this.getCurrentSession().save(o); } public void delete(T o) { this.getCurrentSession().delete(o); } public void update(T o) { this.getCurrentSession().update(o); } public void saveOrUpdate(T o) { this.getCurrentSession().saveOrUpdate(o); } public List<T> find(String hql) { return this.getCurrentSession().createQuery(hql).list(); } public List<T> find(String hql, Object[] param) { Query q = this.getCurrentSession().createQuery(hql); if (param != null && param.length > 0) { for (int i = 0; i < param.length; i++) { q.setParameter(i, param[i]); } } return q.list(); } public List<T> find(String hql, List<Object> param) { Query q = this.getCurrentSession().createQuery(hql); if (param != null && param.size() > 0) { for (int i = 0; i < param.size(); i++) { q.setParameter(i, param.get(i)); } } return q.list(); } public List<T> find(String hql, Object[] param, Integer page, Integer rows) { if (page == null || page < 1) { page = 1; } if (rows == null || rows < 1) { rows = 10; } Query q = this.getCurrentSession().createQuery(hql); if (param != null && param.length > 0) { for (int i = 0; i < param.length; i++) { q.setParameter(i, param[i]); } } return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list(); } public List<T> find(String hql, List<Object> param, Integer page, Integer rows) { if (page == null || page < 1) { page = 1; } if (rows == null || rows < 1) { rows = 10; } Query q = this.getCurrentSession().createQuery(hql); if (param != null && param.size() > 0) { for (int i = 0; i < param.size(); i++) { q.setParameter(i, param.get(i)); } } return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list(); } public T get(Class<T> c, Serializable id) { return (T) this.getCurrentSession().get(c, id); } public T get(String hql, Object[] param) { List<T> l = this.find(hql, param); if (l != null && l.size() > 0) { return l.get(0); } else { return null; } } public T get(String hql, List<Object> param) { List<T> l = this.find(hql, param); if (l != null && l.size() > 0) { return l.get(0); } else { return null; } } public Long count(String hql) { return (Long) this.getCurrentSession().createQuery(hql).uniqueResult(); } public Long count(String hql, Object[] param) { Query q = this.getCurrentSession().createQuery(hql); if (param != null && param.length > 0) { for (int i = 0; i < param.length; i++) { q.setParameter(i, param[i]); } } return (Long) q.uniqueResult(); } public Long count(String hql, List<Object> param) { Query q = this.getCurrentSession().createQuery(hql); if (param != null && param.size() > 0) { for (int i = 0; i < param.size(); i++) { q.setParameter(i, param.get(i)); } } return (Long) q.uniqueResult(); } public Integer executeHql(String hql) { return this.getCurrentSession().createQuery(hql).executeUpdate(); } public Integer executeHql(String hql, Object[] param) { Query q = this.getCurrentSession().createQuery(hql); if (param != null && param.length > 0) { for (int i = 0; i < param.length; i++) { q.setParameter(i, param[i]); } } return q.executeUpdate(); } public Integer executeHql(String hql, List<Object> param) { Query q = this.getCurrentSession().createQuery(hql); if (param != null && param.size() > 0) { for (int i = 0; i < param.size(); i++) { q.setParameter(i, param.get(i)); } } return q.executeUpdate(); } }
UserService.java
package com.fx.service; import java.util.List; import com.fx.entity.User; public interface UserService { public void saveUser(User user); public void updateUser(User user); public User findUserById(int id); public void deleteUser(User user); public List<User> findAllList(); public User findUserByNameAndPassword(User user); }
UserServiceImpl.java
package com.fx.service.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.fx.dao.BaseDao; import com.fx.entity.User; import com.fx.service.UserService; @Service("userService") public class UserServiceImpl implements UserService{ @Resource private BaseDao<User> baseDao; @Override public void saveUser(User user) { // TODO Auto-generated method stub baseDao.save(user); } @Override public void updateUser(User user) { // TODO Auto-generated method stub baseDao.update(user); } @Override public User findUserById(int id) { return baseDao.get(User.class, id); } @Override public void deleteUser(User user) { baseDao.delete(user); } @Override public List<User> findAllList() { return baseDao.find("from User"); } @Override public User findUserByNameAndPassword(User user) { return baseDao.get("from User u where u.userName=? and u.password=?", new Object[]{user.getUserName(),user.getPassword()}); } }
UserAction.java
package com.fx.action; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.interceptor.ServletRequestAware; import org.springframework.stereotype.Controller; import com.fx.entity.User; import com.fx.service.UserService; import com.opensymphony.xwork2.ActionSupport; @Controller public class UserAction extends ActionSupport implements ServletRequestAware { /** * */ private static final long serialVersionUID = 1L; private HttpServletRequest request; @Resource private UserService userService; private User user; private String error; public String login() throws Exception { HttpSession session = request.getSession(); User currentUser = userService.findUserByNameAndPassword(user); if (currentUser != null) { session.setAttribute("currentUser", currentUser); return SUCCESS; } else { error = "用后名或者密码错误!"; return ERROR; } } @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String getError() { return error; } public void setError(String error) { this.error = error; } }
- S2SH.zip (24.7 KB)
- 下载次数: 0
- lib1.zip (5.6 MB)
- 下载次数: 0
- lib2.zip (6.7 MB)
- 下载次数: 0
- lib3.zip (6.1 MB)
- 下载次数: 0
发表评论
-
第十四章 Spring4 切面事物与事物通知与传播行为
2017-08-21 10:07 465配置事务切面: <!-- 配置事务切面 ... -
第十三章 Spring4 编程式事物管理
2017-08-21 09:37 388事务是一系列的动作,它们综合在一起才是一个完整的工作单 ... -
第十二章 Spring4 支持参数命名的JdbcTemplate
2017-08-21 09:31 405NamedParameterJdbcTemplate 的使用; ... -
第十一章 Spring4 JDBC
2017-08-18 14:08 257一,配置数据源 dbcp; <?xml ve ... -
第十章 Spring AOP之通知
2017-08-18 10:26 666AOP之通知: 通过配置spring,将通知切入在方法执行前 ... -
第九章 Spring4 AOP
2017-08-18 10:10 314AOP概念: 面向切面编程(也叫面向方面编程):Aspect ... -
第八章 Spring4 bean作用范围
2017-08-18 09:59 367<?xml version="1.0& ... -
第七章 Spring4 继承、依赖、引用
2017-08-18 09:48 363<?xml version="1.0& ... -
第六章 Spring4 方法替换
2017-08-17 10:12 319<?xml version="1.0& ... -
第五章 Spring4 自动装配、方法注入
2017-08-16 15:13 372Spring 自动装配: 通过配置 default-aut ... -
第四章 Spring4 注入参数
2017-08-16 14:48 341<?xml version="1. ... -
第三章 Spring4 依赖注入
2017-08-16 14:38 342第一节:装配一个 bean 第二节:依赖注入 IOC ... -
第二章 Spring4 IOC
2017-08-16 14:30 346第一节:spring ioc 简介 IOC(控制反转:In ... -
第一章 Spring4 简介及获取Bean
2017-08-16 14:08 373第一节:Spring4 简介 Spring是一个开源框架,S ...
相关推荐
Java Web整合开发实战--基于Struts 2+Hibernate+Spring.pdf 1章 Web的工作机制 2章 搭建Java Web开发环境 3章 JSP及其相关技术 2篇 表现层框架Struts技术 4章 Struts快速上手 5章 解密Struts之核心文件 6章 ...
《精通JavaEE Eclipse Struts2 Hibernate Spring整合应用案例 源代码15章 noticemanager》这个资源是针对Java企业级开发的学习资料,旨在帮助开发者深入理解和实践JavaEE平台上的Struts2、Hibernate和Spring这三个...
《精通Java EE—Eclipse Struts2 Hibernate Spring整合应用案例(第2版)》是一部针对Java企业级开发的深入教程,特别关注了四个关键的技术框架:Eclipse、Struts2、Hibernate和Spring。这些框架在现代Java应用开发中...
第十五章 在线考试系统 15.1 系统概述 15.2 需求分析 15.2.1 系统用例图 15.2.2 需求规格说明书 15.3 系统设计 15.3.1 设计视图层 15.3.2 设计持久层 15.3.3 设计业务逻辑层 15.3.4 设计控制层 15.4 架构设计和环境...
第十五章 在线考试系统 15.1 系统概述 15.2 需求分析 15.2.1 系统用例图 15.2.2 需求规格说明书 15.3 系统设计 15.3.1 设计视图层 15.3.2 设计持久层 15.3.3 设计业务逻辑层 15.3.4 设计控制层 15.4 架构设计和环境...
第十五章 在线考试系统 15.1 系统概述 15.2 需求分析 15.2.1 系统用例图 15.2.2 需求规格说明书 15.3 系统设计 15.3.1 设计视图层 15.3.2 设计持久层 15.3.3 设计业务逻辑层 15.3.4 设计控制层 15.4 架构设计和环境...
【精通Java EE项目案例-基于Eclipse Spring Struts Hibernate光盘源码(第二版)】这一资源涵盖了Java企业级开发中的关键技术和实践,是学习和深入理解Java EE应用开发的宝贵资料。本资源以Eclipse作为集成开发环境,...
第11章 Struts 2的Ajax支持,第12章 使用FreeMarker充当表现层,第13章 整合Spring,第14章 整合JSF,第15章 整合SiteMesh,第16章 整合JasperReports,第17章 整合JFreeChart,第18章 整合Struts 1,第19章 整合...
入门前选薄书,入门后选厚书 第1章 web应用开发简介 1 第2章 java ee运行及开发环境 15 第3章 jsp和servlet 33 ...第14章 spring与struts 2、hibernate框架的整合基础 277 第15章 图书馆管理系统 294
入门前选薄书,入门后选厚书 第1章 web应用开发简介 1 第2章 java ee运行及开发环境 15 第3章 jsp和servlet 33 ...第14章 spring与struts 2、hibernate框架的整合基础 277 第15章 图书馆管理系统 294
在Java Web开发中,SSHF(Struts2、Spring、Hibernate和FreeMarker)是一个常见的技术栈,用于构建高效、可维护的MVC应用程序。这些框架的整合能够提供强大的功能,如模型-视图-控制器架构、依赖注入、持久化管理和...
入门前选薄书,入门后选厚书 第1章 web应用开发简介 1 第2章 java ee运行及开发环境 15 第3章 jsp和servlet 33 ...第14章 spring与struts 2、hibernate框架的整合基础 277 第15章 图书馆管理系统 294
入门前选薄书,入门后选厚书 第1章 web应用开发简介 1 第2章 java ee运行及开发环境 15 第3章 jsp和servlet 33 ...第14章 spring与struts 2、hibernate框架的整合基础 277 第15章 图书馆管理系统 294
入门前选薄书,入门后选厚书 因文件长度,分5部分 第1章 web应用开发简介 1 第2章 java ee运行及开发环境 15 ...第14章 spring与struts 2、hibernate框架的整合基础 277 第15章 图书馆管理系统 294
第十五章的PPT详细讲解了Hibernate,包括实体管理、持久化、查询语言HQL等,让开发者无需直接编写SQL即可操作数据库。 5. **Struts**: Struts是基于MVC(Model-View-Controller)设计模式的Web应用框架,用于构建...