package cn.dao.impl; import java.io.Serializable; import java.util.List; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.stereotype.Repository; @Repository public class BaseDao<T> extends HibernateDaoSupport { /** * 将会话工厂注入给 DAO * @param sessionFactory */ @Autowired public void injectSessionFactory(SessionFactory sessionFactory){ super.setSessionFactory(sessionFactory); } public List<T> findAll(Class<T> entity){ return super.getHibernateTemplate().loadAll(entity); } public Serializable save(T entity){ return super.getHibernateTemplate().save(entity); } }
EmployeeDaoImpl 数据访问层实现
package cn.dao.impl; import java.sql.SQLException; import java.util.List; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.stereotype.Repository; import cn.dao.EmployeeDao; import cn.entity.Employee; @SuppressWarnings("unchecked") @Repository("employeeDao") public class EmployeeDaoImpl extends BaseDao<Employee> implements EmployeeDao { public List<Employee> findAll() { return super.findAll(Employee.class); } public String saveEmployee(Employee employee) { return (String)super.save(employee); } public int deleteEmployee(String id) { return super.getHibernateTemplate().bulkUpdate("delete from Employee e where e.sn=?",id); } public List<Employee> findEmployees( final String name) { //使用Criytera Query return super.getHibernateTemplate().executeFind(new HibernateCallback<List<Employee>>(){ //内部 public List<Employee>doInHibernate(Session session)throws HibernateException, SQLException{ Criteria criteria=session.createCriteria(Employee.class); criteria.add(Restrictions.like("name",name,MatchMode.ANYWHERE)); return criteria.list(); } }); } public long findCount() { return super.getHibernateTemplate().execute(new HibernateCallback<Long>(){ public Long doInHibernate(Session session) throws HibernateException, SQLException { return (Long) session.createQuery("select count(*) from Employee").uniqueResult(); } }); } public List<Employee> findPage(int first, int max) { DetachedCriteria criteria =DetachedCriteria.forClass(Employee.class); criteria.addOrder(Order.desc("sn")); return getHibernateTemplate().findByCriteria(criteria,first,max); } public Employee getEmployee(String sn) { return super.getHibernateTemplate().get(Employee.class, sn); } }
EmployeeBizImpl 业务逻辑层实现
package cn.biz.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.dao.EmployeeDao; import cn.entity.Employee; import cn.biz.EmployeeBiz; @Service("employeeBiz") public class EmployeeBizImpl implements EmployeeBiz{ @Autowired private EmployeeDao employeeDao; //可以不用 set 方法 public Employee login(String sn, String password) { Employee employee=employeeDao.getEmployee(sn); if(employee!=null){ if(employee.getPassword().equals(password)){ return employee; } } return null; } }
EmployeeAction 控制器
package cn.action; import java.util.Map; import javax.annotation.Resource; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import cn.util.Consist; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import cn.biz.EmployeeBiz; import cn.entity.Employee; /** * 由 Spring 管理 * */ @SuppressWarnings("serial") @Controller("employeeAction") @Scope("request") //表示每个请求都会创建一个新的 Action 对象 public class EmployeeAction extends ActionSupport{ @Resource //由 java 提供自动注入注解与 @Autowired 功能相同 //@Qualifier("employeeBiz") 如果名字不同,则用 Qualifier 指定名字 private EmployeeBiz employeeBiz; private Employee employee; public void setEmployeeBiz(EmployeeBiz employeeBiz) { this.employeeBiz = employeeBiz; } public Employee getEmployee() { return employee; } public void setEmployee(Employee employee) { this.employee = employee; } public String login(){ Map<String,Object> session=ActionContext.getContext().getSession(); Employee emp=employeeBiz.login(employee.getSn(), employee.getPassword()); if(emp==null){ addActionError("用户名或密码不正确!"); }else{ if(Consist.EMP_NORMAL.equals(emp.getStatus())){ session.put("employee",emp); return SUCCESS; }else{ addActionError("该用户已经离职,登录失效!"); } } return INPUT; } }
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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 数据源配置 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@localhost:1521:oracle11" /> <property name="username" value="jboa" /> <property name="password" value="123456" /> </bean> <!-- 会话工厂 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.Oracle10gDialect </prop> <prop key="hibernate.show_sql"> true </prop> </props> </property> <property name="mappingResources"> <list> <value>cn/entity/Employee.hbm.xml</value> <value>cn/entity/Department.hbm.xml</value> <value>cn/entity/Position.hbm.xml</value> </list> </property> </bean> <!-- 指定哪些包需要由 Spring 进行管理 --> <context:component-scan base-package="cn"></context:component-scan> </beans>
web.xml 配置
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <listener> <description>Spring的配置</description> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <description>当 Action 配置成 request 或 session 的时候需要加上这个监听器</description> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <filter> <description>解决Hibernate延迟加载的配置</description> <filter-name>OpenSessionInView</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>OpenSessionInView</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <description>struts2的配置</description> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
效果图:
相关推荐
SSH2+注解OA系统是一种基于Spring、Struts2和Hibernate三大开源框架构建的企业级办公自动化(Office Automation,简称OA)系统。这个系统的开发利用了SSH2(Spring、Struts2、Hibernate)的集成优势,提供了高效、...
总结来说,SSH整合OA项目是一个集成了Spring、Struts和Hibernate的Web应用,具备强大的业务处理能力和良好的架构设计。通过提供的数据库脚本和使用说明,开发者可以快速搭建和运行项目,了解和学习SSH框架的整合应用...
SSH 实现OA(办公自动化)系统是基于Java技术栈构建的一种高效、稳定的企业级应用解决方案。SSH 是Spring、Struts 和Hibernate三个开源框架的缩写,它们分别负责应用的依赖注入、视图层和持久层管理。在此项目中,...
**基于SSH的OA系统详解** SSH(Struts2 + Spring + Hibernate)是一个广泛应用于Java Web开发的开源框架组合,常用于构建高效、可维护的企业级应用程序。在这个名为"基于ssh的oa系统"的项目中,SSH框架被用来实现一...
【标题】:“java基于ssh的OA办公系统” 【描述】中的知识点主要涵盖了以下几个方面: 1. **Java**:Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性著称。在OA(Office Automation)...
2,配置声明式事务(使用基于注解的方式) 1,配置 <!-- 配置事务管理器 --> <property name="sessionFactory" ref="sessionFactory"></property> <!-- 配置基于注解的事务支持--> 2,...
总之,SSH2框架的OA系统人员和机构管理模块是一个实用的学习案例,它展示了如何利用Struts2处理Web请求,Hibernate管理数据库,以及Spring进行组件管理和依赖注入。对于初学者来说,深入研究这个案例有助于理解和...
【OA系统SSH 小鸟】是一个基于SSH(Struts2、Spring、Hibernate)技术栈开发的企业级办公自动化(Office Automation)系统。SSH是Java Web开发中的一个流行组合,提供了强大的模型-视图-控制器(MVC)架构模式,用于...
总之,基于SSH的OA工作流源代码是一个全面展示Java Web开发技术的实例,涵盖了MVC架构、对象持久化、事务管理等多个关键领域。通过深入学习和实践,开发者可以提高自己的技术水平,更好地应对企业级应用的挑战。
在SSH2 OA项目中,Spring主要负责管理对象的生命周期和依赖关系,通过配置文件或注解来装配Bean。此外,Spring的AOP模块可用于实现如日志记录、权限检查等横切关注点。Spring的事务管理确保了在数据库操作中的数据...
总之,"OA项目 SSH2 增删改查"是一个典型的Java Web项目实例,它综合运用了SSH2框架的各种特性,实现了组织和人员管理的基本功能,并通过注解和分页技术提升了开发效率和用户体验。这样的项目对学习和实践企业级应用...
在这个OA项目中,Struts2的注解可能被用在Action类和结果映射上,方便实现页面跳转和业务逻辑处理。 Hibernate是Java持久化框架,它简化了数据库操作,通过对象关系映射(Object-Relational Mapping,ORM)将数据库...
总结来说,"SSH框架源代码"提供了网络办公OA系统开发的完整解决方案,包括前端展示、后端业务逻辑处理和数据存储。通过学习和分析这些源代码,开发者可以深入了解SSH框架的运作机制,提升Java Web开发能力,并且能够...
本项目以“OA pagertaglib ssh2 增删改查”为主题,涉及到的关键技术包括SSH2框架、PagerTaglib分页库以及增删改查的基础操作。 首先,SSH2是指Spring、Struts2和Hibernate这三个开源框架的组合,它们是Java Web...
SSH开发的OA(Office Automation)企业办公管理系统源码是一套基于Java技术的高效、稳定且易于维护的企业级应用。SSH是Spring、Struts和Hibernate三个开源框架的简称,它们是Java Web开发中的三大神器,常被联合使用...
《ITCast OA系统详解——基于SSH框架的高效办公自动化实现》 ITCast OA是一款基于SSH(Struts2、Spring、Hibernate)技术栈开发的企业级办公自动化系统,它在2011年由ITCast团队推出的新版本,相较于之前的版本,...
对这个项目的研究,不仅可以深入理解SSH框架的整合应用,还能了解大型OA系统的架构设计、业务流程管理以及如何实现企业级的系统集成。对于提升Java Web开发技能、理解企业信息化建设等方面都有极大的帮助。
5. **事务管理**:Spring提供的声明式事务管理,通过@Transactional注解标记在Service方法上,实现事务的自动提交或回滚。 6. **安全性**:可能使用Spring Security或者Apache Shiro进行权限控制,定义角色、权限,...
AOP则提供了一种模块化的方式,用于处理系统的横切关注点,如日志记录、事务管理等。在源代码中,你会看到Spring配置文件(如applicationContext.xml)中定义了bean,以及如何通过@Autowired注解实现依赖注入。 ...