基于ssh的员工管理系统

本文介绍了如何使用SSH(Struts2、Spring、Hibernate)框架构建一个员工管理系统。内容涵盖Maven项目的配置,包括pom.xml文件,以及系统的主要组成部分:控制器(controller)、数据访问对象(dao)、实体类(pojo)、业务逻辑(service)和服务辅助工具(until)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Maven项目

配置:

pom.xml

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
  <!--统一配置ssh的版本号-->
  <spring.version>3.1.1.RELEASE</spring.version>
  <hibernate.version>3.6.5.Final</hibernate.version>
  <struts2.version>2.3.1</struts2.version>
</properties>

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </dependency>

  <!-- java servlet api -->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>
  <!-- spring -->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <!--创建动态代理-->
  <dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib-nodep</artifactId>
    <version>2.2</version>
  </dependency>
  <!-- hibernate-->
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>${hibernate.version}</version>
  </dependency>
  <!-- struts2 -->
  <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>${struts2.version}</version>
  </dependency>
  <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-junit-plugin</artifactId>
    <version>${struts2.version}</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-spring-plugin</artifactId>
    <version>${struts2.version}</version>
  </dependency>
  <!-- mysql驱动包 -->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.0.5</version>
  </dependency>
  <!-- c3p0连接池 -->
  <dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.1.2</version>
  </dependency>

controller

package com.demo.controller;

import com.demo.dao.EmpDao;
import com.demo.pojo.Dept;
import com.demo.pojo.Emp;
import com.demo.service.EmpService;
import com.demo.util.Page;
import com.opensymphony.xwork2.ActionSupport;
import com.sun.deploy.net.HttpResponse;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import javax.annotation.Resource;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;

@Controller("addAction")
@Scope("prototype")//没执行一次就自动创建一个Action
public class AddAction extends ActionSupport implements SessionAware,RequestAware,ApplicationAware {
    @Resource
    private EmpService empService;
    private Map<String,Object> requset;
    private Map<String,Object> session;
    private Map<String,Object> application;
    private Emp emp ;

    private Page page ;

    private long[] empno = new long[]{};

    public long[] getEmpno() {
        return empno;
    }

    public void setEmpno(long[] empno) {
        this.empno = empno;
    }

    public Page getPage() {
        return page;
    }

    public void setPage(Page page) {
        this.page = page;
    }

    public Emp getEmp() {
        return emp;
    }

    public void setEmp(Emp emp) {
        this.emp = emp;
    }

    @Override
    public void setApplication(Map<String, Object> map) {
        this.application=map;
    }

    @Override
    public void setRequest(Map<String, Object> map) {
        this.requset=map;
    }

    @Override
    public void setSession(Map<String, Object> map) {
        this.session=map;
    }


    /**
     * 查询所有部门
     * @return
     */
    public String Addselect(){

        System.out.println(emp.getHiredate());
        boolean add = empService.add(emp);
        if(add){
            System.out.println("添加成功");
        }else {
            System.out.println("添加失败");
        }


        return "index";
    }

    /**
     * 跳转到添加页面
     * @return
     */
    public String sel(){
        List<Dept> depts = empService.selectDept();
        requset.put("depts",depts);
        return "add";
    }

    /**
     * 条件查询及分页
     * @return
     */
    public String add(){

        //查询所有部门
        List<Dept> depts = empService.selectDept();


        //判断emp是否等于传过来得值
        if("1".equals(emp.getEmpname())){
            System.out.println(emp.getEmpname());
            emp.setEmpname("");
            emp.setDeptno(0);
        }

        page.setIs_rows(3);//每页显示多少条数据
        page.setIs_page(page.getIs_page());//当前页码
        int i = empService.selectAll(emp.getEmpname(), emp.getDeptno());//查询此条件下有多少条数据
        System.out.println("一共有"+i+"条数据");
        page.setIs_allrow(i);//把总条数赋值给page
        //查询全部
        System.out.println("姓名:"+emp.getEmpname()+",编号:"+emp.getDeptno());

        List<Emp> list = empService.selectBynameordept(emp.getEmpname(), emp.getDeptno(), (page.getIs_page() - 1) * page.getIs_rows(), page.getIs_rows());

        requset.put("pages",page);
        requset.put("name",emp.getEmpname());
        requset.put("depts",depts);
        requset.put("Lists",list);
        return "index";
    }

    /**
     * 查询详情
     * @return
     */
    public String details(){
        Emp emp = empService.selectById(this.emp.getEmpno());
        requset.put("emp",emp);
        return "details";
    }

