javaWeb页面验证码的生成

编程入门 行业动态 更新时间:2024-10-25 10:23:10

javaWeb页面<a href=https://www.elefans.com/category/jswz/34/1771040.html style=验证码的生成"/>

javaWeb页面验证码的生成

下面是验证码生成的基本步骤和源码,如果有什么不足的请指出

首先设计jsp页面,Login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>带图形验证码的登陆界面</title>
</head>
<body>
<form method="POST" name="loginForm">用户名:<input type="text" name="userid"onclick="mes.innerHTML" value="${param.userid }"><br>密码:<input type="password" name="userpwd" value="${param.userpwd }"><br>验证码:<input type="text" name="checkcode"><img src="CheckCode" border="0"><input type="submit" value="换一张" onclick="loginForm.action='ChangeCheckCode'"><input type="submit" value="登陆" onclick="loginForm.action='LogCheck'">
<div id="mes">${requestScope.info }</div>
</form>
</body>
</html>

其次设计验证码生成的servlet,CheckCode.java

package servlet;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
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;/*** Servlet implementation class CheckCode*/
@WebServlet("/CheckCode")
public class CheckCode extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public CheckCode() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub
//		response.getWriter().append("Served at: ").append(request.getContextPath());response.setContentType("image/jpeg");HttpSession session = request.getSession();int width = 60;int height = 20;// Set the browser not to cache the pictureresponse.setHeader("Pragma", "N0-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);// Create a memory image and get its contextBufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics g = image.getGraphics();// Generating Random Verification Codes// Character table defining validation codesString chars = "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ";char[] rands = new char[4];for(int i=0;i<4;i++) {int rand = (int)(Math.random()*36);rands[i] = chars.charAt(rand);}// generating image// draw backgroundg.setColor(new Color(0xDCDCDC));g.fillRect(0, 0, width, height);// Random generation of 120 interference pointsfor(int i=0;i<120;i++) {int x = (int)(Math.random()*width);int y = (int)(Math.random()*height);int red = (int)(Math.random()*255);int green = (int)(Math.random()*255);int blue = (int)(Math.random()*255);g.setColor(new Color(red,green,blue));g.drawOval(x, y, 1, 0);}g.setColor(Color.black);g.setFont(new Font(null,Font.ITALIC|Font.BOLD,18));// Output different characters of verification code at different heightsg.drawString(""+rands[0], 1, 17);g.drawString(""+rands[1], 16, 15);g.drawString(""+rands[2], 31, 18);g.drawString(""+rands[3], 46, 16);g.dispose();// output the image to clientServletOutputStream sos = response.getOutputStream();ByteArrayOutputStream baos = new ByteArrayOutputStream();ImageIO.write(image,"JPEG",baos);byte[] buffer = baos.toByteArray();response.setContentLength(buffer.length);sos.write(buffer);baos.close();sos.close();// Put the validation code into sessionsession.setAttribute("checkCode", new String(rands));}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

设计更换验证码的servlet,ChangeCheckCode.java

package servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class ChangeCheckCode*/
@WebServlet("/ChangeCheckCode")
public class ChangeCheckCode extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public ChangeCheckCode() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.getWriter().append("Served at: ").append(request.getContextPath());}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub
//		doGet(request, response);request.setCharacterEncoding("utf-8");response.setContentType("html/text;character=utf-8");request.getRequestDispatcher("/Login.jsp").forward(request, response);}}

最后设计登陆验证的servlet,LogCheck.java

package servlet;import java.io.IOException;import javax.servlet.RequestDispatcher;
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;/*** Servlet implementation class LogCheck*/
@WebServlet("/LogCheck")
public class LogCheck extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public LogCheck() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.getWriter().append("Served at: ").append(request.getContextPath());}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub
//		doGet(request, response);request.setCharacterEncoding("utf-8");String userid = request.getParameter("userid");String userpwd = request.getParameter("userpwd");String usercheckcode = request.getParameter("checkcode");String info = "";HttpSession session = request.getSession();String servercheckcode = (String)session.getAttribute("checkCode");if(!servercheckcode.equalsIgnoreCase(usercheckcode)) {info = "验证码不正确,请重新输入";}else if("张三".equals(userid)&&"123".equals(userpwd)){info = "登陆成功";}else {info = "用户名或者密码不正确";}request.setAttribute("info", info);RequestDispatcher rd = request.getRequestDispatcher("/Login.jsp");rd.forward(request, response);}}

更多推荐

javaWeb页面验证码的生成

本文发布于:2023-07-28 20:39:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1303033.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:验证码   页面   javaWeb

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!