SpringMVC(六)信息的删除和修改
一、信息的删除
修改user.jsp文件,增加按钮“删除”,以及script标签,
里面加上:function del(){ location.href="delete?id="+id;}
Controller-->Service-->Dao
注意-Controller层的删除之后返回到user页面需要新加forward:
/*删除操作*/ @RequestMapping("delete") public String delete(Integer id) { int x = userService.delete(id); //如果删除成功: if (x > 0) { //删完之后需要再查询一遍(foeward 请求转发, redirect 响应重定向) return "forward:user"; //或者redirect: user } return "user"; }
二、信息的修改
1、修改user.jsp文件,
增加“修改”按钮:
<%--点击修改按钮,先触发update()--%> <input type="button" value="修改" onclick="update(${user.id})"> 增加script标签, 里面加上修改功能: function update(id) { /*触发update()后,首先发出回显请求--先回显出来*/ location.href = "updateEcho?id=" + id; }
Controller-->Service-->Dao
2、注意-Controller层的修改操作之前需要返回要修改的User的信息
(类似于注册界面,只是value的值是根据后台获取的):
/*接收数据回显请求 并跳转更新页面*/ @RequestMapping("updateEcho") //将后台数据传到前台页面,需要Model中的方法addAttribute(...) public String updateEcho(Integer id, Model model) { User user = userService.searchUserById(id); /*将数据传动给user.jsp的"update(${user.id})"中的user,表达式${}可以获取到*/ model.addAttribute("user", user); /*会跳到修改界面,将原数据显示出来*/ return "userUpdate"; }
3、Service层:抽象类(略)、抽象方法:
@Override public User searchUserById(Integer id) { return userDao.searchUserById(id); }
4、Dao层
@Override public User searchUserById(Integer id) { List<User> list = jdbcTemplate.query("select * from user where id = ?", new Object[]{id}, new RowMapper<User>() { @Override public User mapRow(ResultSet resultSet, int i) throws SQLException { User user = new User(); user.setId(resultSet.getInt("id")); user.setName(resultSet.getString("name")); user.setPassword(resultSet.getString("password")); user.setSex(resultSet.getString("sex")); String hobbys = resultSet.getString("hobbys"); if(hobbys != null){ user.setHobbys(hobbys.split(",")); } user.setHobbysBackUp(hobbys);; return user; } }); User user1 = null; if(list.size() != 0){ user1 = list.get(0); } return user1; }
5、Controller层
/*修改操作,接收源于userUpdate.jsp的update请求*/ @RequestMapping("update") public String update(User user) { //后台向前台传输数据(某个User): int x = userService.update(user); if (x > 0) { return "redirect:user"; } return "redirect:user"; }
6、Service层(抽象类(略)、实现类--将爱好转换成字符串的形式)
@Override public int update(User user) { String[] hobbys = user.getHobbys(); String hobby = ""; for (int i = 0; i < hobbys.length; i++) { if (i == hobbys.length - 1) { hobby += hobbys[i]; } else { hobby += hobbys[i] + ","; } } return userDao.update(user, hobby);
7、Dao层(抽象类(略)、实现类)
@Override public int update(User user, String hobbys) { String sql = "update user set name = ?, password = ?, sex = ?, hobbys = ? where id = ?"; return jdbcTemplate.update(sql, user.getName(), user.getPassword(), user.getSex(), hobbys, user.getId()); }
8、userUpdate.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--获取性别的值,也是要将后台的数据显示到前台,就需要写下面的这句:--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--点击提交,发送update请求--%>
<form action="update" method="get">
<table border="0" cellspacing="0" width="300px" height="500px" align="center">
<tr>
<td>
用户名:
</td>
<td>
<input type="text" name="name" value="${user.id}">
</td>
</tr>
<tr>
<td>
密码:
</td>
<td>
<input type="password" name="password" value="${user.password}">
</td>
</tr>
<tr>
<td>
性别:
</td>
<td>
<c:if test="${user.sex == '男'}">
<input type="radio" name="sex" value="男" checked>男
<input type="radio" name="sex" value="女">女
</c:if>
<c:if test="${user.sex == '女'}">
<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女" checked>女
</c:if>
<c:if test="${user.sex == '' || user.sex == null}">
<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女
</c:if>
</td>
</tr>
<tr>
<td>
爱好:
</td>
<td>
<input type="checkbox" name="hobbys" value="吃"
<c:forEach items="${user.hobbys}" var = "hob">
<c:if test="${hob == '吃'}">
checked
</c:if>
</c:forEach>
>吃
<input type="checkbox" name="hobbys" value="喝"
<c:forEach items="${user.hobbys}" var = "hob">
<c:if test="${hob == '喝'}">
checked
</c:if>
</c:forEach>
>喝
<input type="checkbox" name="hobbys" value="乐"
<c:forEach items="${user.hobbys}" var = "hob">
<c:if test="${hob == '乐'}">
checked
</c:if>
</c:forEach>
>乐
<input type="checkbox" name="hobbys" value="玩"
<c:forEach items="${user.hobbys}" var = "hob">
<c:if test="${hob == '玩'}">
checked
</c:if>
</c:forEach>
>玩
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
</body>
</html>
三、总结
导依赖
包扫描、开启mvc
注册页面
get中文不乱码,而post乱
视图解析器-->用于跳转页面
Controller控制层:仅接收前台数据、跳转页面
Service层:将数组类型的数据转换成字符串
提交按钮——-Dao
Dao层:
bean 中写入连数据库的配置信息
引入db.properties
dao层引入jdbc@Auto...
dao层插入数据,返回操作结果
解决乱码问题:filter(web.xml)
<!--解决post请求中文乱码问题--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
后台向页面传值:
主页面传值 ModelAndView .addObject("name", "XXX")
ModelMap .addAttribute("name", "XXX")
Model .addAttribute("name", "XXX")
Model是一个接口
ModelAndView不仅可以传值,还可以跳转页面
浙公网安备 33010602011771号