SpringMVC(六)信息的删除和修改

Posted on 2021-04-23 15:50  MissRong  阅读(1510)  评论(0)    收藏  举报

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不仅可以传值,还可以跳转页面

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3