人事管理系统项目(五)

人事管理系统项目(五)

配置好数据库后,现在开始来写servlet,建一个servlets包,下面写了所有我这个项目需要的servlet类,把BaseServlet作为一个核心类,这个类会根据请求不同将不同的请求转给不同的具体Servlet进行处理,然后再封装一些经常用到的操作,代码如下:

package com.jiazhong.hr.servlets;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/***
 * 核心Servlet,该Servlet负责对所有请求进行统一调配
 * 根据请求不同将不同的请求转给不同的具体的Servlet进行处理
 */
public class BaseServlet extends HttpServlet {
    //输出流对象,用于向页面输出内容
    protected PrintWriter out;
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            response.setContentType("json/application;charset=utf-8");
            //response.setContentType("text/html;charset=utf-8");
            //request.setCharacterEncoding("UTF-8");
            out = response.getWriter();
            //获得客户端传入的operate参数
            String methodName = request.getParameter("operate");
            //根据方法名和方法的参数获得方法对象(参数为HttpServletRequest,HttpServletResponse)
            Method method = getClass().getDeclaredMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);
            //调用方法
            method.invoke(this,request,response);
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }
}

DeptServlet:

package com.jiazhong.hr.servlets;

import com.alibaba.fastjson.JSONArray;
import com.jiazhong.hr.model.Dept;
import com.jiazhong.hr.service.DeptService;
import com.jiazhong.hr.service.impl.DeptServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * @Author: 加中实训
 * @Date:2020/8/23 17:22
 * @Description:
 */
@WebServlet("/emp/dept.do")
public class DeptServlet extends BaseServlet{
    private DeptService deptService = new DeptServiceImpl();

    protected void queryDeptInfo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Dept> deptList = deptService.queryDept();
        out.print(JSONArray.toJSON(deptList));
    }
}

EmpServlet:

package com.jiazhong.hr.servlets;

        import com.alibaba.fastjson.JSONArray;
        import com.alibaba.fastjson.JSONObject;
        import com.jiazhong.hr.commons.Constant;
        import com.jiazhong.hr.commons.CurAccount;
        import com.jiazhong.hr.commons.PageParams;
        import com.jiazhong.hr.commons.Result;
        import com.jiazhong.hr.model.Emp;
        import com.jiazhong.hr.model.Leave;
        import com.jiazhong.hr.service.EmpService;
        import com.jiazhong.hr.service.impl.EmpServiceImpl;

        import javax.servlet.ServletException;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import java.io.IOException;
        import java.text.ParseException;
        import java.text.SimpleDateFormat;
        import java.util.ArrayList;
        import java.util.Date;
        import java.util.List;
        import java.util.Map;

/**
 * @Author: 加中实训
 * @Date:2020/8/22 15:50
 * @Description:
 */
@WebServlet("/emp/emp.do")
public class EmpServlet extends BaseServlet {
    //创建EmpService对象
    private EmpService empService = new EmpServiceImpl();

