`
yzz9i
  • 浏览: 222289 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

实现了hibernate 、struts、spring 的整合 有员工的注册、分页、删除、修改功能。还有多文件上传、无刷新上传【业务后台】

阅读更多
实现了hibernate 、struts、spring 的整合 有员工的注册、分页、删除、修改功能。还有多文件上传、无刷新上传

form:
package com.sunjob.struts.forms;

import java.sql.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import org.springframework.web.struts.DelegatingActionProxy;

import com.pojos.Dep;

/*
 * 复制了pojo
 *   1.改java.util.Date为java.sql.Date
 *   2.爱好要改成数组,且名字请修改(除了日期型外,改了类型就要改名字)
 *   3.不能出现pojo类,把部门改部门id
 *   4.文件上传,请把String改成FormFile
 *   最后生成set/get方法
 */
public class EmpForm extends ActionForm {
	private Integer empId;
	private int depid; // 不能出现pojo对象,改成类型,改了名字
	private String empName;
	private Integer empSex;
	private String[] empLoves; // 改成数组,请改名字
	private FormFile empFacePics; // 文件上传,改成FormFile且改了名字
	private Date empBirthday; // java.sql包
	
	//赋初值
	@Override
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		 empSex = 1;
		 depid = 2;
		 empLoves = new String[]{"吃","乐"};
		 empBirthday = new Date(System.currentTimeMillis());
	}

	public Integer getEmpId() {
		return empId;
	}

	public void setEmpId(Integer empId) {
		this.empId = empId;
	}

	public int getDepid() {
		return depid;
	}

	public void setDepid(int depid) {
		this.depid = depid;
	}

	public String getEmpName() {
		return empName;
	}

	public void setEmpName(String empName) {
		this.empName = empName;
	}

	public Integer getEmpSex() {
		return empSex;
	}

	public void setEmpSex(Integer empSex) {
		this.empSex = empSex;
	}

	public String[] getEmpLoves() {
		return empLoves;
	}

	public void setEmpLoves(String[] empLoves) {
		this.empLoves = empLoves;
	}

	public FormFile getEmpFacePics() {
		return empFacePics;
	}

	public void setEmpFacePics(FormFile empFacePics) {
		this.empFacePics = empFacePics;
	}

	public Date getEmpBirthday() {
		return empBirthday;
	}

	public void setEmpBirthday(Date empBirthday) {
		this.empBirthday = empBirthday;
	}
}



action:
package com.sunjob.struts.actions;


import java.io.FileOutputStream;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.dozer.util.mapping.DozerBeanMapper;

import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.upload.FormFile;

import com.pojos.Emp;
import com.service.IEmpService;
import com.sunjob.struts.forms.EmpForm;

public class EmpAction extends DispatchAction {
	private IEmpService iempService;
	
	

	public void setIempService(IEmpService iempService) {
		this.iempService = iempService;
	}
	
	//多文件上传
	public ActionForward fileupload(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		//得到文件上传集合(界面上name作为键,FormFile作为值)
		Map<String,FormFile> map = form.getMultipartRequestHandler().getFileElements();
		
		//得到所有键
		Set<String> files = map.keySet();
		for (String key : files) { //文件name
			FormFile formFile = map.get(key);
			if (formFile != null && formFile.toString().length()>0) {
				String filename = formFile.getFileName(); // 文件名字
				byte[] filedata = formFile.getFileData(); // 文件内容
				// 虚转实
				String realPath = request.getSession().getServletContext()
						.getRealPath("/upload");
				FileOutputStream fileOutputStream = new FileOutputStream(realPath
						+ "/" + filename); // 输出流,写文件
				fileOutputStream.write(filedata); // 把数组内容写文件
				fileOutputStream.close();// 关闭流
				
				//empPojo.setEmpFacePic(filename); //文件名写数据库
			}
		}
		
		return null;
	}
	
	//根据主键查emp转到修改界面
	public ActionForward getEmpById2UpdateView(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		//根据主键查找emp
		 int id = Integer.parseInt(request.getParameter("id"));
		 Emp empPojo = iempService.findEmpById(id);
		 EmpForm empForm = (EmpForm) form;
		 //pojo-->empForm
		 DozerBeanMapper beanMapper = new DozerBeanMapper();
		 beanMapper.map(empPojo, empForm);
		 //部门
		 if (empPojo.getDep()!=null)
			 empForm.setDepid(empPojo.getDep().getDepId());
		 //爱好
		 if (empPojo.getEmpLove()!=null){
			 empForm.setEmpLoves(empPojo.getEmpLove().split(";"));
		 }
		 
         //找部门
	    List deps = iempService.getAllDeps();
	    request.setAttribute("deps", deps);
		
	    
	    return new ActionForward("/update.jsp");
		 
		 
	}

	// 真正注册
	public ActionForward regist(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		EmpForm empForm = (EmpForm) form;
		Emp empPojo = new Emp();
		// form内容给pojo
		DozerBeanMapper beanMapper = new DozerBeanMapper();
		beanMapper.map(empForm, empPojo); // 前面-->后面
		//BeanUtils.copyProperties(empPojo, empForm); //后面-->前面
		// 手工处理部门、爱好,玉照
		empPojo.setDep(iempService.findDepById(empForm.getDepid()));
		String[] loves = empForm.getEmpLoves();
		if (loves != null) {
			empPojo.setEmpLove(StringUtils.join(loves, ";"));
		}
		// 玉照
		
		
		FormFile formFile = empForm.getEmpFacePics();
		
		if (formFile != null) {
			String filename = formFile.getFileName(); // 文件名字
			byte[] filedata = formFile.getFileData(); // 文件内容
			// 虚转实
			String realPath = request.getSession().getServletContext()
					.getRealPath("/upload");
			FileOutputStream fileOutputStream = new FileOutputStream(realPath
					+ "/" + filename); // 输出流,写文件
			fileOutputStream.write(filedata); // 把数组内容写文件
			fileOutputStream.close();// 关闭流
			
			empPojo.setEmpFacePic(filename); //文件名写数据库
		}
		
		//注册
		iempService.registEmp(empPojo);
		
		return fenye(mapping, form, request, response);
		
		

	}
	
	// 真正修改
	public ActionForward update(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		EmpForm empForm = (EmpForm) form;
		
		//修改要查找
		Emp empPojo = iempService.findEmpById(empForm.getEmpId());
		// form内容给pojo
		DozerBeanMapper beanMapper = new DozerBeanMapper();
		beanMapper.map(empForm, empPojo); // 前面-->后面
		//BeanUtils.copyProperties(empPojo, empForm); //后面-->前面
		// 手工处理部门、爱好,玉照
		empPojo.setDep(iempService.findDepById(empForm.getDepid()));
		String[] loves = empForm.getEmpLoves();
		if (loves != null) {
			empPojo.setEmpLove(StringUtils.join(loves, ";"));
		}
		// 玉照
		
		
		FormFile formFile = empForm.getEmpFacePics();
		
		if (formFile != null && formFile.toString().length()>0) {
			String filename = formFile.getFileName(); // 文件名字
			
			byte[] filedata = formFile.getFileData(); // 文件内容
			// 虚转实
			String realPath = request.getSession().getServletContext()
					.getRealPath("/upload");
			FileOutputStream fileOutputStream = new FileOutputStream(realPath
					+ "/" + filename); // 输出流,写文件
			fileOutputStream.write(filedata); // 把数组内容写文件
			fileOutputStream.close();// 关闭流
			
			empPojo.setEmpFacePic(filename); //文件名写数据库
		}
		
		//修改
		iempService.updateEmp(empPojo);
		
		return fenye(mapping, form, request, response);
		
		

	}

	// 注册,先查部门,然转到注册页面
	public ActionForward getDep2Regist(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		List deps = iempService.getAllDeps();
		request.setAttribute("deps", deps);
		return new ActionForward("/regist.jsp");

	}

	// 分页
	public ActionForward fenye(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		// 求第几页
		String pageString = request.getParameter("page");
		int page = 1;
		if (pageString != null)
			page = Integer.parseInt(pageString);

		// 调用分页
		int size = 3;
		Map map = iempService.fenye(page, size);

		request.setAttribute("map", map);

		return new ActionForward("/show.jsp");
	}

}



server:
package com.service;

import java.util.List;
import java.util.Map;

import com.dao.DepDAO;
import com.dao.EmpDAO;
import com.pojos.Dep;
import com.pojos.Emp;

public class EmpServiceImpl implements IEmpService {
	private DepDAO depDAO;
	private EmpDAO empDAO;

	public void setDepDAO(DepDAO depDAO) {
		this.depDAO = depDAO;
	}

	public void setEmpDAO(EmpDAO empDAO) {
		this.empDAO = empDAO;
	}
	
	//注册
	/* (non-Javadoc)
	 * @see com.service.IEmpService#registEmp(com.pojos.Emp)
	 */
	public void registEmp(Emp emp){
		empDAO.save(emp);
	}
	
	//删除
	/* (non-Javadoc)
	 * @see com.service.IEmpService#delEmpById(int)
	 */
	public void delEmpById(int id){
		empDAO.delete(empDAO.findById(id));
	}
	
	//修改
	/* (non-Javadoc)
	 * @see com.service.IEmpService#updateEmp(com.pojos.Emp)
	 */
	public void updateEmp(Emp emp){
		empDAO.merge(emp);
	}
	
	//分页
	/* (non-Javadoc)
	 * @see com.service.IEmpService#fenye(int, int)
	 */
	public Map fenye(int page,int size){
		
		return empDAO.fenye(page,size);
	}

	public List getAllDeps() {
		return depDAO.findAll();
	}

	public Dep findDepById(int depid) {
		return depDAO.findById(depid);
	}

	public Emp findEmpById(int id) {
		// TODO Auto-generated method stub
		return empDAO.findById(id);
	}
	

}


dao:
package com.dao;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.pojos.Emp;

/**
 	* A data access object (DAO) providing persistence and search support for Emp entities.
 			* Transaction control of the save(), update() and delete() operations 
		can directly support Spring container-managed transactions or they can be augmented	to handle user-managed Spring transactions. 
		Each of these methods provides additional information for how to configure it for the desired type of transaction control. 	
	 * @see com.pojos.Emp
  * @author MyEclipse Persistence Tools 
 */

public class EmpDAO extends HibernateDaoSupport  {
    private static final Log log = LogFactory.getLog(EmpDAO.class);
	//property constants
	public static final String EMP_NAME = "empName";
	public static final String EMP_SEX = "empSex";
	public static final String EMP_LOVE = "empLove";
	public static final String EMP_FACE_PIC = "empFacePic";



	protected void initDao() {
		//do nothing
	}
    
    public void save(Emp transientInstance) {
        log.debug("saving Emp instance");
        try {
            getHibernateTemplate().save(transientInstance);
            log.debug("save successful");
        } catch (RuntimeException re) {
            log.error("save failed", re);
            throw re;
        }
    }
    
	public void delete(Emp persistentInstance) {
        log.debug("deleting Emp instance");
        try {
            getHibernateTemplate().delete(persistentInstance);
            log.debug("delete successful");
        } catch (RuntimeException re) {
            log.error("delete failed", re);
            throw re;
        }
    }
    
    public Emp findById( java.lang.Integer id) {
        log.debug("getting Emp instance with id: " + id);
        try {
            Emp instance = (Emp) getHibernateTemplate()
                    .get("com.pojos.Emp", id);
            return instance;
        } catch (RuntimeException re) {
            log.error("get failed", re);
            throw re;
        }
    }
    
    
    public List findByExample(Emp instance) {
        log.debug("finding Emp instance by example");
        try {
            List results = getHibernateTemplate().findByExample(instance);
            log.debug("find by example successful, result size: " + results.size());
            return results;
        } catch (RuntimeException re) {
            log.error("find by example failed", re);
            throw re;
        }
    }    
    
    public List findByProperty(String propertyName, Object value) {
      log.debug("finding Emp instance with property: " + propertyName
            + ", value: " + value);
      try {
         String queryString = "from Emp as model where model." 
         						+ propertyName + "= ?";
		 return getHibernateTemplate().find(queryString, value);
      } catch (RuntimeException re) {
         log.error("find by property name failed", re);
         throw re;
      }
	}

	public List findByEmpName(Object empName
	) {
		return findByProperty(EMP_NAME, empName
		);
	}
	
	public List findByEmpSex(Object empSex
	) {
		return findByProperty(EMP_SEX, empSex
		);
	}
	
	public List findByEmpLove(Object empLove
	) {
		return findByProperty(EMP_LOVE, empLove
		);
	}
	
	public List findByEmpFacePic(Object empFacePic
	) {
		return findByProperty(EMP_FACE_PIC, empFacePic
		);
	}
	

	public List findAll() {
		log.debug("finding all Emp instances");
		try {
			String queryString = "from Emp";
		 	return getHibernateTemplate().find(queryString);
		} catch (RuntimeException re) {
			log.error("find all failed", re);
			throw re;
		}
	}
	
    public Emp merge(Emp detachedInstance) {
        log.debug("merging Emp instance");
        try {
            Emp result = (Emp) getHibernateTemplate()
                    .merge(detachedInstance);
            log.debug("merge successful");
            return result;
        } catch (RuntimeException re) {
            log.error("merge failed", re);
            throw re;
        }
    }

    public void attachDirty(Emp instance) {
        log.debug("attaching dirty Emp instance");
        try {
            getHibernateTemplate().saveOrUpdate(instance);
            log.debug("attach successful");
        } catch (RuntimeException re) {
            log.error("attach failed", re);
            throw re;
        }
    }
    
    public void attachClean(Emp instance) {
        log.debug("attaching clean Emp instance");
        try {
            getHibernateTemplate().lock(instance, LockMode.NONE);
            log.debug("attach successful");
        } catch (RuntimeException re) {
            log.error("attach failed", re);
            throw re;
        }
    }

	public static EmpDAO getFromApplicationContext(ApplicationContext ctx) {
    	return (EmpDAO) ctx.getBean("EmpDAO");
	}

	public Map fenye(final Integer page, final Integer size) {
		//总条数
		List listSum = getHibernateTemplate().find("select count(*) from Emp");
		int  sum  = Integer.parseInt(listSum.get(0).toString());
		//总页数
		int  count =(int) Math.ceil(1.0*sum/size);
		//越界处理
		final int page2 = page<1 ? 1: (page>count ? count :page);
		//查
		final String hql = "from Emp";
		List  list = getHibernateTemplate().executeFind(new HibernateCallback(){

			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				Query query = session.createQuery(hql);
				if (page!=null && size!=null)
					query.setFirstResult((page2-1)*size).setMaxResults(size);
                				
				return query.list();
			}});
		
		//保存map
		Map map = new HashMap();
		map.put("page", page2);
		map.put("size", size);
		map.put("count", count);
		map.put("list", list);
		
		
		return map;
	}
}

分享到:
评论
1 楼 sgq0085 2011-04-06  
楼主POJO类里面有问题,在POJO类里确实应该应用java.util.Date。在配置文件中对应该属性的SQL数据中才会采用到3种日期中java.sql.Date。
另外,如果持久层用的是Hibernate的话,配置文件中也可以java.util.Date。会自动帮你要保存的日期类型。

相关推荐

    struts spring hibernate 登陆 SSH整合分页功能

    struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页

    STRUTS2+HIBERNATE详细的分页实现代码详细的分页实现代码

    根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何在Struts2与Hibernate框架结合下实现分页功能。接下来将详细解析Struts2与Hibernate如何协作完成这一任务。 ### Struts2与Hibernate...

    struts hibernate spring 分页ssh分页

    综上所述,SSH分页是Java企业级开发中的一个重要技术,它涉及到了Struts的控制层、Hibernate的数据访问层和Spring的整合及服务层,是提升应用性能和用户体验的关键手段之一。通过熟练掌握SSH分页,开发者可以更高效...

    struts+hibernate+spring集成实现分页

    Struts、Hibernate和Spring是Java开发中的三大框架,它们各自负责不同的职责,组合起来可以构建出高效、松耦合的企业级应用。SSH(Struts、Spring、Hibernate)集成是Java Web开发中的常见模式,用于创建复杂的业务...

    struts,spring,hibernate整合增删改查以及分页功能

    struts,spring,hibernate整合增删改查以及分页功能

    hibernate,struts,spring,JSP,实现分页技术

    JAVA分页大全.doc Hibernate分页查询.doc hibernate实现分页技术.txt struts实现分页技术源代码txt Struts+hibernate制作...spring+struts+hibernate 分页问题.txt spring+hibernate分页技术.txt jsp实现分页技术.txt

    struts2 + spring 3 + hibernate3.3整合实现图书馆管理管理

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用广泛用于构建复杂的Web应用程序,如本例中的图书馆管理系统。这个系统实现了用户登录和注册功能,并且提供了对书籍表的操作,包括增、删、改...

    struts2 hibernate spring 整合、分页源码

    通过研究这些文件,你可以更深入地了解如何在实际项目中实现Struts2、Hibernate和Spring的整合以及分页功能。这种整合方式不仅提高了代码的可维护性和可扩展性,还能使开发者更加专注于业务逻辑,而非底层的细节。

    Struts2SpringHibernate实现简单的添加,分页显示功能例子

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自...通过这个例子,开发者不仅可以学习到如何整合Struts2、Spring和Hibernate,还能掌握如何实现数据的添加和分页显示,对Java Web开发有更深入的理解。

    struts+hibernate+spring框架整合做分页

    在这个项目中,“struts+hibernate+spring框架整合做分页”意味着我们将探讨如何在整合这三大框架的基础上实现一个高效且灵活的分页功能。 首先,Struts框架是MVC(Model-View-Controller)设计模式的一种实现,它...

    spring+struts2+hibernate整合实现分页

    在这个项目中,“spring+struts2+hibernate整合实现分页”是一个基础教程,旨在帮助初学者理解如何在SSH框架下实现数据的分页展示。下面将详细讲解这个主题中的关键知识点。 1. **Spring框架**:Spring是Java应用的...

    ext3+struts2+hibernate+spring的CRUD+分页

    "ext3+struts2+hibernate+spring的CRUD+分页"是一个典型的Java Web开发组合,用于实现全面的数据管理功能。这个组合充分利用了各个框架的优势,提供了一个强大的后端数据处理和前端展示的解决方案。 首先,EXT3是一...

    Struts2,Spring与Hibernate整合应用,学生成绩管理系统

    通过整合Struts2、Spring与Hibernate,学生成绩管理系统不仅实现了基本的登录、学生信息和成绩管理功能,还通过分页技术增强了用户体验。更重要的是,这一整合展示了如何利用现代Java EE框架构建复杂企业级应用的...

    struts2+spring2+hibernate3注册查询搜索分页实例

    总的来说,这个"Struts2+Spring2+Hibernate3注册查询搜索分页实例"是一个很好的学习资源,涵盖了Java Web开发中的基础和核心部分。通过学习这个实例,开发者不仅可以掌握三大框架的基本用法,还能了解到如何将它们...

    Struts1.3+Spring4.x+Hibernate4.x框架整合实现对书籍的增删改查(含分页)

    这个项目展示了如何将这三个框架整合起来,实现一个完整的书籍管理应用,包括书籍的增加、删除、修改和查询功能,并且包含了分页展示。下面我们将深入探讨这些技术及其在项目中的应用。 首先,Struts1.3是MVC...

    struts1,hibernate,spring整合demo1

    Struts1、Hibernate和Spring是Java Web开发中的三大框架,它们各自负责应用程序的不同层面:Struts1主要用于控制层,提供MVC(Model-View-Controller)设计模式的实现;Hibernate是一个对象关系映射(ORM)工具,...

    Struts+Hibernate+Spring的分页

    在这个"Struts+Hibernate+Spring的分页"项目中,开发者展示了如何在这样的集成环境下实现分页功能。分页是Web应用中常见的需求,它允许用户逐页浏览大量的数据,提高用户体验并减轻服务器压力。 首先,我们来看看...

    Hibernate、Spring和Struts工作原理及使用理由

    【标题】:“Hibernate、Spring和Struts工作原理及使用理由” 【内容】: Hibernate是一个流行的Java持久化框架,它的核心工作原理主要包括以下步骤: 1. **读取并解析配置文件**:Hibernate通过读取hibernate....

    Struts+Hibernate+Spring整合分页实例(带排序功能)part1

    这是Java常用框架阶段在为学生答疑时做的一个SSH整合分页实例(第一部分),涉及了SSH整合、日期模糊查询、查询条件绑定、查询结果排序等功能,希望能为大家提供一些思路。 分页是绝大多数MIS系统必需的功能之一,...

    使用Struts + Spring + Hibernate完成分页笔记

    "使用Struts + Spring + Hibernate完成分页笔记"这个主题涵盖了三个关键的Java EE框架:Struts、Spring和Hibernate,它们分别负责表现层、业务逻辑层和数据访问层的管理。下面将详细介绍这三个框架在分页实现中的...

Global site tag (gtag.js) - Google Analytics