用户信息管理系统(1)

文章详细描述了一个JavaWeb应用中的登录验证过程,涉及LoginServlet处理POST请求,CheckCodeServlet生成和验证验证码,以及User和UserService的使用。同时展示了用户信息管理功能,包括查询、添加和删除用户操作。
摘要由CSDN通过智能技术生成

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import java.io.IOException;

import java.lang.reflect.InvocationTargetException;

import java.util.Map;

@WebServlet(“/loginServlet”)

public class LoginServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//1.设置编码

request.setCharacterEncoding(“utf-8”);

//2.获取数据

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

String verifycode = request.getParameter(“verifycode”);

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

//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;

}

//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);

}

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

this.doPost(request, response);

}

}

验证码实现界面:CheckCodeServlet

package cn.itcast.web.servlet;

import javax.imageio.ImageIO;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.awt.*;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.util.Random;

/**

  • 验证码

*/

@WebServlet(“/checkCodeServlet”)

public class CheckCodeServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

//服务器通知浏览器不要缓存

response.setHeader(“pragma”,“no-cache”);

response.setHeader(“cache-control”,“no-cache”);

response.setHeader(“expires”,“0”);

//在内存中创建一个长80,宽30的图片,默认黑色背景

//参数一:长

//参数二:宽

//参数三:颜色

int width = 80;

int height = 30;

BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

//获取画笔

Graphics g = image.getGraphics();

//设置画笔颜色为灰色

g.setColor(Color.GRAY);

//填充图片

g.fillRect(0,0, width,height);

//产生4个随机验证码,12Ey

String checkCode = getCheckCode();

//将验证码放入HttpSession中

request.getSession().setAttribute(“CHECKCODE_SERVER”,checkCode);

//设置画笔颜色为黄色

g.setColor(Color.YELLOW);

//设置字体的小大

g.setFont(new Font(“黑体”,Font.BOLD,24));

//向图片上写入验证码

g.drawString(checkCode,15,25);

//将内存中的图片输出到浏览器

//参数一:图片对象

//参数二:图片的格式,如PNG,JPG,GIF

//参数三:图片输出到哪里去

ImageIO.write(image,“PNG”,response.getOutputStream());

}

/**

  • 产生4位随机字符串

*/

private String getCheckCode() {

String base = “0123456789ABCDEFGabcdefg”;

int size = base.length();

Random r = new Random();

StringBuffer sb = new StringBuffer();

for(int i=1;i<=4;i++){

//产生0到size-1的随机值

int index = r.nextInt(size);

//在base字符串中获取下标为index的字符

char c = base.charAt(index);

//将c放入到StringBuffer中去

sb.append©;

}

return sb.toString();

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

this.doGet(request,response);

}

}

当用户名&密码&验证码都正确的时候(存在BUG,管理员与用户的区别,现在只能登录管理员),就会跳转到index.jsp跳转页面,就可以查询所有用户信息。

index.jsp

<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

首页
${user.name},欢迎您!

<a

href=“${pageContext.request.contextPath}/findUserByPageServlet” style=“text-decoration:none;font-size:33px”>查询所有用户信息

2.2 添加功能


2.2.1 添加功能逻辑图

2.2.2 用户信息列表样式(FindUserByPageServlet & list.jsp)

findUserByPageServlet代码:

package cn.itcast.web.servlet;

import cn.itcast.domain.PageBean;

import cn.itcast.domain.User;

import cn.itcast.service.UserService;

import cn.itcast.service.impl.UserServiceImpl;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.util.Map;

@WebServlet(“/findUserByPageServlet”)

public class FindUserByPageServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding(“utf-8”);

//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 pb = service.findUserByPage(currentPage, rows,condition);

//3.将PageBean存入request

request.setAttribute(“pb”, pb);

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

//4.转发到list.jsp

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

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

this.doPost(request, response);

}

}

list.jsp(※特别重要※)(信息展示的所有样式代码,增删改查所有功能按钮都在此页面)

<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

用户信息管理系统

用户信息列表

查询

添加联系人

删除选中

编号 姓名 性别 年龄 籍贯 QQ 邮箱 操作

<c:forEach items=“${pb.list}” var=“user” varStatus=“s”>

