zoukankan      html  css  js  c++  java
  • Controller 层实现

    一、实验介绍

    1.1 实验内容

    本节课程主要利用 Spring MVC 框架实现 Controller 层以及一些辅助类的实现。

    1.2 实验知识点

    • Spring MVC 框架

    1.3 实验环境

    • JDK1.8
    • Eclipse JavaEE

    二、实验步骤

    在项目 hrms 的目录 src/main/java 下新建包 com.shiyanlou.controller,作为 Controller 层的包,新建包 com.shiyanlou.util,作为辅助类的包,这些辅助类是为了使 Controller 层的代码更好维护,以及实现一些其他功能。

    2.1 辅助类的实现

    2.1.1 DateUtil 类

    在包 com.shiyanlou.util 下建一个辅助类 DateUtil,其中的 getDate() 方法的作用是返回格式化的当前日期,代码如下:

    package com.shiyanlou.util;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class DateUtil {
        public static Date getDate() throws ParseException{
            Date date = new Date();   
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
            return sdf.parse(sdf.format(date));        
        }
    }
    

    2.1.2 JsonDateValueProcessor 类

    在包 com.shiyanlou.util 下建一个辅助类 JsonDateValueProcessor,其作用是将日期转化使之能在 easyUI 的 datagrid 中正常显示,代码如下:

    package com.shiyanlou.util;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Locale;
    
    import net.sf.json.JsonConfig;
    import net.sf.json.processors.JsonValueProcessor;
    
    public class JsonDateValueProcessor implements JsonValueProcessor {
    
        private String format ="yyyy-MM-dd";  
    
        public JsonDateValueProcessor() {  
            super();  
        }  
    
        public JsonDateValueProcessor(String format) {  
            super();  
            this.format = format;  
        }  
    
        @Override  
        public Object processArrayValue(Object paramObject,  
                JsonConfig paramJsonConfig) {  
            return process(paramObject);  
        }  
    
        @Override  
        public Object processObjectValue(String paramString, Object paramObject,  
                JsonConfig paramJsonConfig) {  
            return process(paramObject);  
        }  
    
    
        private Object process(Object value){  
            if(value instanceof Date){    
                SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);    
                return sdf.format(value);  
            }    
            return value == null ? "" : value.toString();    
        }
    }
    

    2.1.3 ResponseUtil 类

    在包 com.shiyanlou.util 下建一个辅助类 ResponseUtil,其 write() 方法的作用是将用 HttpServletResponse 返回前台 JSON 格式数据,同时减少 Controller 层代码的冗余,代码如下:

    package com.shiyanlou.util;
    
    import java.io.PrintWriter;
    
    import javax.servlet.http.HttpServletResponse;
    
    public class ResponseUtil {
        public static void write(HttpServletResponse response, Object o)
                throws Exception {
            response.setContentType("text/html;charset=utf-8");
            response.addHeader("Access-Control-Allow-Origin", "*");
            PrintWriter out = response.getWriter();
            out.println(o.toString());
            out.flush();
            out.close();
        }
    }
    

    2.1.4 IntegrateObject 类

    在包 com.shiyanlou.util 下建一个辅助类 IntegrateObject,其 genericAssociation() 方法的作用是完成 Employee 与 Department, Position 对象的关联映射,代码如下:

    package com.shiyanlou.util;
    
    import com.shiyanlou.domain.Department;
    import com.shiyanlou.domain.Employee;
    import com.shiyanlou.domain.Position;
    
    public class IntegrateObject {
        /**
         * 由于部门和职位在 Employee 中是对象关联映射,
         * 所以不能直接接收参数,需要创建 Department 对象和 Position 对象
         * */
        public static void genericAssociation(Integer dept_id,Integer pos_id,Employee employee){
            Department department = new Department();
            department.setId(dept_id);
            Position position = new Position();
            position.setId(pos_id);
            employee.setDepartment(department);
            employee.setPosition(position);
        }
    }
    

    2.2 Controller 层代码实现

    2.2.1 AdminController

    在包 com.shiyanlou.controller 下新建一个类 AdminController,代码如下:

    package com.shiyanlou.controller;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    
    import com.shiyanlou.domain.Admin;
    import com.shiyanlou.service.AdminService;
    import com.shiyanlou.util.ResponseUtil;
    
    /**类中的所有响应方法都被映射到 /admin 路径下
     * 
     * @author shiyanlou
     *
     */
    @Controller
    @RequestMapping("/admin")
    public class AdminController {
    
        // 自动注入 adminService
        @Resource
        private AdminService adminService;
    
        /** 处理登录请求
         * 
         * @param admin
         * @param request
         * @param session
         * @return
         */
        @RequestMapping("/login")
        public String login(Admin admin, HttpServletRequest request,
                HttpSession session) {
            Admin resultAdmin = adminService.login(admin);
            // 如果该登录的管理员用户名或密码错误返回错误信息
            if (resultAdmin == null) {
                request.setAttribute("admin", admin);
                request.setAttribute("errorMsg",
                        "Please check your username and password!");
                return "login";
            } else {
                // 登录成功, Session 保存该管理员的信息
                session.setAttribute("currentAdmin", resultAdmin);
                session.setAttribute("username", resultAdmin.getUsername());
                return "redirect:main";
            }
        }
    
        /**处理跳转至主页请求
         * 
         * @param model
         * @return
         * @throws Exception
         */
        @RequestMapping(value="/main")
        public String test(Model model) throws Exception{ 
            return "home_page";
        }
    
        /**处理查询管理员请求
         * 
         * @param admin
         * @param response
         * @return
         * @throws Exception
         */
        @RequestMapping("/list")
        public String list(Admin admin, HttpServletResponse response)
                throws Exception {
            Map<String, Object> map = new HashMap<String, Object>();
            // 判断查询条件是否为空,如果是,对条件做数据库模糊查询的处理
            if (admin.getUsername() != null
                    && !"".equals(admin.getUsername().trim())) {
                map.put("username", "%" + admin.getUsername() + "%");
            }
            List<Admin> adminList = adminService.findAdmins(map);
            Integer total = adminService.getCount(map);
            // 将数据以 JSON 格式返回前端
            JSONObject result = new JSONObject();
            JSONArray jsonArray = JSONArray.fromObject(adminList);
            result.put("rows", jsonArray);
            result.put("total", total);
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**处理保存管理员请求
         * 
         * @param admin
         * @param request
         * @param response
         * @return
         * @throws Exception
         */
        @RequestMapping("/save")
        public String save(Admin admin, HttpServletRequest request,
                HttpServletResponse response) throws Exception {
            int resultTotal = 0;
            // 如果 id 不为空,则添加管理员,否则修改管理员
            if (admin.getId() == null)
                resultTotal = adminService.addAdmin(admin);
            else
                resultTotal = adminService.updateAdmin(admin);
            JSONObject result = new JSONObject();
            if (resultTotal > 0) {
                result.put("success", true);
            } else {
                result.put("success", false);
            }
            ResponseUtil.write(response, result);
            return null;
        }
    
        /** 处理删除管理员请求
         * 
         * @param ids
         * @param response
         * @param session
         * @return
         * @throws Exception
         */
        @RequestMapping("/delete")
        public String delete(@RequestParam(value = "ids") String ids,
                HttpServletResponse response, HttpSession session) throws Exception {
            JSONObject result = new JSONObject();
            // 将要删除的管理员的 id 进行处理
            String[] idsStr = ids.split(",");
            for (int i = 0; i < idsStr.length; i++) {
                // 不能删除超级管理员(superadmin) 和当前登录的管理员
                if (idsStr[i].equals("1")||idsStr[i].equals(((Admin)session.getAttribute("currentAdmin")).getId().toString())){
                    result.put("success", false);
                    continue;
                }else{
                    adminService.deleteAdmin(Integer.parseInt(idsStr[i]));
                    result.put("success", true);
                }
            }
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**处理退出请求
         * 
         * @param session
         * @return
         * @throws Exception
         */
        @RequestMapping("/logout")
        public String logout(HttpSession session) throws Exception {
            session.invalidate();
            return "redirect:/login.jsp";
        }
    }
    

    2.2.2 PostController

    在包 com.shiyanlou.controller 下新建一个类 PostController,代码如下:

    package com.shiyanlou.controller;
    
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    import net.sf.json.JsonConfig;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    
    import com.shiyanlou.domain.Admin;
    import com.shiyanlou.domain.Post;
    import com.shiyanlou.service.PostService;
    import com.shiyanlou.util.DateUtil;
    import com.shiyanlou.util.JsonDateValueProcessor;
    import com.shiyanlou.util.ResponseUtil;
    
    /**类中的所有响应方法都被映射到 /post 路径下
     * 
     * @author shiyanlou
     *
     */
    @Controller
    @RequestMapping("/post")
    public class PostController {
    
        // 自动注入 postService
        @Resource
        private PostService postService;
    
        /**处理查询公告请求
         * 
         * @param post
         * @param response
         * @return
         * @throws Exception
         */
        @RequestMapping("/list")
        public String list(Post post, HttpServletResponse response)
                throws Exception {
            Map<String, Object> map = new HashMap<String, Object>();
            // 判断查询条件是否为空,如果是,对条件做数据库模糊查询的处理
            if (post.getTitle() != null && !"".equals(post.getTitle().trim())) {
                map.put("title", "%" + post.getTitle() + "%");
            }
            List<Post> postList = postService.findPosts(map);
            Integer total = postService.getCount(map);
    
            // 处理日期使之能在 easyUI 的 datagrid 中正常显示
            JsonConfig jsonConfig = new JsonConfig();
            jsonConfig.registerJsonValueProcessor(Date.class,
                    new JsonDateValueProcessor());
            // 将数据以 JSON 格式返回前端
            JSONObject result = new JSONObject();
            JSONArray jsonArray = JSONArray.fromObject(postList, jsonConfig);
            result.put("rows", jsonArray);
            result.put("total", total);
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**处理保存公告请求
         * 
         * @param post
         * @param request
         * @param response
         * @param session
         * @return
         * @throws Exception
         */
        @RequestMapping("/save")
        public String save(Post post, HttpServletRequest request,
                HttpServletResponse response, HttpSession session) throws Exception {
            Admin admin = (Admin)session.getAttribute("currentAdmin");
            post.setAdmin(admin);
            post.setDate(DateUtil.getDate());
            int resultTotal = 0;
            // 如果 id 不为空,则添加公告,否则修改公告
            if (post.getId() == null)
                resultTotal = postService.addPost(post);
            else
                resultTotal = postService.updatePost(post);
            JSONObject result = new JSONObject();
            if (resultTotal > 0) {
                result.put("success", true);
            } else {
                result.put("success", false);
            }
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**处理删除公告请求
         * 
         * @param ids
         * @param response
         * @param session
         * @return
         * @throws Exception
         */
        @RequestMapping("/delete")
        public String delete(@RequestParam(value = "ids") String ids,
                HttpServletResponse response, HttpSession session) throws Exception {
            JSONObject result = new JSONObject();
            // 将要删除的公告的 id 进行处理
            String[] idsStr = ids.split(",");
            for (int i = 0; i < idsStr.length; i++) {
                postService.deletePost(Integer.parseInt(idsStr[i]));
    
            }
            result.put("success", true);
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**处理根据 id 查询公告请求
         * 
         * @param id
         * @param request
         * @param response
         * @return
         * @throws Exception
         */
        @RequestMapping("/getById")
        public String getById(@RequestParam(value = "id") Integer id,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
            Post post = postService.getPostById(id);
            request.setAttribute("postContent", post.getContent());
            return "postContent";
        }
    }
    

    2.2.3 DeptController

    在包 com.shiyanlou.controller 下新建一个类 DeptController,代码如下:

    package com.shiyanlou.controller;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.shiyanlou.domain.Department;
    import com.shiyanlou.service.DepartmentService;
    import com.shiyanlou.util.ResponseUtil;
    
    /**类中的所有响应方法都被映射到 /dept 路径下
     * 
     * @author shiyanlou
     *
     */
    @Controller
    @RequestMapping("/dept")
    public class DeptController {
    
        // 自动注入 departmentService
        @Resource
        private DepartmentService departmentService;
    
        /**处理查询部门请求
         * 
         * @param department
         * @param response
         * @return
         * @throws Exception
         */
        @RequestMapping("/list")
        public String list(Department department, HttpServletResponse response)
                throws Exception {
            Map<String, Object> map = new HashMap<String, Object>();
            // 判断查询条件是否为空,如果是,对条件做数据库模糊查询的处理
            if (department.getName() != null
                    && !"".equals(department.getName().trim())) {
                map.put("name", "%" + department.getName() + "%");
            }
            List<Department> deptList = departmentService.findDepartments(map);
            Integer total = departmentService.getCount(map);
            JSONObject result = new JSONObject();
            JSONArray jsonArray = JSONArray.fromObject(deptList);
            result.put("rows", jsonArray);
            result.put("total", total);
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**处理保存部门请求
         * 
         * @param department
         * @param request
         * @param response
         * @return
         * @throws Exception
         */
        @RequestMapping("/save")
        public String save(Department department, HttpServletRequest request,
                HttpServletResponse response) throws Exception {
            int resultTotal = 0;
            // 如果 id 不为空,则添加部门,否则修改部门
            if (department.getId() == null)
                resultTotal = departmentService.addDepartment(department);
            else
                resultTotal = departmentService.updateDepartment(department);
            JSONObject result = new JSONObject();
            if (resultTotal > 0) {
                result.put("success", true);
            } else {
                result.put("success", false);
            }
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**处理删除部门请求
         * 
         * @param ids
         * @param response
         * @return
         * @throws Exception
         */
        @RequestMapping("/delete")
        public String delete(@RequestParam(value = "ids") String ids,
                HttpServletResponse response) throws Exception {
            JSONObject result = new JSONObject();
            // 将要删除的部门的 id 进行处理
            String[] idsStr = ids.split(",");
            for (int i = 0; i < idsStr.length; i++) {
                // 捕获 service 层抛出的异常,如果捕获到则置 success 值为 false,返回给前端
                try {
                    departmentService.deleteDepartment(Integer.parseInt(idsStr[i]));
                    result.put("success", true);
                } catch (Exception e) {
                    result.put("success", false);
                }                    
            }
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**处理获得部门 id 与 name 请求,用于前端 easyUI combobox 的显示
         * 
         * @param request
         * @return
         */
        @RequestMapping("/getcombobox")
        @ResponseBody
        public JSONArray getDept(HttpServletRequest request) {
            Map<String, Object> map = new HashMap<String, Object>();
            List<Department> deptList = departmentService.findDepartments(map);
            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
            for (Department dept : deptList) {
                Map<String, Object> result = new HashMap<String, Object>();
                result.put("id", dept.getId());
                result.put("name", dept.getName());
                list.add(result);
            }
            // 返回 JSON 
            JSONArray jsonArray = JSONArray.fromObject(list);
            return jsonArray;
        }
    }
    

    2.2.4 PositionController

    在包 com.shiyanlou.controller 下新建一个类 PositionController,代码如下:

    package com.shiyanlou.controller;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.shiyanlou.domain.Position;
    import com.shiyanlou.service.PositionService;
    import com.shiyanlou.util.ResponseUtil;
    
    /**类中的所有响应方法都被映射到 /position 路径下
     * 
     * @author shiyanlou
     *
     */
    @Controller
    @RequestMapping("/position")
    public class PositionController {
    
        // 自动注入 positionService
        @Resource
        private PositionService positionService;
    
        /**处理查询职位请求
         * 
         * @param position
         * @param response
         * @return
         * @throws Exception
         */
        @RequestMapping("/list")
        public String list(Position position, HttpServletResponse response)
                throws Exception {
            Map<String, Object> map = new HashMap<String, Object>();
            // 判断查询条件是否为空,如果是,对条件做数据库模糊查询的处理
            if (position.getName() != null
                    && !"".equals(position.getName().trim())) {
                map.put("name", "%" + position.getName() + "%");
            }
            List<Position> dpositionList = positionService.findPositions(map);
            Integer total = positionService.getCount(map);
            JSONObject result = new JSONObject();
            JSONArray jsonArray = JSONArray.fromObject(dpositionList);
            result.put("rows", jsonArray);
            result.put("total", total);
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**处理保存职位请求
         * 
         * @param position
         * @param request
         * @param response
         * @return
         * @throws Exception
         */
        @RequestMapping("/save")
        public String save(Position position, HttpServletRequest request,
                HttpServletResponse response) throws Exception {
            int resultTotal = 0;
            // 如果 id 不为空,则添加职位,否则修改职位
            if (position.getId() == null)
                resultTotal = positionService.addPosition(position);
            else
                resultTotal = positionService.updatePosition(position);
            JSONObject result = new JSONObject();
            if (resultTotal > 0) {
                result.put("success", true);
            } else {
                result.put("success", false);
            }
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**处理删除职位请求
         * 
         * @param ids
         * @param response
         * @return
         * @throws Exception
         */
        @RequestMapping("/delete")
        public String delete(@RequestParam(value = "ids") String ids,
                HttpServletResponse response) throws Exception {
            JSONObject result = new JSONObject();
            // 将要删除的部门的 id 进行处理
            String[] idsStr = ids.split(",");
            for (int i = 0; i < idsStr.length; i++) {
                // 捕获 service 层抛出的异常,如果捕获到则置 success 值为 false,返回给前端
                try {
                    positionService.deletePosition(Integer.parseInt(idsStr[i]));
                    result.put("success", true);
                } catch (Exception e) {
                    result.put("success", false);
                }                
            }        
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**处理获得职位 id 与 name 请求,用于前端 easyUI combobox 的显示
         * 
         * @param request
         * @return
         */
        @RequestMapping("/getcombobox")
        @ResponseBody
        public JSONArray getPos(HttpServletRequest request) {
            Map<String, Object> map = new HashMap<String, Object>();
            List<Position> posList = positionService.findPositions(map);
            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
            for (Position pos : posList) {
                Map<String, Object> result = new HashMap<String, Object>();
                result.put("id", pos.getId());
                result.put("name", pos.getName());
                list.add(result);
            }
            // 返回 JSON 
            JSONArray jsonArray = JSONArray.fromObject(list);
            return jsonArray;
        }
    }
    

    2.2.5 EmployeeController

    在包 com.shiyanlou.controller 下新建一个类 EmployeeController,代码如下:

    package com.shiyanlou.controller;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    import net.sf.json.JsonConfig;
    
    import org.springframework.beans.propertyeditors.CustomDateEditor;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.WebDataBinder;
    import org.springframework.web.bind.annotation.InitBinder;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    
    import com.shiyanlou.domain.Employee;
    import com.shiyanlou.domain.Post;
    import com.shiyanlou.service.EmployeeService;
    import com.shiyanlou.util.IntegrateObject;
    import com.shiyanlou.util.JsonDateValueProcessor;
    import com.shiyanlou.util.ResponseUtil;
    
    /**类中的所有响应方法都被映射到 /empl 路径下
     * 
     * @author shiyanlou
     *
     */
    @Controller
    @RequestMapping("/empl")
    public class EmployeeController {
    
        // 自动注入 employeeService
        @Resource
        private EmployeeService employeeService;
    
        /**处理查询员工请求
         * 
         * @param employee
         * @param request
         * @param response
         * @return
         * @throws Exception
         */
        @RequestMapping("/list")
        public String list(Employee employee, HttpServletRequest request,
                HttpServletResponse response) throws Exception {
            Map<String, Object> map = new HashMap<String, Object>();
            // 判断查询条件是否为空,如果是,对条件做数据库模糊查询的处理
            if (employee.getId() != null && !"".equals(employee.getId().trim())) {
                map.put("id", "%" + employee.getId() + "%");
            }
            if (employee.getName() != null && !"".equals(employee.getName().trim())) {
                map.put("name", "%" + employee.getName() + "%");
            }
            if (employee.getSex() != null && !"".equals(employee.getSex().trim())) {
                map.put("sex", "%" + employee.getSex() + "%");
            }
            if (employee.getDepartment() != null) {
                if (employee.getDepartment().getName() != null
                        && !"".equals(employee.getDepartment().getName().trim())) {
                    map.put("department_name", "%"
                            + employee.getDepartment().getName() + "%");
                }
            }
            if (employee.getPosition() != null) {
                if (employee.getPosition().getName() != null
                        && !"".equals(employee.getPosition().getName().trim())) {
                    map.put("position_name", "%" + employee.getPosition().getName()
                            + "%");
                }
            }
            List<Post> postList = employeeService.findEmployees(map);
            Integer total = employeeService.getCount(map);
            // 处理日期使之能在 easyUI 的 datagrid 中正常显示
            JsonConfig jsonConfig = new JsonConfig();
            jsonConfig.registerJsonValueProcessor(Date.class,
                    new JsonDateValueProcessor());
    
            JSONObject result = new JSONObject();
            JSONArray jsonArray = JSONArray.fromObject(postList, jsonConfig);
            result.put("rows", jsonArray);
            result.put("total", total);
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**处理保存员工请求
         * 
         * @param dept_id
         * @param pos_id
         * @param updateFlag
         * @param employee
         * @param request
         * @param response
         * @param session
         * @return
         * @throws Exception
         */
        @RequestMapping("/save")
        public String save(@RequestParam("dept_id") Integer dept_id,
                @RequestParam("pos_id") Integer pos_id, @RequestParam("updateFlag") String updateFlag, Employee employee,
                HttpServletRequest request, HttpServletResponse response,
                HttpSession session) throws Exception {
            int resultTotal = 0;
            // 完成 Department 和 Position 在 Employee 中的关联映射
            IntegrateObject.genericAssociation(dept_id, pos_id, employee);
    
            JSONObject result = new JSONObject();
            // 根据 updateFlag 的值,判断保存方式,如果值为 no,则添加员工,如果值为 yes,则修改员工
            if (updateFlag.equals("no")){
                // 捕获 service 层插入时主键重复抛出的异常,如果捕获到则置 success 值为 false,返回给前端
                try {
                    resultTotal = employeeService.addEmployee(employee);
                    if (resultTotal > 0) {
                        result.put("success", true);
                    } else {
                        result.put("success", false);
                    }
                } catch (Exception e) {
                    result.put("success", false);
                }
    
            }else if(updateFlag.equals("yes")){
                resultTotal = employeeService.updateEmployee(employee);
                if (resultTotal > 0) {
                    result.put("success", true);
                } else {
                    result.put("success", false);
                }
            }
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**处理删除员工请求
         * 
         * @param ids
         * @param response
         * @param session
         * @return
         * @throws Exception
         */
        @RequestMapping("/delete")
        public String delete(@RequestParam(value = "ids") String ids,
                HttpServletResponse response, HttpSession session) throws Exception {
            JSONObject result = new JSONObject();
            // 将要删除的部门的 id 进行处理
            String[] idsStr = ids.split(",");
            for (int i = 0; i < idsStr.length; i++) {
                employeeService.deleteEmployee(idsStr[i]);
    
            }
            result.put("success", true);
            ResponseUtil.write(response, result);
            return null;
        }
    
        /**springmvc 日期绑定
         * 
         * @param binder
         */
        @InitBinder
        public void initBinder(WebDataBinder binder) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            CustomDateEditor editor = new CustomDateEditor(dateFormat, true);
            binder.registerCustomEditor(Date.class, editor);
        }
    
    }
    

    三、实验总结

    到这里我们就完成了 Controller 层的代码实现,下一节我们将完成表现层 JSP 页面的实现。

  • 相关阅读:
    angularjs的$on、$emit、$broadcast
    angularjs中的路由介绍详解 ui-route(转)
    ionic入门教程-ionic路由详解(state、route、resolve)(转)
    Cocos Creator 加载使用protobuf第三方库,因为加载顺序报错
    Cocos Creator 计时器错误 cc.Scheduler: Illegal target which doesn't have uuid or instanceId.
    Cocos Creator 构造函数传参警告 Can not instantiate CCClass 'Test' with arguments.
    Cocos Creator 对象池NodePool
    Cocos Creator 坐标系 (convertToWorldSpaceAR、convertToNodeSpaceAR)
    Cocos Creator 常驻节点addPersistRootNode
    Cocos Creator 配合Tiled地图的使用
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/7076761.html
Copyright © 2011-2022 走看看