SSM练手-增删改查-5-修改员工信息

  

  

http 的post 和 get 方法确实很难区分,大多数的解释都是,如果是新建一条记录的话就用post,如果是更新一条记录的话就用put.

具体原因不阐述,下面主要介绍修改员工信息的方法。

后台端:

1 web.xml配置 

 使其能够接受PUT请求,且能够从PUT请求中获取数据。

  1)直接发送PUT请求,数据无法封装,原因:  

* Tomcat:
    * 1、将请求体中的数据,封装一个map。
    * 2、request.getParameter("empName")就会从这个map中取值。
    * 3、SpringMVC封装POJO对象的时候,就可直接获取对象:request.getParamter("email");

  2)AJAX发送PUT请求引发的血案:
  * PUT请求,请求体中的数据,request.getParameter("empName")拿不到
  * Tomcat一看是PUT不会封装请求体中的数据为map,只有POST形式的请求才封装请求体为map

    解决方案;
    * 我们要能支持直接发送PUT之类的请求还要封装请求体中的数据
      * 1、配置上HttpPutFormContentFilter:将请求体中的数据解析包装成一个map。
  * 2、request被重新包装,request.getParameter()被重写,就会从自己封装的map中取数据

  在web.xml中进行配置:

  

 <!-- 4、使用Rest风格的URI,将页面普通的post请求转为指定的delete或者put请求 -->
  <filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--HttpPutFormContentFilter:将请求体中的数据解析包装成一个map -->
  <filter>
    <filter-name>HttpPutFormContentFilter</filter-name>
    <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>HttpPutFormContentFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

2 后台更新修改后的员工信息:

@RequestMapping(value ="emp/updateEmp/{empId}", method = {RequestMethod.PUT})
    @ResponseBody
    public Msg updateEmp(Employee employee){
        int result = employeeService.updateEmp(employee);
        if (result < 0){
            return Msg.fail().add("update-error", "更新异常");
        }
        return Msg.success();
    }

点击编辑的时候,有个员工信息的回显,所以需要在后台根据empId查询对应的员工信息再显示到页面中:

    /**
     * 根据员工id查询员工
     * @param empId 员工id
     * @return
     */
    @RequestMapping(value ="emp/getEmp/{empId}", method = {RequestMethod.GET})
    @ResponseBody
    public Msg getEmpById(@PathVariable("empId") Integer empId){

        if (empId >= 0){
            Employee employee = employeeService.getEmpById(empId);
            return Msg.success().add("employee", employee);
        }else {
            return Msg.fail();
        }
    }

前端:
1 修改的模态框:

    <!--修改员工Modal框-->
    <div class="modal fade" id="Emp_Update_Modal" tabindex="-1" role="dialog" aria-labelledby="emp_update_modal_label">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title" id="emp_update_modal_label">修改员工</h4>
                </div>
                <div class="modal-body">
                    <form class="form-horizontal" id="emp_update_form">
                        <div class="form-group">
                            <label for="empName" class="col-sm-2 control-label">empName:</label>
                            <div class="col-sm-10">
                                <p class="form-control-static" id="empName_update_static"></p>
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="email" class="col-sm-2 control-label">email:</label>
                            <div class="col-sm-10">
                                <input type="email" class="form-control" name="eamil" id="email_update" placeholder="email">
                                <span id="edit_helpBlock2" class="help-block"></span>
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-sm-2 control-label">gender:</label>
                            <div class="col-sm-offset-2 col-sm-10">
                                <label class="radio-inline">
                                    <input type="radio" name="gender" id="gender1__update_input" checked="checked" value="M"> 男
                                </label>
                                <label class="radio-inline">
                                    <input type="radio" name="gender" id="gender2__update_input" value="F"> 女
                                </label>
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-sm-2 control-label">deptName:</label>
                            <div class="col-sm-4">
                                <select class="form-control" name="dId" id="deptName_select_update">
                                </select>
                            </div>
                        </div>
                    </form>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                    <button type="button" class="btn btn-primary" id="emp_update_btn">更新</button>
                </div>
            </div>
        </div>
    </div>

2 为编辑按钮加上id:

 var editBtn = $("<button></button>").addClass("btn btn-info btn-sm edit_btn")
                                                    .append( $("<span></span>").addClass("glyphicon glyphicon-pencil")

                                                            .append("编辑"));
                //修改的时候 ,获取点击的员工的id
                editBtn.attr("edit-id", item.empId);

3 前端获取员工信息:

        /**
         * 修改:获取员工信息
         */
        function getEmp(empId){
            $.ajax({
                url: "${APP_PATH}/emp/getEmp/"+empId,
                type : "GET",
                success: function (result) {
                    var empData = result.extendInfo.employee;
                    $("#empName_update_static").text(empData.empName);
                    $("#email_update").val(empData.eamil);
                    $("#Emp_Update_Modal input[name=gender]").val(empData.gender);
                    $("#deptName_select_update").val(empData.dId);
                }
            });
        }

4 修改第一步:弹出修改模态框

 1) 点击编辑,弹出模态框 2) 查询部门信息,显示在部门下拉框中 3) 查询员工信息,进行回显,员工姓名只显示不允许修改 4) 将员工id赋值给 更新按钮
    $(document).on("click", ".edit_btn", function () {
            //1 查出部门信息,进行回显
            getDeptName("#deptName_select_update");
            //2 查出员工信息,进行回显
            getEmp($(this).attr("edit-id"));
            //3 把员工的 id 传给修改Modal框的更新按钮,获取id后点击更新按钮发送Ajax请求
            $("#emp_update_btn").attr("edit-id", $(this).attr("edit-id"));

            $("#Emp_Update_Modal").modal({
                backdrop:"static",
                keyboard : true
            });
        });

5  修改第二步:保存修改信息

1) 点击更新按钮,进行邮箱格式验证2) 将更改的表格内容序列化,发送Ajax请求,存入数据库;3) 关闭模态框4) 回到本页面
        $("#emp_update_btn").click(function () {
            var email = $("#email_update").val();
            var regEmail = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
            if(!regEmail.test(email)){
                show_validate_msg("#email_update", "error", "邮箱格式不正确!");
                return false;
            }else{
                show_validate_msg("#email_update", "success", "");
            }
            $.ajax({
                url: "${APP_PATH}/emp/updateEmp/"+ $(this).attr("edit-id"),
                type : "PUT",
                data : $("#emp_update_form").serialize(),
                success : function (result) {
                    //1 关闭模态框
                    $("#Emp_Update_Modal").modal("hide");
                    //2 回到本页面
                    to_page(currentPage);
                }
            });
        });

效果如图所示:

时间: 2024-10-31 06:36:25

SSM练手-增删改查-5-修改员工信息的相关文章

SSM练手-增删改查-5-新增_Modal框搭建

新增员工信息 实现图如下: 1 利用Bootstrap搭建大致页面 <!--新增员工Model框--> <div class="modal fade" id="Emp_Add_Modal" tabindex="-1" role="dialog" aria-labelledby="Emp_Add_Modal_label"> <div class="modal-dialo

基于maven+ssm的增删改查之修改员工信息

具体流程:点击编辑按钮,弹出编辑模态框,同时会发送ajax请求获取员工和部门信息并显示在相关位置.在模态框中修改相关信息,发送ajax请求进行保存. 获取部门信息之前已经有了,现在是获取员工信息. EmployeeController.java //查询员工信息 @ResponseBody @RequestMapping(value="/emp/{id}",method=RequestMethod.GET) public Msg getEmp(@PathVariable("i

SSM练手-增删改查-5-新增_保存员工信息

保存员工信息 1 后台保存到数据库: @RequestMapping(value = {"/emp/save"}, method = {RequestMethod.POST}) @ResponseBody public Msg addEmp(Employee employee){ employeeService.saveEmp(employee); return Msg.success(); } 2 前台发送AJAX请求: //保存员工信息 $("#emp_save_btn&

SpringBoot快速上手——《二》:SpringBoot集成SSM,实现增删改查功能

SpringBoot集成SSM,实现增删改查功能 github源码:https://github.com/xivinChen/SpringBoot 一.先介绍创建模块的另一种方式 1.点击Maven -> 勾选Create from archetype -> 选择 maven-archetype-quickstart 有时会需要点击 自动导入 2.工程目录 可以看到,这样创建的模块是相对干净的,需要我们手动的编写程序启动入口类.需要配置时还得创建配置文件.下一步见证. 3.完善模块 添加依赖,

数据库基本增删改查与修改表结构

数据库基本增删改查 1. 增-添加/插入数据 insert into 插入哪张表,那些列,什么值, 语句:insert into 表名(列1,列2,列3)values (值1,值2,值3): 可以不按原列的顺序插入,也可以插入部分列,但是值与列要一一对应,不能混乱!!! 一次插入多行数据 : Insert into 表名(列1,列2)values (值1,值2),(值1,值2): 2. 改-更新数据 update 更新哪张表,哪些列,哪些值 语句:update 表名 set 列1=值1,列2=值

利用LINQ to SQL 增删改查本地数据库

C#新人,博客园第一篇博文,希望大家多多指教. 最近趁项目空隙,学习了LINQ,其强大高效易读的数据操作方式令人印象深刻.特别是LINQ to SQL,让用户可以像操作内存对象一样操作SQL数据库.在阅读了<深入理解c#>和参考以下四篇博文后,自己摸索,完成了创建本地SQL数据库和数据表,VS连接数据库,到利用LINQ to SQL增删改查数据库表中信息. SQL服务器安装:http://www.downcc.com/tech/4135.html SQL数据库和数据表格创建:http://bl

基于SSM实现的MySQL增删改查

之前自学完了JAVA基础,一直以来也没有做什么好玩的项目,最近暑假,时间上比较空闲,所以又学习了一下最近在企业实际应用中比较流行的SSM框架,以此为基础,通过网络课程,学习编写了一个基于SSM实现的MySQL增删改查的网站,好了废话不多说,下面介绍一下项目. 首先,页面的UI是使用了Bootstrap框架快速搭建的,这个框架还是比较好用的,不但快速,而且美观,风格偏扁平化.而且对于我这种英文渣渣来说,有中文的帮助文档,简直不要太好上手,然后搭建好的大致效果图就如1-1所示,当然搭建好的只是静态页

SSM框架+thymeleaf实现基本的增删改查

前言 本文使用了SSM框架.thymeleaf和jquery实现了基本的增删改查. 名词解释 SSM框架:springMVC.spring.mybatis thymeleaf:一个与Velocity.FreeMarker类似的模板引擎 jquery:一个快速.简洁的JavaScript框架 程序结构 本程序框架是用maven建出来的,具体如图: 程序源码 pom.xml <?xml version="1.0" encoding="UTF-8"?> <

bootstrap+Ajax+SSM(maven搭建)实现增删改查

https://www.jianshu.com/p/d76316b48e3e 源码: https://github.com/Ching-Lee/crud 功能点: 分页 数据校验 ajax Rest风格的URI:使用HTTP协议请求方式的动词,来表示对资源的操作(GET(查询),POST(新增),PUT(修改),DELETE(删除)) 技术点 基础框架-ssm 数据库mysql 前端框架-bootstrap 项目依赖 -Maven 分页 -pagehelper 逆向工程-Mybatis Gene