您的位置:首页 > 编程语言 > Java开发

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

2015-04-27 23:04 344 查看
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全部完成,如有需有源码的,点源码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: