26.用户信息查询系统——案例

案例总览

一、查询所有用户信息实现。

public class JDBCUtils {
    private static DataSource ds;
    static {
        try {
            //使用ClassLoader加载配置文件,获取字节输入流
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            //1.加载配置文件
            Properties pro = new Properties();
            pro.load(is);
            //2.初始化数据连接池
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 获取数据连接池对象
     */
    public static DataSource getDataSource(){
        return ds;
    }

    /**
     * 获取数据库连接对象
     * @return
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>首页</title>
</head>
<body>
  <div align="center">${sessionScope.user.username}欢迎你?</div>
  <div align="center">
<%--    <a href="${pageContext.request.contextPath}/userListServlet" style="color: green">查询所有用户信息</a>--%>
<%--    分页查询--%>
<%--  <a href="${pageContext.request.contextPath}/findUserByPageServlet" style="color: green">查询所有用户信息</a>--%>
  <a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=1&rows=5" style="color: green">查询所有用户信息</a>
  </div>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>用户信息管理系统</title>
    <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
    <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
    <script>
        function deleteUser(id){
            if (confirm("您确定要删除吗?")){
                //注意Location在这里是不行的,必须小写,网络上暂时找不到相关信息
                location.href = "${pageContext.request.contextPath}/delUserServlet?id="+id;
            }
        }
        window.onload = function (){
            //给删除选中按钮添加单击事件
            document.getElementById("delSelected").onclick = function (){
                if (confirm("你确定要删除吗?")){
                    //判断是否有选中,如果没有选中就会报空指针异常
                    var cbs = document.getElementsByName("uid");
                    for (let i = 0; i < cbs.length; i++) {
                        if (cbs[i].checked){
                            //提交表单,选中的复选框才会被提交(说的只是复选框name,不是其他数据,也不是行数据)
                            document.getElementById("form").submit();
                            break;
                        }
                    }
                }
            }
            document.getElementById("FisthCb").onclick = function (){
                //这里通过name属性对应的属性值获取对象数组。
                for (var x of document.getElementsByName("uid")) {
                    x.checked = this.checked;
                };
            }
        }
    </script>
</head>
<body>
<div style="float: left">
    <form action="${pageContext.request.contextPath}/findUserByPageServlet" method="post">
        <div>
            <label for="name">姓名</label>
            <input type="text" name="name" value="${requestScope.condition.name[0]}" id="name">
        </div>
        <div>
            <label for="address">籍贯</label>
            <input type="text" name="address" value="${requestScope.condition.address[0]}" id="address">
        </div>
        <div>
            <label for="email">邮箱</label>
            <input type="text" name="email" value="${requestScope.condition.email[0]}" id="email">
        </div>
        <button type="submit">查询</button>
    </form>
</div>
<div>
    <h3 align="center">用户信息列表</h3>
    <div style="float: right">
        <a href="${pageContext.request.contextPath}/add.jsp">添加联系人</a><br/>
        <a href="javascript:void(0);"  id="delSelected">删除选中</a>
    </div>
    <form id="form" action="${pageContext.request.contextPath}/delSelectedServlet" method="post">
        <table border="1" width="800" align="center">
            <tr>
                <th><input type="checkbox" id="FisthCb"></th>
                <th>编号</th>
                <th>姓名</th>
                <th>性别</th>
                <th>年龄</th>
                <th>籍贯</th>
                <th>QQ</th>
                <th>邮箱</th>
                <th>操作</th>
            </tr>
<%--            <c:forEach items="${requestScope.list}" var="user" varStatus="s">--%>
<%--                <tr align="center">--%>
<%--                    <td><input type="checkbox" name="uid" value="${user.id}"></td>--%>
<%--                    <td>${s.count}</td>--%>
<%--                    <td>${user.name}</td>--%>
<%--                    <td>${user.gendar}</td>--%>
<%--                    <td>${user.age}</td>--%>
<%--                    <td>${user.address}</td>--%>
<%--                    <td>${user.qq}</td>--%>
<%--                    <td>${user.email}</td>--%>
<%--                    <td><a href="${pageContext.request.contextPath}/findUserServlet?id=${user.id}">修改</a>&nbsp;<a href="javascript:deleteUser(${user.id});">删除</a></td>--%>
<%--                        &lt;%&ndash;                <td><a>修改</a>&nbsp;<a href="${pageContext.request.contextPath}/delUserServlet?id=${user.id}">删除</a></td>这样不可取,没有提示就删除,很危险&ndash;%&gt;--%>
<%--                </tr>--%>
<%--            </c:forEach>--%>

<%--            分页查询--%>
            <c:forEach items="${requestScope.pageBean.list}" var="user" varStatus="s">
                <tr align="center">
                    <td><input type="checkbox" name="uid" value="${user.id}"></td>
                    <td>${s.count}</td>
                    <td>${user.name}</td>
                    <td>${user.gendar}</td>
                    <td>${user.age}</td>
                    <td>${user.address}</td>
                    <td>${user.qq}</td>
                    <td>${user.email}</td>
                    <td><a href="${pageContext.request.contextPath}/findUserServlet?id=${user.id}">修改</a>&nbsp;<a href="javascript:deleteUser(${user.id});">删除</a></td>
                </tr>
            </c:forEach>
        </table>
    </form>
    <div align="center">
        <nav aria-label="Page navigation">
            <ul class="pagination">
                    <li>
                        <a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${requestScope.pageBean.currentPage != 1 ?requestScope.pageBean.currentPage-1:1}&rows=5&name=${requestScope.condition.name[0]}&address=${requestScope.condition.address[0]}&email=${requestScope.condition.email[0]}" aria-label="Previous">
                            <span aria-hidden="true">&laquo;</span>
                        </a>
                    </li>
                <c:forEach begin="1" end="${requestScope.pageBean.totalpage}" var="number">
                    <c:if test="${requestScope.pageBean.currentPage == number}">
                        <li  class="active"><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${number}&rows=5&name=${requestScope.condition.name[0]}&address=${requestScope.condition.address[0]}&email=${requestScope.condition.email[0]}">${number}</a></li>
                    </c:if>
                    <c:if test="${requestScope.pageBean.currentPage != number}">
                        <li><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${number}&rows=5&name=${requestScope.condition.name[0]}&address=${requestScope.condition.address[0]}&email=${requestScope.condition.email[0]}">${number}</a></li>
                    </c:if>
                </c:forEach>
                    <li>
                        <a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${requestScope.pageBean.currentPage == requestScope.pageBean.totalpage ? requestScope.pageBean.totalpage : requestScope.pageBean.currentPage+1}&rows=5&name=${requestScope.condition.name[0]}&address=${requestScope.condition.address[0]}&email=${requestScope.condition.email[0]}" aria-label="Next">
                            <span aria-hidden="true">&raquo;</span>
                        </a>
                    </li>
                <span>
                    共${requestScope.pageBean.totalcount}条记录,共${requestScope.pageBean.totalpage}页
                </span>
            </ul>
        </nav>
    </div>
</div>
</body>
</html>
@WebServlet("/userListServlet")
public class UserListServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.调用UserServlet完成查询
        UserService service = new UserServiceImpl();
        List<User> users = service.findAll();
        //2.将list存入request域中
        req.setAttribute("list",users);
        //3.转发到list.jsp页面,服务器访问不需要虚拟目录
        req.getRequestDispatcher("/list.jsp").forward(req,resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}
package service.impl;

import dao.UserDao;
import dao.impl.UserDaoImpl;
import domain.PageBean;
import domain.User;
import service.UserService;

import java.util.List;
import java.util.Map;

public class UserServiceImpl implements UserService {
    private UserDao dao = new UserDaoImpl();
    @Override
    public List<User> findAll() {
        //调用Dao完成查询
        return dao.findAll();
    }

    @Override
    public User login(User user) {
        return dao.findUserByUsernameandPassword(user.getUsername(),user.getPassword());
    }

    @Override
    public void addUser(User user) {
        dao.addUser(user);
    }

    @Override
    public void delUser(String id) {
        dao.delUser(Integer.parseInt(id));
    }

    @Override
    public User findUserById(String id) {
        return dao.findUserById(Integer.parseInt(id));
    }

    @Override
    public void update(User user) {
        dao.update(user);
    }

    @Override
    public void delSelectUser(String[] ids) {
        //遍历数组删除
        for (String i:ids){
            dao.delUser(Integer.parseInt(i));
        }
    }
//分页查询
    @Override
    public PageBean<User> findUserByPage(String currentPage, String rows, Map<String, String[]> condition) {
        //1.创建空的PageBean对象
        PageBean<User> pageBean = new PageBean<User>();
        //2.设置参数
        pageBean.setCurrentPage(Integer.parseInt(currentPage));
        pageBean.setRows(Integer.parseInt(rows));//Integer.parseInt(rows)此处如果rows为null,转换则会出现异常,如:java.lang.NumberFormatException: null
        //3.调用dao查询总记录数,并设置参数
        int totalcount = dao.findTotalCount(condition);
        pageBean.setTotalcount(totalcount);
        //4.调用dao查询,返回list集合,并设置参数
        //计算开始的记录索引
        int start = (pageBean.getCurrentPage()-1)*pageBean.getRows();
        List<User> list = dao.findUserByPage(start,pageBean.getRows(),condition);
        pageBean.setList(list);
        //5.计算总页码
        int totalpage =(totalcount % pageBean.getRows()) == 0?totalcount/pageBean.getRows():totalcount/pageBean.getRows()+1 ;
        pageBean.setTotalpage(totalpage);
        //6.返回pagebean对象
        return pageBean;
    }
}
package dao.impl;

import dao.UserDao;
import domain.User;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import util.JDBCUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class UserDaoImpl implements UserDao {
    private JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource());
    @Override
    public List<User> findAll() {
        //使用JDBC操作数据库
        //1.定义sql语句
        String sql = "select * from user;";
        List<User> users = jdbcTemplate.query(sql,new BeanPropertyRowMapper<User>(User.class));
        System.out.println(users);
        return users;
    }
    @Override
    public User findUserByUsernameandPassword(String username, String password) {
        //查询到返回User,查询不到(会报错)则返回null;
        try {
            String sql = "select * from user where username = ? and password = ?;";
            User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class),username, password);
            System.out.println(user);
            return user;
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }

    @Override
    public void addUser(User user) {
        //1.定义sql
        String sql = "insert into user values(null,?,?,?,?,?,?,null,null ,null );";
        //2.执行sql
        jdbcTemplate.update(sql,user.getName(),user.getGendar(),user.getAge(),user.getAddress(),user.getQq(),user.getEmail());
    }

    @Override
    public void delUser(int id) {
        //1.定义sql
        String sql = "delete from user where id = ?;";
        //2.执行sql
        jdbcTemplate.update(sql,id);
    }

    @Override
    public User findUserById(int id) {
        String sql = "select * from user where id = ?";
        return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);
    }

    @Override
    public void update(User user) {
        String sql = "update user set name = ?,gendar = ?,age = ?,address = ?,qq = ?,email = ? where id = ?;";
        jdbcTemplate.update(sql,user.getName(),user.getGendar(),user.getAge(),user.getAddress(),user.getQq(),user.getEmail(),user.getId());
    }

    @Override
    public int findTotalCount(Map<String, String[]> condition) {
        try {
            //1.定义模板初始化
            String sql = "select count(*) from user where 1 = 1 ";
            //2.遍历map集合
            StringBuilder sb = new StringBuilder(sql);
            Set<String> keySet = condition.keySet();
            //定义参数的集合,这是用于给?赋值
            List<Object> list = new ArrayList<Object>();
            for (String key:keySet){
                if ("currentPage".equals(key) || "rows".equals(key)){
                    continue;
                }
                //获取value值
                String value = condition.get(key)[0];
                //判断value是否有值
                if (value != null && !"".equals(value)){
                    sb.append(" and "+key+" like ? ");
                    list.add("%"+value+"%");//给?条件的值
                }
            }
//        Object[] objects = list.toArray();
            //传入一个数组和多个参数的区别是:多个参数其实就是给可变参数赋值,可变参数又是一个数组
            Integer count = jdbcTemplate.queryForObject(sb.toString(), Integer.class, list.toArray());//传进去的是数组,可变参数赋值
            //这里如果查不到就会出异常
            return count;
        }catch (Exception e){
            e.printStackTrace();
            return 0;
        }

    }

    @Override
    public List<User> findUserByPage(int start, int rows, Map<String, String[]> condition) {
        String sql = "select * from user where 1 = 1 ";
        StringBuilder sb = new StringBuilder(sql);
        Set<String> keySet = condition.keySet();
        List<Object> list = new ArrayList<Object>();
        for (String key : keySet) {
            String value = condition.get(key)[0];
            if (value != null && !"".equals(value)){
                if ("currentPage".equals(key) || "rows".equals(key)){
                    continue;
                }
                sb.append(" and "+key+" like ? ");
                list.add("%"+value+"%");
            }
        }
        //添加分页查询
//        sb.append(" limit "+start+","+rows+";");
        //也可以这样
        sb.append(" limit ?,?;");
        //添加分页查询参数值,这里添加的是Object类型,int类型应该是变成包装类Integer
        list.add(start);
        list.add(rows);
        sql = sb.toString();
        System.out.println(sql);
        System.out.println(list);
        List<User> users = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class), list.toArray());
        System.out.println(users);
        return users;
    }
}

二、登录页面实现。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>管理员登录</title>
    <script>
        function refreshCode(){
            //1.获取验证码图片对象
            var vcode = document.getElementById("vcode");
            //2.设置其src属性,加上时间戳
            vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();
        }
    </script>
</head>
<body>
    <div>
        <h3 align="center">管理员登录</h3>
        <form action="${pageContext.request.contextPath}/loginServlet" method="post" style="text-align: center">
            <div>
                <label for="username">用户名:</label>
                <input type="text" name="username" id="username" placeholder="请输入用户名"><br/>
            </div>
            <div>
                <label for="password" >密码:</label>
                <input type="password" name="password" id="password" placeholder="请输入密码"><br/>
            </div>
            <div>
                <label for="checkcode">验证码:</label>
                <input type="text" name="checkcode" id="checkcode" style="width: 60px">
                <a href="javascript:refreshCode()"><img src="${pageContext.request.contextPath}/checkCodeServlet" id="vcode"></a>
            </div>
            <div>
                <input type="submit" value="登录">
            </div>
        </form>
    </div>
    <div align="center">
        <strong>${requestScope.login_msg}</strong>
    </div>
</body>
</html>
@WebServlet("/loginServlet")
public class loginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.设置编码
        req.setCharacterEncoding("utf-8");
        //2.获取数据
        //2.1获取用户填写验证码
        String checkcode = req.getParameter("checkcode");
        //3.验证码校验
        //获取服务器对应的验证码
        HttpSession session = req.getSession();
        String checkcode_server = (String) session.getAttribute("checkcode");
        //删除验证码,确保验证码一次性(只能用一次,用过后就不能再用了)
        session.removeAttribute("checkcode");
        //忽略大小写
        if (!checkcode.equalsIgnoreCase(checkcode_server)){
            //验证码不正确
            //提示信息
            req.setAttribute("login_msg","验证码错误");
            //跳转到登录页面
            req.getRequestDispatcher("/login.jsp").forward(req,resp);
            return;
        }
        //4.获取数据
        Map<String, String[]> map = req.getParameterMap();
        //5.封装User对象
        User user = new User();
        try {
            //注意:user对象里面必须包含login.jsp登录页面有name属性的所有参数名,否则会报错(如验证码的name在User类中没有,就报错了),
            // User里面可以有登录页面没有的参数
            BeanUtils.populate(user,map);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        //4.调用service查询
        UserService service = new UserServiceImpl();
        User loginUser = service.login(user);
        //5.判断是否登录成功
        if (loginUser != null) {
            //登录成功
            //将用户存入session
            session.setAttribute("user",loginUser);
            //跳转页面,重定向不能共享数据,这里没有共享数据,所以用重定向。需要虚拟目录,因为是用户使用
            resp.sendRedirect(req.getContextPath()+"/index.jsp");
        }else {
            //登录失败
            //提示信息
            req.setAttribute("login_msg","用户名或密码错误");
            //跳转到登录页面
            req.getRequestDispatcher("/login.jsp").forward(req,resp);
        }
    }
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }
}

三、添加用户。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加联系人页面</title>
</head>
<body>
<div align="center">
    <center>添加联系人页面</center>
    <form action="${pageContext.request.contextPath}/addUserServlet" METHOD="post">
        <div>
            <label for="name">姓名:</label>
            <input type="text" name="name" id="name">
        </div>
        <div>
            <label>性别:</label>
            <input type="radio" name="gendar" value="男" checked="checked">男
            <input type="radio" name="gendar" value="女">女
        </div>
        <div>
            <label for="age">年龄:</label>
            <input type="text" name="age" value="19" id="age">
        </div>
        <div>
            <label for="address">籍贯:</label>
            <select name="address" id="address">
                <option value="陕">陕西</option>
                <option value="陕">陕西</option>
                <option value="陕">陕西</option>
            </select>
        </div>
        <div>
            <label for="qq">QQ</label>
            <input type="text" name="qq" id="qq" placeholder="请输入QQ号码:">
        </div>
        <div>
            <label for="email">Email:</label>
            <input type="text" name="email" id="email" placeholder="请输入邮箱地址:">
        </div>
        <div>
            <input type="submit" value="提交">
            <input type="reset" value="重置">
            <input type="button" value="返回">
        </div>
    </form>
</div>
</body>
</html>
@WebServlet("/addUserServlet")
public class addUserServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.设置编码
        req.setCharacterEncoding("utf-8");
        //2.获取参数
        Map<String, String[]> map = req.getParameterMap();
        System.out.println(1);
        //3.封装到User对象
        User user = new User();
        try {
            BeanUtils.populate(user,map);
            System.out.println(2);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        //4.调用service保存
        UserService service = new UserServiceImpl();
        service.addUser(user);
        //5.跳转到userListServlet
        resp.sendRedirect(req.getContextPath()+"/userListServlet");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }
}

四、删除用户。

@WebServlet("/delUserServlet")
public class delUserServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.获取id,   因为此次的id(是数据库对应的id,int类型的)不是中文也不是字符串,也是get请求,所以就不用设置编码了
        String id = req.getParameter("id");
        System.out.println(id);
        //2.调用service删除
        UserService service = new UserServiceImpl();
        service.delUser(id);
        //3.跳转到查询所有的user信息
        resp.sendRedirect(req.getContextPath()+"/userListServlet");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }
}

五、修改用户。

@WebServlet("/findUserServlet")
public class findUserServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.获取id
        String id = req.getParameter("id");
        //2.调用service查询
        UserService service =  new UserServiceImpl();
        User user = service.findUserById(id);
        //3.共享数据
        req.setAttribute("user",user);
        //4.跳转修改页面
        req.getRequestDispatcher("/update.jsp").forward(req,resp);
    }
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>修改页面</title>
</head>
<body>
<div align="center">
  <h3 align="center">修改联系人</h3>
  <form action="${pageContext.request.contextPath}/updateUserServlet">
<%--    添加隐藏域,提交id--%>
    <input type="hidden" name="id" value="${requestScope.user.id}">
    <div>
      <label for="name">姓名:</label>
      <input type="text" name="name" value="${requestScope.user.name}" id="name">
    </div>
    <div>
      <label>性别:</label>
      <c:if test="${requestScope.user.gendar == '男'}">
        <input type="radio" name="gendar" value="男" checked>男
        <input type="radio" name="gendar" value="女">女
      </c:if>
      <c:if test="${requestScope.user.gendar == '女'}">
        <input type="radio" name="gendar" value="男" >男
        <input type="radio" name="gendar" value="女" checked>女
      </c:if>
    </div>
    <div>
      <label for="age">年龄:</label>
      <input type="text" name="age" value="${requestScope.user.age}" id="age">
    </div>
    <div>
      <label for="address">籍贯:</label>
      <select name="address" id="address">
        <c:if test="${requestScope.user.address == '陕'}">
          <option value="陕" selected>陕西</option>
          <option value="上海">上海</option>
          <option value="北京">北京</option>
        </c:if>
        <c:if test="${requestScope.user.address == '上海'}">
          <option value="陕">陕西</option>
          <option value="上海" selected>上海</option>
          <option value="北京">北京</option>
        </c:if>
        <c:if test="${requestScope.user.address == '北京'}">
          <option value="陕">陕西</option>
          <option value="上海">上海</option>
          <option value="北京" selected>北京</option>
        </c:if>
      </select>
    </div>
    <div>
      <label for="qq">QQ</label>
      <input type="text" name="qq" id="qq" value="${requestScope.user.qq}" placeholder="请输入QQ号码:">
    </div>
    <div>
      <label for="email">Email:</label>
      <input type="text" name="email" id="email" value="${requestScope.user.email}" placeholder="请输入邮箱地址:">
    </div>
    <div>
      <input type="submit" value="提交">
    </div>
  </form>
</div>
</body>
</html>
@WebServlet("/updateUserServlet")
public class updateUserServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.设置编码
        req.setCharacterEncoding("utf-8");
        //2.获取数据
        Map<String, String[]> map = req.getParameterMap();
        //3.封装user对象
        User user = new User();
        try {
            BeanUtils.populate(user,map);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        //4.调用service修改
        UserService service = new UserServiceImpl();
        service.update(user);
        //5.重定向页面
        resp.sendRedirect(req.getContextPath()+"/userListServlet");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }
}

六、删除选中实现(核心在前端javascript代码)。

@WebServlet("/delSelectedServlet")
public class delSelectedServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.获取所有选中的id
        String[] ids = req.getParameterValues("uid");
        //2.调用service删除
        UserService service = new UserServiceImpl();
        service.delSelectUser(ids);
        //3.跳转到userListServlet页面
        resp.sendRedirect(req.getContextPath()+"/userListServlet");
    }
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }
}

七、分页查询和复杂条件查询。

@WebServlet("/findUserByPageServlet")
public class fIndUserByPageServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码,不然进来的中文会乱码
        req.setCharacterEncoding("utf-8");
        //1.获取参数
        String currentPage = req.getParameter("currentPage");//当前页码
        String rows = req.getParameter("rows");//每页显示的条数
        //判断是否为null或者空字符串,防止出现异常
        if (currentPage == null || "".equals(currentPage)){
            currentPage = "1";
        }
        if (rows == null || "".equals(rows)){
            rows = "5";
        }
        //获取条件查询方式
        Map<String, String[]> condition = req.getParameterMap();
        //2.调用service查询
        UserService service = new UserServiceImpl();
        PageBean<User> pageBean = service.findUserByPage(currentPage,rows,condition);
        //3.将PageBean存入request域中
        req.setAttribute("pageBean",pageBean);
        //将查询条件也存入request
        req.setAttribute("condition",condition);
        //4.跳转list.jsp页面
        req.getRequestDispatcher("/list.jsp").forward(req,resp);

    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值