    /**
     * 查询出部门和员工,然后跳转到修改页面
     * @return
     */
    public String edit(){
        SimpleDateFormat sdp = new SimpleDateFormat("yyyy-MM-dd");
        Emp emp = empService.selectById(this.emp.getEmpno());
        requset.put("emp",emp);
        requset.put("format",sdp.format(emp.getHiredate()));
        List<Dept> dept = empService.selectDept();
        requset.put("depts",dept);
        return "edit";
    }

    /**
     * 完成修改并添加到数据库并回显
     * @return
     */
    public String editById(){
        boolean b = empService.updateEmp(emp);
        if(b){
            System.out.println("修改成功!");
        }else {
            System.out.println("修改失败!");
        }

        SimpleDateFormat sdp = new SimpleDateFormat("yyyy-MM-dd");

        Emp emp = empService.selectById(this.emp.getEmpno());
        requset.put("emp",emp);
        requset.put("format",sdp.format(emp.getHiredate()));
        List<Dept> dept = empService.selectDept();
        requset.put("depts",dept);
        return "edit";
    }

    /**
     * 删除数据
     * @return
     */
    public String deleteById(){
        System.out.println(emp.getEmpno());
        boolean b = empService.deleteEmp(emp.getEmpno());
        if(b){
            System.out.println("删除成功!");

        }else {
            System.out.println("删除失败!");
        }
        return "delete";
    }

    public String deleteNews(){
        for(int i=0;i<this.empno.length;i++)
            System.out.println("ID是:"+empno[i]);
        boolean b = empService.delNews(empno);
        System.out.println("结果是:"+b);
        return "delete";
    }
}

dao

package com.demo.dao;

import com.demo.pojo.Dept;
import com.demo.pojo.Emp;

import java.util.List;

public interface EmpDao {
    void add(Emp emp);

    //删除
    void deleteEmp(int id);
    //编辑
    void updateEmp(Emp emp);
    //根据id查询一条数据
    Emp selectById(int id);

    int selectAll(String name, int dept);
    //多条件查询
    List<Emp> selectBynameordept(String name, int dept,int first,int last);

    //查询全部
    List<Emp> selectEmp();

    //查询所有部门
    List<Dept> selectDept();

    void delNews(long[] ids);
}

---------------------------------------------------------------------------------------------------------------------------

package com.demo.dao;

import com.demo.pojo.Dept;
import com.demo.pojo.Emp;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;


@Repository("empDao")
public class EmpDaoImpl implements EmpDao  {


    @Resource(name="sessionFactory")
    private SessionFactory sessionFactory;
    @Override
    public void add(Emp emp) {
        sessionFactory.getCurrentSession().save(emp);
    }

    @Override
    public void deleteEmp(int id) {
        Emp emp = new Emp();
        emp.setEmpno(id);
        sessionFactory.getCurrentSession().delete(emp);
    }

    @Override
    public void updateEmp(Emp emp) {
        sessionFactory.getCurrentSession().update(emp);
    }

    @Override
    public Emp selectById(int id) {
        return (Emp) sessionFactory.getCurrentSession().get(Emp.class,id);
    }

    @Override
    public int selectAll(String name, int dept) {
        StringBuffer sb = new StringBuffer();
        sb.append("select count(*) FROM Emp e where 1=1 ");
        if(dept!=0){
            sb.append(" and e.deptno='"+dept+"'");
        }
        if(!"".equals(name)){
            sb.append(" and e.empname like '%"+name+"%' ");
        }
        //int i = sessionFactory.getCurrentSession().createQuery(sb.toString()).executeUpdate();
        Query query = sessionFactory.getCurrentSession().createQuery(sb.toString());
        Long total = (Long) query.uniqueResult();

        System.out.println("一共有"+total+"条数据");
        return total.intValue() ;
    }

    @Override
    public List<Emp> selectBynameordept(String name, int dept,int first,int fast) {
        StringBuffer sb = new StringBuffer();

        sb.append("FROM Emp e where 1=1");
        if(dept!=0){
            sb.append(" and e.deptno="+dept+" ");
        }
        if(!"".equals(name)){
            sb.append(" and e.empname LIKE '%"+name+"%' ");
        }
        Query query = sessionFactory.getCurrentSession().createQuery(sb.toString());

        List<Emp> list =query.setFirstResult(first)
                .setMaxResults(fast)
                .list();
        //SQLQuery sqlQuery = sessionFactory.getCurrentSession().createSQLQuery(sb.toString());

        return list;
    }

    @Override
    public List<Emp> selectEmp() {
        return sessionFactory.getCurrentSession().createQuery("FROM Emp").list();
    }

    @Override
    public List<Dept> selectDept() {
        return sessionFactory.getCurrentSession().createQuery("FROM Dept").list();
    }

