web第一个综合练习

0.1案例目标

  1. 完成登录功能
  2. 完成增加功能
  3. 完成删除功能
  4. 完成修改功能
  5. 完成选中项删除功能
  6. 完成分页查询功能
  7. 完成复杂条件查询功能

0.2 案例指南

  1. 简单增删改查(重要)
  2. 选中项删除(重要)
  3. 分页条件查询(重要)

0.3 步骤

      1.完成登录功能         

  •                 页面调整
  •                 登录功能_验证码显示
    •                      登录的时候要先校验验证码是否正确,正确再去校验账号密码,密码正确放入session中保存用户信息
  •                 登录功能_代码实现
    •                           需要注意的是用户验证成功后把登录信息存入session中。
    • request.setCharacterEncoding("utf-8");

              //2.获取数据

              //2.1获取用户填写验证码

              String verifycode = request.getParameter("verifycode");

              //3.验证码校验

              HttpSession session = request.getSession();

              String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");

              session.removeAttribute("CHECKCODE_SERVER");//确保验证码一次性

              if(!checkcode_server.equalsIgnoreCase(verifycode)){

                  //验证码不正确

                  //提示信息

                  request.setAttribute("login_msg","验证码错误!");

                  //跳转登录页面

                  request.getRequestDispatcher("/login.jsp").forward(request,response);

                  return;

              }

              Map<String, String[]> map = request.getParameterMap();

              //4.封装User对象

              User user = new User();

              try {

                  BeanUtils.populate(user,map);

              } catch (IllegalAccessException e) {

                  e.printStackTrace();

              } catch (InvocationTargetException e) {

                  e.printStackTrace();

              }

              //5.调用Service查询

              UserService service = new UserServiceImpl();

              User loginUser = service.login(user);

              //6.判断是否登录成功

              if(loginUser != null){

                  //登录成功

                  //将用户存入session

                  session.setAttribute("user",loginUser);

                  //跳转页面

                  response.sendRedirect(request.getContextPath()+"/index.jsp");

              }else{

                  //登录失败

                  //提示信息

                  request.setAttribute("login_msg","用户名或密码错误!");

                  //跳转登录页面

                  request.getRequestDispatcher("/login.jsp").forward(request,response);

              }

      2.完成添加与修改功能
      • 2.1.1知识概述

         添加页面,输入数据一定要有属性名称,提交form表单到后台,后台接收数据封装到user中,并编写sql语句

      • 添加功能_实现

      • 2.2.1知识概述

        //1.设置编码

                request.setCharacterEncoding("utf-8");

                //2.获取参数

                Map<String, String[]> map = request.getParameterMap();

                //3.封装对象

                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.addUser(user);

                //5.跳转到userListServlet

                response.sendRedirect(request.getContextPath()+"/userListServlet");

      • 删除功能_分析

      • 2.3.1知识概述

        通过id删除数据,编写sql语句。

      • 2.4删除功能_代码实现

        2.4.1知识概述

        代码:
                            //1.获取id

                String id = request.getParameter("id");

                //2.调用service删除

                UserService service = new UserServiceImpl();

                service.deleteUser(id);

                //3.跳转到查询所有Servlet

                response.sendRedirect(request.getContextPath()+"/userListServlet");

      • 2.5修改功能_分析

         2.5.1知识概述

        首先要进行数据回显,然后提交修改后数据到后台,进行保存。

      • 3.修改删除功能

        •         能够完成修改代码

                  能够完成删除选中条目代码

        • 修改功能_代码实现1_用户信息回显

        • 3.1.1知识概述

            //1.获取id

                  String id = request.getParameter("id");

                  //2.调用Service查询

                  UserService service = new UserServiceImpl();

                  User user = service.findUserById(id);

                  //3.将user存入request

                  request.setAttribute("user",user);

                  //4.转发到update.jsp

                  request.getRequestDispatcher("/update.jsp").forward(request,response);

        • 3.2修改功能_代码实现2_用户修改

        • 3.2.1知识概述

          //1.设置编码

                  request.setCharacterEncoding("utf-8");

                  //2.获取map

                  Map<String, String[]> map = request.getParameterMap();

                  //3.封装对象

                  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.updateUser(user);

                  //5.跳转到查询所有Servlet

                  response.sendRedirect(request.getContextPath()+"/userListServlet");

        • 3.3删除选中功能_分析

        • 3.3.1知识概述

          首先要获取选中条目的id,然后根据id进行删除。     

        • 3.4删除选中功能_代码实现_获取选中条目id

        • 3.4.1知识概述

          //给删除选中按钮添加单击事件

                      document.getElementById("delSelected").onclick = function(){

                          if(confirm("您确定要删除选中条目吗?")){

                             var flag = false;

                              //判断是否有选中条目

                              var cbs = document.getElementsByName("uid");

                              for (var i = 0; i < cbs.length; i++) {

                                  if(cbs[i].checked){

                                      //有一个条目选中了

                                      flag = true;

                                      break;

                                  }

                              }

                              if(flag){//有条目被选中

                                  //表单提交

                                  document.getElementById("form").submit();

                              }

                          }

        •  3.5删除选中功能_代码实现_删除选中服务器代码编写 

        • 3.5.1知识概述

          //1.获取所有id

                  String[] ids = request.getParameterValues("uid");

                  //2.调用service删除

                  UserService service = new UserServiceImpl();

                  service.delSelectedUser(ids);

                  //3.跳转查询所有Servlet

                  response.sendRedirect(request.getContextPath()+"/userListServlet");

          • 4.删除选中和分页查询功能

                    完成删除选中功能的细节处理

                    完成分页查询功能

          • 4.1删除选中功能_代码实现_删除选中细节处理

          • 4.1.1知识概述

            判断前台页面传到后台的数据是否为空。避免出现空指针异常。

          • 4.2分页查询功能_分析

          • 4.2.1知识概述

            前台页面需要把当前页与每页显示条数传入后台。

          • 4.3分页查询功能_代码实现_分析具体步骤

          • 4.3.1知识概述

            //1.获取参数

                    String currentPage = request.getParameter("currentPage");//当前页码

                    String rows = request.getParameter("rows");//每页显示条数

                    if(currentPage == null || "".equals(currentPage)){

                        currentPage = "1";

                    }

                    if(rows == null || "".equals(rows)){

                        rows = "5";

                    }

                    

                    //获取条件查询参数

                    Map<String, String[]> condition = request.getParameterMap();

                    //2.调用service查询

                    UserService service = new UserServiceImpl();

                    PageBean<User> pb = service.findUserByPage(currentPage,rows,condition);

                    System.out.println(pb);

                    //3.将PageBean存入request

                    request.setAttribute("pb",pb);

                    request.setAttribute("condition",condition);//将查询条件存入request

                    //4.转发到list.jsp

                    request.getRequestDispatcher("/list.jsp").forward(request,response);

                }

          • 5.分页查询

            •         1、能够完成分页查询功能_代码实现_后台代码实现

                      2、能够完成分页查询功能_代码实现_前台代码实现

            • 5.1分页查询功能_代码实现_后台代码实现

            • 5.1.1知识概述

                         
              //1.获取参数

                      String currentPage = request.getParameter("currentPage");//当前页码

                      String rows = request.getParameter("rows");//每页显示条数

                      if(currentPage == null || "".equals(currentPage)){

                          currentPage = "1";

                      }

                      if(rows == null || "".equals(rows)){

                          rows = "5";

                      }

                      

                      //获取条件查询参数

                      Map<String, String[]> condition = request.getParameterMap();

                      //2.调用service查询

                      UserService service = new UserServiceImpl();

                      PageBean<User> pb = service.findUserByPage(currentPage,rows,condition);

                      System.out.println(pb);

                      //3.将PageBean存入request

                      request.setAttribute("pb",pb);

                      request.setAttribute("condition",condition);//将查询条件存入request

                      //4.转发到list.jsp

                      request.getRequestDispatcher("/list.jsp").forward(request,response);

                  }

            • 5.2分页查询功能_代码实现_前台代码实现

            • 5.2.1知识概述

                               <nav aria-label="Page navigation">

                          <ul class="pagination">

                              <c:if test="${pb.currentPage == 1}">

                                  <li class="disabled">

                              </c:if>

                              <c:if test="${pb.currentPage != 1}">

                                  <li>

                              </c:if>

                                  <a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${pb.currentPage - 1}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}" aria-label="Previous">

                                      <span aria-hidden="true">«</span>

                                  </a>

                              </li>

                              <c:forEach begin="1" end="${pb.totalPage}" var="i" >

                                  <c:if test="${pb.currentPage == i}">

                                      <li class="active"><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${i}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}">${i}</a></li>

                                  </c:if>

                                  <c:if test="${pb.currentPage != i}">

                                      <li><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${i}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}">${i}</a></li>

                                  </c:if>

                              </c:forEach>

                              <li>

                                  <a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${pb.currentPage + 1}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}" aria-label="Next">

                                      <span aria-hidden="true">»</span>

                                  </a>

                              </li>

                              <span style="font-size: 25px;margin-left: 5px;">

                                  共${pb.totalCount}条记录,共${pb.totalPage}页

                              </span>

            • 6.复杂条件查询

              •         完成复杂条件查询功能
              • 6.1复杂条件查询功能_分析
              • 6.1.1知识概述

                             把查询条件发送到后台,后台根据条件进行查询

              • 6.2复杂条件查询功能_代码实现1_总记录数统计J

              • 6.2.1知识概述

                //获取条件查询参数

                        Map<String, String[]> condition = request.getParameterMap();

                        //2.调用service查询

                        UserService service = new UserServiceImpl();

                        PageBean<User> pb = service.findUserByPage(currentPage,rows,condition);

                  //1.定义模板初始化sql

                        String sql = "select count(*) from user where 1 = 1 ";

                        StringBuilder sb = new StringBuilder(sql);

                        //2.遍历map

                        Set<String> keySet = condition.keySet();

                        //定义参数的集合

                        List<Object> params = 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 ? ");

                                params.add("%"+value+"%");//?条件的值

                            }

                        }

                        System.out.println(sb.toString());

                        System.out.println(params);

                        return template.queryForObject(sb.toString(),Integer.class,params.toArray());

              • 6.3复杂条件查询功能_代码实现2_每页数据条件查询

              • 6.3.1知识概述 

                String sql = "select * from user  where 1 = 1 ";

                        StringBuilder sb = new StringBuilder(sql);

                        //2.遍历map

                        Set<String> keySet = condition.keySet();

                        //定义参数的集合

                        List<Object> params = 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 ? ");

                                params.add("%"+value+"%");//?条件的值

                            }

                        }

                        //添加分页查询

                        sb.append(" limit ?,? ");

                        //添加分页查询参数值

                        params.add(start);

                        params.add(rows);

                        sql = sb.toString();

                        System.out.println(sql);

                        System.out.println(params);

                        return template.query(sql,new BeanPropertyRowMapper<User>(User.class),params.toArray());

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值