jsp验证码

来源:互联网 发布:Java毫秒和日期的换算 编辑:程序博客网 时间:2024/06/06 02:43

1、首先是建一个注册界面reg.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'reg.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><script type="text/javascript" src="js/jquery-1.11.0.min.js"></script><script>$(function() {//点击事件$("#change").click(function() {//设置验证码图片属性值$("#imgcode").attr("src", "regServlet?random=" + Math.random());});});</script><body><div><form action="regCheck" method="post"><input type="text" name="codestr" /> <img id="imgcode" alt="yzm"src="regServlet"><a id="change" href="javascript:void(0)">换一张</a><input type="submit" value="注册" /></form></div></body></html>

2、创建一个Servlet用于生成验证码CheckCode.java

package com.jsp.servlet;import java.awt.Color;import java.awt.Graphics;import java.awt.Font;import java.awt.image.BufferedImage;import java.io.IOException;import java.io.PrintWriter;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class CheckCode extends HttpServlet {// 字典private static final String strNum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";// 随机生成4个字符public String getStr() {String str = "";Random random = new Random();for (int i = 0; i < 4; i++) {str += strNum.charAt(random.nextInt(strNum.length()));}return str;}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 生成4个随机字符String rndStr = getStr();// 创建画板工具,把4个随机字符画入图像// 面板BufferedImage image = new BufferedImage(70, 30,BufferedImage.TYPE_INT_RGB);// 画笔Graphics pen = image.getGraphics();pen.setColor(Color.white);// 矩形pen.fillRect(0, 0, 70, 30);pen.setFont(new Font("微软雅黑", Font.BOLD, 20));// 把字符画入图片for (int i = 0; i < 4; i++) {//Color的参数决定了字符的颜色pen.setColor(new Color(180, 239, 110));pen.drawString(rndStr.charAt(i) + "", i * 15 + 5, 20);}//把字符放入sessionHttpSession session = request.getSession();session.setAttribute("checkCode", rndStr);// 传回到客户端// response对象中获取到一个输出流,将画好的图像传递给客户端ServletOutputStream sos = response.getOutputStream();//写入图像ImageIO.write(image, "png", sos);sos.flush();sos.close();}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {}}
3、创建一个Servlet用于检验输入的内容是否与验证码相同regCheck.java,如果相同则跳转到index.jsp页面,否则重定向到reg.jsp页面

package com.jsp.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class regCheck extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String str=request.getParameter("codestr");HttpSession session = request.getSession();String str1=(String) session.getAttribute("checkCode");if(str.equals(str1)){response.sendRedirect("index.jsp");}else{response.sendRedirect("reg.jsp");}}}

4、web.xml的配置为

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <display-name>jsp-yanzhengma</display-name>  <servlet>    <servlet-name>CheckCode</servlet-name>    <servlet-class>com.jsp.servlet.CheckCode</servlet-class>  </servlet>  <servlet>    <servlet-name>regCheck</servlet-name>    <servlet-class>com.jsp.servlet.regCheck</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>CheckCode</servlet-name>    <url-pattern>/regServlet</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>regCheck</servlet-name>    <url-pattern>/regCheck</url-pattern>  </servlet-mapping>  <welcome-file-list>    <welcome-file>index.html</welcome-file>    <welcome-file>index.htm</welcome-file>    <welcome-file>index.jsp</welcome-file>    <welcome-file>default.html</welcome-file>    <welcome-file>default.htm</welcome-file>    <welcome-file>default.jsp</welcome-file>  </welcome-file-list></web-app>

5、效果为


原创粉丝点击