    /**
     * 获得所有员工的方法
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    protected void getEmpInfo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获得客户端传入的分页参数
        int pageNumber = Integer.parseInt(request.getParameter("pageNumber"));//要查询的页码
        int pageSize = Integer.parseInt(request.getParameter("pageSize"));//每页记录数
        //将客户端获得到的分页参数设置到分页参数Bean对象(PageParams)中
        PageParams pageParams = new PageParams();
        pageParams.setPageNumber(pageNumber);
        pageParams.setPageSize(pageSize);

        Map<String,Object> empMap = empService.getEmpPaginInfo(pageParams);
        out.print(JSONArray.toJSON(empMap));//将map集合转为JSON
//        List<EmpView> empViewList = empService.getEmpInfo();
//        out.print(JSONArray.toJSON(empViewList));
    }

    protected void addEmp(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            //从客户端获得提交的数据
            String emp_name = request.getParameter("emp_name");
            int emp_sex = Integer.parseInt(request.getParameter("emp_sex"));
            String emp_phone = request.getParameter("emp_phone");
            Date emp_birthday = format.parse(request.getParameter("emp_birthday"));
            Date emp_entry_date = format.parse(request.getParameter("emp_entry_date"));
            int post_id = Integer.parseInt(request.getParameter("post_id"));
            Emp emp = new Emp();
            emp.setEmp_name(emp_name);
            emp.setEmp_sex(emp_sex);
            emp.setEmp_birthday(emp_birthday);
            emp.setEmp_entry_time(emp_entry_date);
            emp.setEmp_phone(emp_phone);
            emp.setPost_id(post_id);
            empService.addEmp(emp);
            out.print(JSONObject.toJSON(Result.success("员工添加成功!")));
        } catch (ParseException e) {
            e.printStackTrace();
            out.print(JSONObject.toJSON(Result.success("员工添加失败")));
        }catch(Exception e){
            e.printStackTrace();
            out.print(JSONObject.toJSON(Result.success("员工添加失败")));
        }
    }



    protected void updateEmp(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            //从客户端获得提交的数据
            int emp_id = Integer.parseInt(request.getParameter("emp_id"));
            String emp_name = request.getParameter("emp_name");
            System.out.println(emp_name);
            int emp_sex = Integer.parseInt(request.getParameter("emp_sex"));
            String emp_phone = request.getParameter("emp_phone");
            Date emp_birthday = format.parse(request.getParameter("emp_birthday"));
            Date emp_entry_date = format.parse(request.getParameter("emp_entry_date"));
            int post_id = Integer.parseInt(request.getParameter("post_id"));

            Emp emp = new Emp();
            emp.setEmp_id(emp_id);
            emp.setEmp_name(emp_name);
            emp.setEmp_sex(emp_sex);
            emp.setEmp_birthday(emp_birthday);
            emp.setEmp_entry_time(emp_entry_date);
            emp.setEmp_phone(emp_phone);
            emp.setPost_id(post_id);

            //调用empService中的修改员工信息方法
            empService.updateEmp(emp);
            out.print(JSONObject.toJSON(Result.success("员工修改成功!")));

        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    /**
     * 员工离职
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    protected void leave(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int empId = Integer.parseInt(request.getParameter("emp_id"));
        //调用empService中的离职方法
        empService.leave(empId);
        out.print(JSONObject.toJSON(Result.success("设置成功!")));
    }

    /**
     * 添加离职信息的Servlet
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    protected void addLeave(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获得客户端提交的emp_id,此方法用于处理单个离职或批量离职,
        //如果是批量离职则传入的emp_id不止一个而是多个,emp_id的数据格式为"id1_id2_id3"
        //我们要将"id1_id2_id3"格式的数据转换为一个存储id的数组
        String ids = request.getParameter("emp_id");
        int[] idArr;
        //判断客户端传入的数据格式是否带有_,如果带有则表示批量离职
        if(ids.contains("_")){
            //使用下划线"_"分割字符串获得一个字符串数组
            String[] idsArr = ids.split("_");
            //存储id的数组,长度由批量离职的人员数量决定
            idArr = new int[idsArr.length];
            //将字符串数组 中的数据格式化为int类型并添加到idArr数组中
            for(int i=0;i<idsArr.length;i++){
                idArr[i] = Integer.parseInt(idsArr[i]);
            }
        }else{
            int empId = Integer.parseInt(ids);
            idArr = new int[1];
            idArr[0] = empId;
        }

        String leave_reasons = request.getParameter("leave_reasons");
        //将要离职人员的emp_id及离职原因封装到离职对象(Leave)中
        //然后将离职对象Leave添加到List集合中
        List<Leave> leaves = new ArrayList<>();
        for(int emp_id : idArr){
            Leave leave = new Leave();
            leave.setEmp_id(emp_id);
            leave.setLeave_reasons(leave_reasons);
            leaves.add(leave);
        }

        empService.leave(leaves);
        //调用empService中的离职方法
        out.print(JSONObject.toJSON(Result.success("设置成功!")));
    }

    /**
     * 获得当前登陆者的信息
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    protected void getCurAccount(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //从session获得当前登陆者的信息,并转换JSON输出
        CurAccount curAccount = (CurAccount) request.getSession().getAttribute(Constant.SESSION_ATTR_CUR_ACCOUNT);
        out.print(JSONObject.toJSON(curAccount));
    }
    /**
     * 退出登录
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    protected void exit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //从session中将账户信息移除
        request.getSession().removeAttribute(Constant.SESSION_ATTR_CUR_ACCOUNT);
        out.print(JSONObject.toJSON(Result.success("退出系统")));
    }
}

LoginServlet:

package com.jiazhong.hr.servlets;

        import com.alibaba.fastjson.JSONObject;
        import com.jiazhong.hr.commons.Constant;
        import com.jiazhong.hr.commons.CurAccount;
        import com.jiazhong.hr.commons.Result;
        import com.jiazhong.hr.model.view.AccountView;
        import com.jiazhong.hr.service.AccountService;
        import com.jiazhong.hr.service.impl.AccountServiceImpl;

        import javax.servlet.ServletException;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.Cookie;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import java.io.IOException;
        import java.util.ArrayList;
        import java.util.Collections;
        import java.util.List;

@WebServlet("/login/login.do")
public class LoginServlet extends BaseServlet{
    //创建一个关于账户操作的业务类接口对象
    private AccountService accountService=new AccountServiceImpl();

    protected void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        response.setContentType("json/application;charset=utf-8");
        String account_name=request.getParameter("account_name");
        String account_password=request.getParameter("account_password");
        AccountView accountView=new AccountView(account_name,account_password);
        try {
            CurAccount curAccount=accountService.login(accountView);
            if(curAccount!=null){
                //将当前登录者的账户信息存入到session中
                request.getSession().setAttribute(Constant.SESSION_ATTR_CUR_ACCOUNT,curAccount);
                /**************自动存储cookie信息开始****************/
                //检测使用是否选择了自动登录功能
                String autoLogin=request.getParameter("autoLogin");
                if (autoLogin!=null){//此时表示用户选择了自动登录
                    //创建存储账户名的cookie对象和密码的cookie对象
                     Cookie cookie_account_name=new Cookie("account_name",account_name);
                     Cookie cookie_account_password=new Cookie("account_password",account_password);
                    //设置最大存活期
                    cookie_account_name.setMaxAge(7*24*60*60);
                    cookie_account_password.setMaxAge(7*24*60*60);
                    //将cookie添加到response对象中
                   /* response.addCookie(cookie_account_name);
                    response.addCookie(cookie_account_password);*/
                    //创建一个存储Cookie的List集合
                    List<Cookie> cookieList = new ArrayList<>();
                    //将Cookie对象添加到List集合中
                    Collections.addAll(cookieList,cookie_account_name,cookie_account_password);
                    //将Result对象回传到前端
                    response.getWriter().print(JSONObject.toJSON(Result.success("登录成功!",cookieList)));
                    return;
                }
                /**************自动存储cookie信息结束****************/
                //将Result对象回传到前端
                response.getWriter().print(JSONObject.toJSON(Result.success("登录成功")));
            }
        } catch (Exception e) {
            response.getWriter().print(JSONObject.toJSON(Result.fail(e.getMessage())));
        }
    }
}

