分享

springmvc学习笔记(21)——CRUD之修改

 KyunraWang 2017-09-04


CRUD之修改

DAO中加入update方法

    /**
     * 修改学生信息
     * @param student
     */
    public void update(Student student){
        students.replace(student.getStudentId(), student);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

显示修改界面

学生列表界面

<a href="student/${stu.studentId}">修改</a>
  • 1
  • 1

控制层

/**
     * 修改学生 界面
     * @param studentId
     * @param map
     * @return
     */
    @RequestMapping("/student/{studentId}")
    public String Input(@PathVariable("studentId")Integer studentId,
            Map<String, Object> map){
        //将性别的选项放入map中,springmvc的form:radiobuttons标签将自行解析
        Map<String, String> sexMap = new HashMap<String, String>();
        sexMap.put("男", "男");
        sexMap.put("女", "女");
        map.put("sex", sexMap);
        map.put("student", studentDao.getById(studentId));
        return "input";
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

这段代码和 显示增加界面 的控制层代码十分相似,唯一的区别就是根据学生id得到学生实例,并放入map中。如果你看不懂,可以点击查看springmvc学习笔记(19)——CRUD之增加

修改input界面

增加界面和修改界面其实用的是同一个界面,原先的增加界面不足以完成修改功能,因此我们对增加界面进行修改 
引入jstl标签

<%@ taglib prefix="c" uri="http://java./jsp/jstl/core" %>
  • 1
  • 1

修改form表单

<form:form action="/springmvc01/student" method="POST" modelAttribute="student">
    ID:<form:input path="studentId" /><br>
    姓名:<form:input path="name" /><br>
    性别:<form:radiobuttons path="sex" items="${sex }" /><br>
    省份:<form:input path="address.province" /><br>
    城市:<form:input path="address.city" /><br>
    <!-- 如果id为空,那么就是增加学生 -->
    <c:if test="${empty studentId }">
        <input type="submit" value="add" />
    </c:if>
    <!-- 如果id为空,那么就是修改学生 -->
    <c:if test="${!empty studentId }">
        <!-- 
        增加和修改提交的action路径是一样的,
        但是我们使用了REST风格,可以根据_method的值找到不同的目标方法
         -->
        <input type="hidden" name="_method" value="PUT"/>
        <input type="submit" value="update" />
    </c:if>
</form:form>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

修改的部分,都已经有了详细的注释,就不再解释了。如果你没看我的前面几篇笔记,可能有理解困能的就是REST了,可以查看springmvc学习笔记(4)——REST

控制层

    /**
     * 修改学生信息
     * @param student
     * @return
     */
    @RequestMapping(value="student",method=RequestMethod.PUT)
    public String Update(Student student){
        studentDao.update(student);
        return "redirect:/student";
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

流程

只看以上的代码,可能有些乱,现在来画个图,可能思路会清晰一点

学生列表学生列表后端后端修改界面修改界面点击修改根据id回显学生信息修改信息修改成功,重定向到学生列表

总结

CRUD是最基本的操作,在springmvc中,使用到rest风格,以及form标签,主要有以下几个知识点:

  • rest风格使得url比较美观优雅,使用过滤器将post请求转化为PUT或者DELETE请求。有时候请求路径相同,根据请求方式不同访问不同的目标方法
  • 增加操作中,使用到了modelAttribute属性,因为springmvc默认是要回显表单的,这点值得注意。而且使用form标签,radio单选框等控件并不如struts2的标签那般强大(springmvc略逊一点点),但是在其他方法,springmvc还是比struts2强大得多了。
  • 修改界面和增加界面使用的是同一个界面,所以要注意id是不能被修改的(在我的源码中忽略了这一点

源码下载

到此为止,CRUD全部完成,如有需有源码的,点源码下载

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多