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";
}
- 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" %>
修改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";
}
流程
只看以上的代码,可能有些乱,现在来画个图,可能思路会清晰一点
总结
CRUD是最基本的操作,在springmvc中,使用到rest风格,以及form标签,主要有以下几个知识点:
- rest风格使得url比较美观优雅,使用过滤器将post请求转化为PUT或者DELETE请求。有时候请求路径相同,根据请求方式不同访问不同的目标方法
- 增加操作中,使用到了modelAttribute属性,因为springmvc默认是要回显表单的,这点值得注意。而且使用form标签,radio单选框等控件并不如struts2的标签那般强大(springmvc略逊一点点),但是在其他方法,springmvc还是比struts2强大得多了。
- 修改界面和增加界面使用的是同一个界面,所以要注意id是不能被修改的(在我的源码中忽略了这一点)
源码下载
到此为止,CRUD全部完成,如有需有源码的,点源码下载