    @Override
    public void delNews(long[] ids) {


        /**
         * hibernate的批量删除;
         * 缺点:删除时是多条删除语句,影响效率;
         */
//数组中封装的是ID的集合;
        String hql = "";
        StringBuffer sb = new StringBuffer();
        for(int i=0;i<ids.length;i++) {
            if(i==0) {
                hql = "empno="+ids[i];
            } else {
                hql =hql + " or empno="+ids[i];
            }
        }

        sb.append("delete from Emp where ");
        sb.append(hql);

        System.out.println("HQL语句为:"+sb.toString());
        Query q= sessionFactory.getCurrentSession().createQuery(sb.toString());
        q.executeUpdate();

        //调用DAO层的删除方法;

    }
}

 

pojo

package com.demo.pojo;

import javax.persistence.*;

@Entity
public class Dept {
    private int deptno;
    private String deptname;
    private String loc;

    @Id
    @GeneratedValue
    @Column(name = "deptno")
    public int getDeptno() {
        return deptno;
    }

    public void setDeptno(int deptno) {
        this.deptno = deptno;
    }

    @Basic
    @Column(name = "deptname")
    public String getDeptname() {
        return deptname;
    }

    public void setDeptname(String deptname) {
        this.deptname = deptname;
    }

    @Basic
    @Column(name = "loc")
    public String getLoc() {
        return loc;
    }

    public void setLoc(String loc) {
        this.loc = loc;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Dept dept = (Dept) o;

        if (deptno != dept.deptno) return false;
        if (deptname != null ? !deptname.equals(dept.deptname) : dept.deptname != null) return false;
        if (loc != null ? !loc.equals(dept.loc) : dept.loc != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = deptno;
        result = 31 * result + (deptname != null ? deptname.hashCode() : 0);
        result = 31 * result + (loc != null ? loc.hashCode() : 0);
        return result;
    }

    @Override
    public String toString() {
        return "Dept{" +
                "deptno=" + deptno +
                ", deptname='" + deptname + '\'' +
                ", loc='" + loc + '\'' +
                '}';
    }
}

---------------------------------------------------------------------------------------------------------

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

    <class name="com.demo.pojo.Dept" table="dept" schema="emp">
        <id name="deptno" column="deptno"/>
        <property name="deptname" column="deptname"/>
        <property name="loc" column="loc"/>
    </class>
</hibernate-mapping>

----------------------------------------------------------------------------------------------------------------

package com.demo.pojo;

import javax.persistence.*;
import java.sql.Timestamp;
import java.util.Objects;

@Entity
public class Emp {
    private int empno;
    private String empname;//名称
    private String job;//岗位
    private int mgr;//直属领导
    private Timestamp hiredate;//入职时间
    private Integer sal;//工资
    private Integer comm;//奖金
    private Integer deptno;//部门编号
    private Dept dept;

    @Id
    @GeneratedValue
    @Column(name = "empno")
    public int getEmpno() {
        return empno;
    }

    public void setEmpno(int empno) {
        this.empno = empno;
    }

    @Basic
    @Column(name = "empname")
    public String getEmpname() {
        return empname;
    }

    public void setEmpname(String empname) {
        this.empname = empname;
    }

    @Basic
    @Column(name = "job")
    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    @Basic
    @Column(name = "mgr")
    public int getMgr() {
        return mgr;
    }

    public void setMgr(int mgr) {
        this.mgr = mgr;
    }

    @Basic
    @Column(name = "hiredate")
    public Timestamp getHiredate() {
        return hiredate;
    }

    public void setHiredate(Timestamp hiredate) {
        this.hiredate = hiredate;
    }

    @Basic
    @Column(name = "sal")
    public Integer getSal() {
        return sal;
    }

    public void setSal(Integer sal) {
        this.sal = sal;
    }

    @Basic
    @Column(name = "comm")
    public Integer getComm() {
        return comm;
    }


    public void setComm(Integer comm) {
        this.comm = comm;
    }

    @Basic
    @Column(name = "deptno")
    public Integer getDeptno() {
        return deptno;
    }

    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }
    @Basic
    @Column(name = "dept")
    public Dept getDept() {
        return dept;
    }

    public void setDept(Dept dept) {
        this.dept = dept;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Emp emp = (Emp) o;
        return empno == emp.empno &&
                mgr == emp.mgr &&
                Objects.equals(empname, emp.empname) &&
                Objects.equals(job, emp.job) &&
                Objects.equals(hiredate, emp.hiredate) &&
                Objects.equals(sal, emp.sal) &&
                Objects.equals(comm, emp.comm) &&
                Objects.equals(deptno, emp.deptno) &&
                Objects.equals(dept, emp.dept);
    }

    @Override
    public int hashCode() {

        return Objects.hash(empno, empname, job, mgr, hiredate, sal, comm, deptno, dept);
    }

    @Override
    public String toString() {
        return "Emp{" +
                "empno=" + empno +
                ", empname='" + empname + '\'' +
                ", job='" + job + '\'' +
                ", mgr=" + mgr +
                ", hiredate=" + hiredate +
                ", sal=" + sal +
                ", comm=" + comm +
                ", deptno=" + deptno +
                ", dept=" + dept.getDeptno() +
                ", dept=" + dept.getDeptname() +
                ", dept=" + dept.getLoc() +
                '}';
    }
}

------------------------------------------------------------------------------------------------------------

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

    <class name="com.demo.pojo.Emp" table="emp" schema="emp">
        <id name="empno" column="empno"/>
        <property name="empname" column="empname"/>
        <property name="job" column="job"/>
        <property name="mgr" column="mgr"/>
        <property name="hiredate" column="hiredate"/>
        <property name="sal" column="sal"/>
        <property name="comm" column="comm"/>
        <property name="deptno" column="deptno"/>
        <many-to-one name="dept" column="deptno" lazy="false" fetch="join" insert="false" update="false"></many-to-one>
    </class>
</hibernate-mapping>

 

service

package com.demo.service;

import com.demo.pojo.Dept;
import com.demo.pojo.Emp;

import java.util.List;

public interface EmpService {
    boolean add(Emp emp);

    //删除
    boolean deleteEmp(int id);
    //编辑
    boolean updateEmp(Emp emp);
    //根据id查询一条数据
    Emp selectById(int id);

    int selectAll(String name, int dept);
    //多条件查询
    List<Emp> selectBynameordept(String name, int dept,int first,int fast);

    //查询全部
    List<Emp> selectEmp();

    //查询所有部门
    List<Dept> selectDept();

    boolean delNews(long[] ids);
}

------------------------------------------------------------------------------------

package com.demo.service;

import com.demo.dao.EmpDao;
import com.demo.pojo.Dept;
import com.demo.pojo.Emp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

@Transactional(rollbackFor = Exception.class)
@Service("empService")
public class EmpServiceImpl implements EmpService {
    @Resource
    private EmpDao empDao;
    @Override
    public boolean add(Emp emp) {
        empDao.add(emp);
        return true;
    }

    @Override
    public boolean deleteEmp(int id) {
        empDao.deleteEmp(id);
        return true;
    }

    @Override
    public boolean updateEmp(Emp emp) {
        empDao.updateEmp(emp);
        return true;
    }

    @Override
    public Emp selectById(int id) {
        return empDao.selectById(id);
    }

    @Override
    public int selectAll(String name, int dept){
        return empDao.selectAll(name,dept);
    }

    @Override
    public List<Emp> selectBynameordept(String name, int dept,int first,int fast) {
        return empDao.selectBynameordept(name,dept,first,fast);
    }

    @Override
    public List<Emp> selectEmp() {
        return empDao.selectEmp();
    }

    @Override
    public List<Dept> selectDept() {
        return empDao.selectDept();
    }

    @Override
    public boolean delNews(long[] ids) {
        empDao.delNews(ids);
        return true;
    }
}

 

until

package com.demo.util;

import com.demo.pojo.Emp;

import java.util.List;

/**
 * 分页类
 */
public class Page {
    private int is_page=1;//当前页码
    private int is_rows;//每一页显示的行数
    private int is_allrow;//总行数
    private int is_countpage;//总页码数
    private List<Emp> lists;

    public List<Emp> getLists() {
        return lists;
    }

    public void setLists(List<Emp> lists) {
        this.lists = lists;
    }

    public int getIs_page() {
        return is_page;
    }

    public void setIs_page(int is_page) {
        this.is_page = is_page;
    }

    public int getIs_rows() {
        return is_rows;
    }

    public void setIs_rows(int is_rows) {
        this.is_rows = is_rows;
    }

    public int getIs_allrow() {
        return is_allrow;
    }

    public void setIs_allrow(int is_allrow) {
        this.is_allrow = is_allrow;
//                           6        3
        this.is_countpage=is_allrow%is_rows==0 ? is_allrow/is_rows:(is_allrow/is_rows+1);

    }

    public int getIs_countpage() {
        return is_countpage;
    }

    public void setIs_countpage(int is_countpage) {
        this.is_countpage = is_countpage;
    }

    @Override
    public String toString() {
        return "Page{" +
                "is_page=" + is_page +
                ", is_rows=" + is_rows +
                ", is_allrow=" + is_allrow +
                ", is_countpage=" + is_countpage +
                ", lists=" + lists +
                '}';
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值