天天看点

java 用户登录验证_Java-用户登录验证案例,欢迎您

用户登录验证

1.案例需求:

1.访问带有验证码的登录页面login.jsp

2.用户输入用户名,密码以及验证码

* 如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误

* 如果验证码输入有误,跳转登录页面,提示:验证码错误

* 如果全部输入正确,则跳转到主页success.jsp,显示:用户名,欢迎您

代码如下

login.jsp

login

window.οnlοad=function () {

document.getElementById("img").οnclick=function () {

this.src="/08__war_exploded/CheckCodeServlet?time="+new Date().getTime();

}

}

div{

color:red;

}

用户名
密码
验证码
java 用户登录验证_Java-用户登录验证案例,欢迎您

success.jsp

Title

,欢迎您

session

package cn.itcast.servlet;

import cn.itcast.entity.UserDao;

import cn.itcast.respository.UserRespository;

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;

@WebServlet("/loginServlet")

public class loginServlet extends HttpServlet {

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

//设置request编码

request.setCharacterEncoding("utf-8");

//获取参数

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

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

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

//封装对象

UserDao loginUser=new UserDao();

loginUser.setUsername(username);

loginUser.setPassword(password);

// 实例化一个StudentResponsitory对象

UserRespository userd = new UserRespository();

String usernameone=userd.getList().getUsername();

String passwordone=userd.getList().getPassword();

// //判断userd

// if(userd==null){

// //登录失败

// request.getRequestDispatcher("/failServlet").forward(request,response);

// }else{

// //登录成功

// //存储数据

// request.setAttribute("userd",userd);

// //转发

// request.getRequestDispatcher("/successServlet").forward(request,response);

// }

// System.out.println("--------------1---------------");

// System.out.println(usernameone);

// System.out.println("---------------2--------------");

// System.out.println(passwordone);

// System.out.println("---------------3--------------");

// System.out.println(userd.QueryAll());

// System.out.println("---------------4--------------");

// System.out.println(userd.getList().get(0).getUsername());

// System.out.println("---------------5--------------");

// System.out.println(userd.getList().get(0).getPassword());

// System.out.println("---------------6--------------");

//获取checkCode_session

HttpSession session=request.getSession();

String checkCode_session=(String) session.getAttribute("checkCode_session");

//删除session中存储的验证码

session.removeAttribute("checkCode_session");

//先判断验证码是否正确

if(checkCode_session!=null && checkCode_session.equalsIgnoreCase(checkCode)){

//忽略大小写比较

//验证码正确

//判断用户名和密码是否一致

if(usernameone.equals(username)&&passwordone.equals(password)){

//需要调用数据库来进行操作

//登录成功

//存储信息,用户信息

session.setAttribute("user",username);

//重定向到success.jsp

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

}else{

//登录失败

//存储提示信息到request

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

//转发到登录页面

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

}

}else{

//验证码不一致

//存储提示信息到request

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

//转发到登录页面

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

}

}

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

this.doPost(request, response);

}

}

验证码设计

package cn.itcast.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 {

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

int width = 100;

int height = 50;

//创建一对象,在内存中图片(验证码图片对象)

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

//美化图片

//2.1.填充背景色

Graphics g = image.getGraphics();//画笔对象

g.setColor(Color.pink);//设置画笔颜色

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

//2.2.画边框

g.setColor(Color.BLUE);

g.drawRect(0, 0, width - 1, height - 1);

String str = "ABCDEFGHIJKLMNOPQRSTOVWXYZabcdefghijklmnopqrstovwxyz";

//生成随机角标

Random ran = new Random();

StringBuilder sb=new StringBuilder();

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

int index = ran.nextInt(str.length());

//获取字符

char ch = str.charAt(index);//随机字符

sb.append(ch);

g.drawString(ch + "", width / 5 * i, height / 2);

//2.3.写验证码

}

String checkCode_session=sb.toString();

//将验证码存入session

request.getSession().setAttribute("checkCode_session",checkCode_session);

//2.4画干扰线

g.setColor(Color.GREEN);

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

int x1 = ran.nextInt(width);

int x2 = ran.nextInt(width);

int y1 = ran.nextInt(height);

int y2 = ran.nextInt(height);

g.drawLine(x1, x1, x2, y2);

}

//将图片输出到页面显示

ImageIO.write(image, "jpg", response.getOutputStream());

}

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

this.doPost(request, response);

}

}