`
chaoyi
  • 浏览: 309208 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SSH 注解事务处理改造OA

 
阅读更多
BaseDao 数据访问层实现
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>

 

效果图:



 

 

  • 大小: 37.6 KB
  • 大小: 54.4 KB
分享到:
评论

相关推荐

    ssh2+注解OA系统

    SSH2+注解OA系统是一种基于Spring、Struts2和Hibernate三大开源框架构建的企业级办公自动化(Office Automation,简称OA)系统。这个系统的开发利用了SSH2(Spring、Struts2、Hibernate)的集成优势,提供了高效、...

    SSH整合OA项目

    总结来说,SSH整合OA项目是一个集成了Spring、Struts和Hibernate的Web应用,具备强大的业务处理能力和良好的架构设计。通过提供的数据库脚本和使用说明,开发者可以快速搭建和运行项目,了解和学习SSH框架的整合应用...

    SSH实现OA系统

    SSH 实现OA(办公自动化)系统是基于Java技术栈构建的一种高效、稳定的企业级应用解决方案。SSH 是Spring、Struts 和Hibernate三个开源框架的缩写,它们分别负责应用的依赖注入、视图层和持久层管理。在此项目中,...

    基于ssh的oa系统

    **基于SSH的OA系统详解** SSH(Struts2 + Spring + Hibernate)是一个广泛应用于Java Web开发的开源框架组合,常用于构建高效、可维护的企业级应用程序。在这个名为"基于ssh的oa系统"的项目中,SSH框架被用来实现一...

    java基于ssh的OA办公系统

    【标题】:“java基于ssh的OA办公系统” 【描述】中的知识点主要涵盖了以下几个方面: 1. **Java**:Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性著称。在OA(Office Automation)...

    OA项目SSH整合框架

    2,配置声明式事务(使用基于注解的方式) 1,配置 &lt;!-- 配置事务管理器 --&gt; &lt;property name="sessionFactory" ref="sessionFactory"&gt;&lt;/property&gt; &lt;!-- 配置基于注解的事务支持--&gt; 2,...

    使用SSH2框架实现的OA系统人员和机构管理

    总之,SSH2框架的OA系统人员和机构管理模块是一个实用的学习案例,它展示了如何利用Struts2处理Web请求,Hibernate管理数据库,以及Spring进行组件管理和依赖注入。对于初学者来说,深入研究这个案例有助于理解和...

    OA系统SSH 小鸟

    【OA系统SSH 小鸟】是一个基于SSH(Struts2、Spring、Hibernate)技术栈开发的企业级办公自动化(Office Automation)系统。SSH是Java Web开发中的一个流行组合,提供了强大的模型-视图-控制器(MVC)架构模式,用于...

    基于SSH的OA工作流源代码

    总之,基于SSH的OA工作流源代码是一个全面展示Java Web开发技术的实例,涵盖了MVC架构、对象持久化、事务管理等多个关键领域。通过深入学习和实践,开发者可以提高自己的技术水平,更好地应对企业级应用的挑战。

    SSH2 OA项目

    在SSH2 OA项目中,Spring主要负责管理对象的生命周期和依赖关系,通过配置文件或注解来装配Bean。此外,Spring的AOP模块可用于实现如日志记录、权限检查等横切关注点。Spring的事务管理确保了在数据库操作中的数据...

    OA 项目 SSH2 增删改查

    总之,"OA项目 SSH2 增删改查"是一个典型的Java Web项目实例,它综合运用了SSH2框架的各种特性,实现了组织和人员管理的基本功能,并通过注解和分页技术提升了开发效率和用户体验。这样的项目对学习和实践企业级应用...

    标签: OA 项目 SSH2 增删改查

    在这个OA项目中,Struts2的注解可能被用在Action类和结果映射上,方便实现页面跳转和业务逻辑处理。 Hibernate是Java持久化框架,它简化了数据库操作,通过对象关系映射(Object-Relational Mapping,ORM)将数据库...

    SSH框架源代码

    总结来说,"SSH框架源代码"提供了网络办公OA系统开发的完整解决方案,包括前端展示、后端业务逻辑处理和数据存储。通过学习和分析这些源代码,开发者可以深入了解SSH框架的运作机制,提升Java Web开发能力,并且能够...

    OA pagertaglib ssh2 增删改查

    本项目以“OA pagertaglib ssh2 增删改查”为主题,涉及到的关键技术包括SSH2框架、PagerTaglib分页库以及增删改查的基础操作。 首先,SSH2是指Spring、Struts2和Hibernate这三个开源框架的组合,它们是Java Web...

    ssh开发OA企业办公管理系统源码

    SSH开发的OA(Office Automation)企业办公管理系统源码是一套基于Java技术的高效、稳定且易于维护的企业级应用。SSH是Spring、Struts和Hibernate三个开源框架的简称,它们是Java Web开发中的三大神器,常被联合使用...

    itcastOA.rar_ itcastoa_itcast oa _itcast-oa_itcast_oa_itcastoa

    《ITCast OA系统详解——基于SSH框架的高效办公自动化实现》 ITCast OA是一款基于SSH(Struts2、Spring、Hibernate)技术栈开发的企业级办公自动化系统,它在2011年由ITCast团队推出的新版本,相较于之前的版本,...

    大连晚报OA系统,SSH框架的整合

    对这个项目的研究,不仅可以深入理解SSH框架的整合应用,还能了解大型OA系统的架构设计、业务流程管理以及如何实现企业级的系统集成。对于提升Java Web开发技能、理解企业信息化建设等方面都有极大的帮助。

    ssh整合代码

    5. **事务管理**:Spring提供的声明式事务管理,通过@Transactional注解标记在Service方法上,实现事务的自动提交或回滚。 6. **安全性**:可能使用Spring Security或者Apache Shiro进行权限控制,定义角色、权限,...

    简易OA办公系统源代码

    AOP则提供了一种模块化的方式,用于处理系统的横切关注点,如日志记录、事务管理等。在源代码中,你会看到Spring配置文件(如applicationContext.xml)中定义了bean,以及如何通过@Autowired注解实现依赖注入。 ...

Global site tag (gtag.js) - Google Analytics