PostServlet:

package com.jiazhong.hr.servlets;

import com.alibaba.fastjson.JSONArray;
import com.jiazhong.hr.model.Post;
import com.jiazhong.hr.service.PostService;
import com.jiazhong.hr.service.impl.PostServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * @Author: 加中实训
 * @Date:2020/8/23 17:45
 * @Description:
 */
@WebServlet("/emp/post.do")
public class PostServlet extends BaseServlet {
    private PostService postService = new PostServiceImpl();
    protected void queryPostByDept(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int dept_id = Integer.parseInt(request.getParameter("dept_id"));

        List<Post> postList = postService.queryPostByDept(dept_id);
        out.print(JSONArray.toJSON(postList));
    }
}

接下来建一个service包,在这个包下有一个impl包,这个包里是面实现了我所有的服务接口的实现类;
AccountService:

package com.jiazhong.hr.service;

import com.jiazhong.hr.commons.CurAccount;
import com.jiazhong.hr.model.view.AccountView;

/**
 * @Author: 加中实训
 * @Date:2020/8/21 14:23
 * @Description:  账户业务接口
 */
public interface AccountService {
    /**
     * 登录方法
     * @return  当前登录者的实体对象
     */
    public CurAccount login(AccountView accountView)throws Exception;
}

DeptService:

package com.jiazhong.hr.service;

import com.jiazhong.hr.model.Dept;

import java.util.List;

/**
 * @Author: 加中实训
 * @Date:2020/8/23 17:24
 * @Description:
 */
public interface DeptService {
    public List<Dept> queryDept();
}

EmpService:

package com.jiazhong.hr.service;

import com.jiazhong.hr.commons.PageParams;
import com.jiazhong.hr.model.Emp;
import com.jiazhong.hr.model.Leave;
import com.jiazhong.hr.model.view.EmpView;

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

/**
 * @Author: 加中实训
 * @Date:2020/8/22 15:19
 * @Description:
 */
public interface EmpService {
    /**
     * 获得员工信息
     * @return
     */
    public List<EmpView> getEmpInfo();

    void addEmp(Emp emp);

    /**
     * 员工离职方法
     * @param emp_id
     */
    public void leave(int emp_id);
    /**
     * 员工离职
     */
    void leave(List<Leave> leave);

