分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

网页登陆注册(jsp实现)验证码

发布时间:2023-09-06 02:05责任编辑:熊小新关键词:jsjsp验证码
这是一个登陆页面,有登陆验证和验证码的功能
(1)生成验证码的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.File;
import java.io.IOException;

public class YzmServlet extends HttpServlet {
//设置验证码图片的宽度
private static final int WIDTH = 100;
//设置验证码的高度
private static final int HEIGHT = 80;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ???????????????????//产生一张图片 ???????BufferedImage image=new BufferedImage(Width,Height,BufferedImage.TYPE_INT_RGB); ???response.setHeader("Pragram","no-cache"); ???response.setHeader("Cache-Control","no-catch"); ???response.setDateHeader("Exprires",0); ???Graphics g=image.getGraphics(); ???????????//设置背景颜色 ???g.setColor(Color.WHITE); ???????????//填充图片 ???g.fillRect(0,0,Width,Height); ???????????//设置验证码颜色 ???g.setColor(Color.RED); ???????????//设置验证码字体及大小 ???Font font=new Font("微软雅黑",Font.BOLD,20); ???????????//获取验证码 ???String str=getRandomString(4); ???????????//获取session ??HttpSession session=request.getSession(); ????????//给str做标记 ??session.setAttribute("str",str); ????????//在图片中画出验证码 ???g.drawString(str,50,50); ???????????//在图片中随机划线 ???for (int i=0;i<15;i++){ ???????int x1= RandomUtils.nextInt(0,Width); ???????int x2=RandomUtils.nextInt(0,Width); ???????int y1=RandomUtils.nextInt(0,Height); ???????int y2=RandomUtils.nextInt(0,Height); ???????????????????????????Color color=new Color(RandomUtils.nextInt(0,255),RandomUtils.nextInt(0,255),RandomUtils.nextInt(0,255)); ???????g.setColor(color); ???????g.drawLine(x1,y1,x2,y2); ???} ???????????//输出图片 ???ImageIO.write(image,"jpg",response.getOutputStream());}

}

(2)登陆验证的servlet:
import org.apache.commons.lang3.RandomUtils;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import java.io.IOException;

public class LoginServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ???doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ???response.setCharacterEncoding("utf-8"); ???response.setContentType("text/html;charset=utf-8"); ???request.setCharacterEncoding("utf-8"); ???????????//获取输入的验证码的值 ???String yzm=request.getParameter("yzm"); ???????????//获取输入的用户名 ???String username=request.getParameter("username"); ???????????//获取输入的密码 ???String userpassword=request.getParameter("userpassword"); ???????????//获取session ???HttpSession session=request.getSession(); ???????????//获取session标记的值,即服务端生成的验证码的值 ???String yzm2=(String) session.getAttribute("str"); ??//比较验证码 ????????if (yzm.equals(yzm2)){ ??????if(username.equals("zhangsan")&&userpassword.equals("123456")){ ??????????response.getWriter().print("登陆成功"); ??????}else{ ??????????response.getWriter().print("用户名或密码错误"); ??????} ???}else{ ???????response.getWriter().print("验证码错误"); ???}}

}
(3)登陆界面(比较简陋)
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登陆</title>
</head>
<script type="text/javascript">
function refreshImg() {
document.getElementById("y").src="./Yzm";
}

</script>

<body>
<table width="760px" height="100%" align="center" style="background-color: azure">
<tr>
<td>
<div align="center"></div>
<table width="200" height="300">
<tr>
<td>
<form action="./Login" name="form1" method="post">
用户名:<input type="text" name="username">
密   码:<input type="password" name="userpassword">
<a>
<img id="y" name="y" src="./Yzm" height="100" onclick="refreshImg()">
</a>
<button type="submit" value="看不清?" style="background-color: red" onclick="refreshImg()">看不清?</button><br>
验证码:<input type="text" name="yzm" id="yzm" style="width: 30px" onclick="refreshImg()"><br>

 ????????????????????<button type="submit" onclick="check()">提交</button> ????????????????????<button type="reset">重置</button> ????????????????</form> ????????????</td> ????????</tr> ???????</table> ???????</div> ???</td></tr>

</table>

</body>
</html>
(4)配置web.xml
<?xml version="1.0" encoding="utf-8"?>

???Welcome to Tomcat ??? ???????Welcome to Tomcat ??? ??? ???????LoginServlet ???????servlet.LoginServlet ??? ??? ???????LoginServlet ???????/Login ??? ??? ???????YzmServlet ???????servlet.YzmServlet ??? ??? ???????YzmServlet ???????/Yzm ???**界面还有一些问题,不能更换验证码.**

网页登陆注册(jsp实现)验证码

原文地址:http://blog.51cto.com/13670525/2149116

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved