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

来源:互联网 发布:servlet使用json 编辑:程序博客网 时间:2024/06/03 13:13

  • CRUD之修改
    • DAO中加入update方法
    • 显示修改界面
    • 修改input界面
    • 控制层
  • 流程
  • 总结
  • 源码下载

CRUD之修改

DAO中加入update方法

    /**     * 修改学生信息     * @param student     */    public void update(Student student){        students.replace(student.getStudentId(), student);    }

显示修改界面

学生列表界面

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

控制层

/**     * 修改学生 界面     * @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";    }

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

修改input界面

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

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

修改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>

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

控制层

    /**     * 修改学生信息     * @param student     * @return     */    @RequestMapping(value="student",method=RequestMethod.PUT)    public String Update(Student student){        studentDao.update(student);        return "redirect:/student";    }

流程

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

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

总结

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

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

源码下载

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

0 0
原创粉丝点击