    /**
     * 分页查询员工信息
     * @param pageParams
     * @return
     */
    Map<String, Object> getEmpPaginInfo(PageParams pageParams);

    void updateEmp(Emp emp);
}

PostService:

package com.jiazhong.hr.service;

import com.jiazhong.hr.model.Post;

import java.util.List;

/**
 * @Author: 加中实训
 * @Date:2020/8/23 17:46
 * @Description:
 */
public interface PostService {
    public List<Post> queryPostByDept(int dept_id);
}

AccountServiceImpl:

package com.jiazhong.hr.service.impl;

import com.jiazhong.hr.commons.CurAccount;
import com.jiazhong.hr.dao.AccountDao;
import com.jiazhong.hr.dao.impl.AccountDaoImpl;
import com.jiazhong.hr.exception.BusinessException;
import com.jiazhong.hr.exception.SysException;
import com.jiazhong.hr.model.Account;
import com.jiazhong.hr.model.view.AccountView;
import com.jiazhong.hr.service.AccountService;

public class AccountServiceImpl implements AccountService {
    private AccountDao accountDao=new AccountDaoImpl();
    @Override
    public CurAccount login(AccountView accountView) throws Exception{
        Account account= null;
        try {
            account = accountDao.queryAccountByAccountNamePassword(accountView);
        } catch (Exception e) {
            e.printStackTrace();
            throw new SysException("系统维护中,请稍后访问!");
        }
        if (account == null){
            throw new BusinessException("账户名或密码错误");
        }
        if (account.getAccount_status()==1){
            throw new BusinessException("该账户已被冻结,请与公司联系!");
        }
        return new CurAccount(account.getAccount_id(),account.getAccount_name(),account.getEmp_id());
    }
}

DeptServiceImpl:

package com.jiazhong.hr.service.impl;

import com.jiazhong.hr.dao.DeptDao;
import com.jiazhong.hr.dao.impl.DeptDaoImpl;
import com.jiazhong.hr.model.Dept;
import com.jiazhong.hr.service.DeptService;

import java.util.List;

/**
 * @Author: 加中实训
 * @Date:2020/8/23 17:23
 * @Description:
 */
public class DeptServiceImpl implements DeptService {
    private DeptDao deptDao = new DeptDaoImpl();
    @Override
    public List<Dept> queryDept() {

        return deptDao.queryDept();
    }
}

EmpServiceImpl:

package com.jiazhong.hr.service.impl;

import com.jiazhong.hr.commons.PageParams;
import com.jiazhong.hr.dao.EmpDao;
import com.jiazhong.hr.dao.impl.EmpDaoImpl;
import com.jiazhong.hr.model.Emp;
import com.jiazhong.hr.model.Leave;
import com.jiazhong.hr.model.view.EmpView;
import com.jiazhong.hr.service.EmpService;

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

/**
 * @Author: 加中实训
 * @Date:2020/8/22 15:20
 * @Description:
 */
public class EmpServiceImpl implements EmpService {
    private EmpDao empDao = new EmpDaoImpl();
    @Override
    public List<EmpView> getEmpInfo() {
        return empDao.queryEmp();
    }

    @Override
    public void addEmp(Emp emp) {
        empDao.addEmp(emp);
    }

    @Override
    public void leave(int emp_id) {
        empDao.updateStatus(emp_id,1);
    }

    @Override
    public void leave(List<Leave> leave) {
        empDao.leave(leave);
    }

    @Override
    public Map<String, Object> getEmpPaginInfo(PageParams pageParams) {
        Map<String,Object> empMap = new HashMap<>();
        //获得总记录数
        int total = empDao.getEmpSize();
        //获得员工数据
        List<EmpView> empViewList = empDao.queryEmpForPagin(pageParams);

        //将获得的数据封装到Map集合中
        empMap.put("total",total);
        empMap.put("rows",empViewList);

        return empMap;
    }

    @Override
    public void updateEmp(Emp emp) {
        empDao.updateEmp(emp);
    }
}

PostServiceImpl:

package com.jiazhong.hr.service.impl;

import com.jiazhong.hr.dao.PostDao;
import com.jiazhong.hr.dao.impl.PostDaoImpl;
import com.jiazhong.hr.model.Post;
import com.jiazhong.hr.service.PostService;

import java.util.List;

/**
 * @Author: 加中实训
 * @Date:2020/8/23 17:47
 * @Description:
 */
public class PostServiceImpl implements PostService {
    private PostDao postDao = new PostDaoImpl();
    @Override
    public List<Post> queryPostByDept(int dept_id) {
        return postDao.queryPostByDeptId(dept_id);
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值