案例:用户信息列表展示
创始人
2024-03-28 09:38:16
0
1. 需求:用户信息的增删改查操作2. 设计:1. 技术选型:Servlet+JSP+MySQL+JDBCTempleat+Duird+BeanUtilS+tomcat2. 数据库设计:create database day17; -- 创建数据库use day17; 			   -- 使用数据库create table user(   -- 创建表id int primary key auto_increment,name varchar(20) not null,gender varchar(5),age int,address varchar(32),qq	varchar(20),email varchar(50));3. 开发:1. 环境搭建1. 创建数据库环境2. 创建项目,导入需要的jar包2. 编码4. 测试5. 部署运维

一、学习目标

1.完成登录功能

2.完成增加功能

3.完成删除功能

4.完成修改功能

5.完成选中项删除功能

6.完成分页查询功能

7.完成复杂条件查询功能

二、学习指南

1.简单增删改查(重要)

2.选中项删除(重要)

3.分页条件查询(重要)

三、具体步骤

1.列表查询

1.1 知识概述

列表查询功能的具体执行流程:servlet--------->service---->dao查询数据库

1.2 分析图

 

 

2.页面调整

2.1 知识概述

调整案例所需页面的样式以及内容

3.登录功能_验证码显示

3.1 知识概述

 登录的时候要先校验验证码是否正确,正确再去校验账号密码,密码正确放入session中保存用户信息,需要注意的是用户验证成功后把登录信息存入session中。

3.2 代码实现

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 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){//登录成功//将用户存入sessionsession.setAttribute("user",loginUser);//跳转页面response.sendRedirect(request.getContextPath()+"/index.jsp");}else{//登录失败//提示信息request.setAttribute("login_msg","用户名或密码错误!");//跳转登录页面request.getRequestDispatcher("/login.jsp").forward(request,response);}

4.添加功能

4.1 知识概述

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

4.2 分析图

4.3 代码实现

//1.设置编码request.setCharacterEncoding("utf-8");//2.获取参数Map 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.跳转到userListServletresponse.sendRedirect(request.getContextPath()+"/userListServlet");

5.删除功能

5.1 知识概述

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

5.2 分析图

5.3 代码实现

        //1.获取idString id = request.getParameter("id");//2.调用service删除UserService service = new UserServiceImpl();service.deleteUser(id);//3.跳转到查询所有Servletresponse.sendRedirect(request.getContextPath()+"/userListServlet");

 

6.修改功能

6.1 知识概述

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

6.2 分析图

6.3 代码实现1_用户信息回显 

        //1.获取idString id = request.getParameter("id");//2.调用Service查询UserService service = new UserServiceImpl();User user = service.findUserById(id);//3.将user存入requestrequest.setAttribute("user",user);//4.转发到update.jsprequest.getRequestDispatcher("/update.jsp").forward(request,response);

6.4 代码实现2_用户修改

        //1.设置编码request.setCharacterEncoding("utf-8");//2.获取mapMap 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.跳转到查询所有Servletresponse.sendRedirect(request.getContextPath()+"/userListServlet");

7.删除选中功能

7.1 知识概述

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

7.2 分析图

7.3 代码实现_获取选中条目id

//给删除选中按钮添加单击事件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();}}

7.4 代码实现_删除选中服务器代码编写

        //1.获取所有idString[] ids = request.getParameterValues("uid");//2.调用service删除UserService service = new UserServiceImpl();service.delSelectedUser(ids);//3.跳转查询所有Servletresponse.sendRedirect(request.getContextPath()+"/userListServlet");

7.5 细节处理

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

8.分页查询功能

8.1 知识概述

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

8.2 分析图

 

 

8.3 代码实现_分析具体步骤

        //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 condition = request.getParameterMap();//2.调用service查询UserService service = new UserServiceImpl();PageBean pb = service.findUserByPage(currentPage,rows,condition);System.out.println(pb);//3.将PageBean存入requestrequest.setAttribute("pb",pb);request.setAttribute("condition",condition);//将查询条件存入request//4.转发到list.jsprequest.getRequestDispatcher("/list.jsp").forward(request,response);}

8.4 代码实现_后台代码实现

        //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 condition = request.getParameterMap();//2.调用service查询UserService service = new UserServiceImpl();PageBean pb = service.findUserByPage(currentPage,rows,condition);System.out.println(pb);//3.将PageBean存入requestrequest.setAttribute("pb",pb);request.setAttribute("condition",condition);//将查询条件存入request//4.转发到list.jsprequest.getRequestDispatcher("/list.jsp").forward(request,response);}

8.5 代码实现_前台代码实现

   

9.复杂条件查询功能

9.1 知识概述

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

9.2 分析图

 

9.3 代码实现1_总记录数统计

//获取条件查询参数Map condition = request.getParameterMap();//2.调用service查询UserService service = new UserServiceImpl();PageBean pb = service.findUserByPage(currentPage,rows,condition);//1.定义模板初始化sqlString sql = "select count(*) from user where 1 = 1 ";StringBuilder sb = new StringBuilder(sql);//2.遍历mapSet keySet = condition.keySet();//定义参数的集合List params = new ArrayList();for (String key : keySet) {//排除分页条件参数if("currentPage".equals(key) || "rows".equals(key)){continue;}//获取valueString 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()); 

9.4 代码实现2_每页数据条件查询

String sql = "select * from user  where 1 = 1 ";StringBuilder sb = new StringBuilder(sql);//2.遍历mapSet keySet = condition.keySet();//定义参数的集合List params = new ArrayList();for (String key : keySet) {//排除分页条件参数if("currentPage".equals(key) || "rows".equals(key)){continue;}//获取valueString 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.class),params.toArray()); 

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...