${s.count} ${user.name} ${user.gender} ${user.age} ${user.address} ${user.QQ} ${user.email} 修改 

删除

</c:forEach>

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

    • «

      </c:if>

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

    • «

      </c:if>

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

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

    • ${i}
    • </c:if>

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

    • ${i}
    • </c:if>

      </c:forEach>

      <c:if test=“${pb.currentPage == pb.totalPage}”>

    • »

      </c:if>

      <c:if test=“${pb.currentPage != pb.totalPage}”>

    • »

      </c:if>

      p b . t o t a l C o u n t 条记录,共 {pb.totalCount}条记录,共 pb.totalCount条记录,共{pb.totalPage}页

      2.2.3 添加功能(AddUserServlet & add.jsp)

      样式展示

      AddUserServlet代码

      package cn.itcast.web.servlet;

      import cn.itcast.domain.User;

      import cn.itcast.service.UserService;

      import cn.itcast.service.impl.UserServiceImpl;

      import org.apache.commons.beanutils.BeanUtils;

      import javax.servlet.ServletException;

      import javax.servlet.annotation.WebServlet;

      import javax.servlet.http.HttpServlet;

      import javax.servlet.http.HttpServletRequest;

      import javax.servlet.http.HttpServletResponse;

      import java.io.IOException;

      import java.lang.reflect.InvocationTargetException;

      import java.util.Map;

      @WebServlet(“/addUserServlet”)

      public class AddUserServlet extends HttpServlet {

      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      //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()+“/findUserByPageServlet”);

      }

      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      this.doPost(request, response);

      }

      }

      add.jsp

      <%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

      <%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

      添加用户

      添加联系人页面

      广东 广西 湖南

      2.3 删除功能(DeleteUserServlet & delete.jsp)


      2.3.1 删除功能逻辑图

      简单删除功能

      删除选中功能(多选)

      2.3.2 删除提示框

      删除选中一个的时候,在修改旁的删除按钮提示框

      多选时,删除选中按钮提示框

      2.3.3 删除功能代码(DeleteUserServlet & delete.jsp)

      删除数据库中的数据

      删除功能的具体实现地址:list.jsp/javaScript

      DeleteUserServlet

      package cn.itcast.web.servlet;

      import cn.itcast.service.UserService;

      import cn.itcast.service.impl.UserServiceImpl;

      import javax.servlet.ServletException;

      import javax.servlet.annotation.WebServlet;

      import javax.servlet.http.HttpServlet;

      import javax.servlet.http.HttpServletRequest;

      import javax.servlet.http.HttpServletResponse;

      import java.io.IOException;

      @WebServlet(“/delSelectedServlet”)

      public class DelSelectedServlet extends HttpServlet {

      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      //1.获取所有id

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

      //2.调用service删除

      UserService service=new UserServiceImpl();

      service.delSelectedUser(ids);

      //3.跳转查询所有Servlet

      response.sendRedirect(request.getContextPath()+“/findUserByPageServlet”);

      }

      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      this.doPost(request, response);

      }

      }

      delSelectedUser(封装、继承、多态)

      @Override

      public void deleteUser(String id) {

      dao.delete(Integer.parseInt(id));

      }

      dao.delete();

      @Override

      public void delete(int id) {

      自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

      深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

      因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

      既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

      由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

      如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

      img

      面试准备+复习分享:

      为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

      秋招|美团java一面二面HR面面经,分享攒攒人品

      《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
      e删除

      UserService service=new UserServiceImpl();

      service.delSelectedUser(ids);

      //3.跳转查询所有Servlet

      response.sendRedirect(request.getContextPath()+“/findUserByPageServlet”);

      }

      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      this.doPost(request, response);

      }

      }

      delSelectedUser(封装、继承、多态)

      @Override

      public void deleteUser(String id) {

      dao.delete(Integer.parseInt(id));

      }

      dao.delete();

      @Override

      public void delete(int id) {

      自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

      深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

      因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-fD4c4AcM-1712490701513)]

      [外链图片转存中…(img-mSK3j9kc-1712490701514)]

      [外链图片转存中…(img-Sud8JVBT-1712490701514)]

      既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

      由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

      如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

      img

      面试准备+复习分享:

      为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

      [外链图片转存中…(img-YxLiNtYB-1712490701514)]

      《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

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

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

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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值