jsp页面验证码源代码

jsp页面验证码源代码
jsp页面验证码源代码

jsp页面验证码源代码

在java后台中生成验证码的ImageIO传到前端页面显示,同时把验证码的v alue值传入session 中用于与用户输入的验证码进行匹配,在用户验证中使用ajax技术,在不刷新页面的同时进行验证码验证。

程序结构图:

VerifyCodeUtils程序主要内容为通过Java生成验证码的图片,以及验证码的value值,程序如下:

package utils;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.util.HashMap;

import java.util.Map;

import java.util.Random;

publicclass VerifyCodeUtils {

privatestatic BufferedImage image = null;

privatestatic Random random = new Random();

//在自己定义的一些数中,生成4位随机数

publicstatic String getVerifyCode() {

String str = "";

char[] code = newchar[]{'A','B','C','D','E','F','G','H','I ','J','K','L','M','N','P','Q','R','S','T','U',

'V','W','X','Y','Z','a','b','c','d','e','f','g','h','i',' j','k','m','n','p','q','r','s','t',

'u','v','w','x','y','z','2','3','4','5','6','7','8','9'};

Random random = new Random();

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

str += String.valueOf(code[random.nextInt(code.length)]);

}

return str;

}

//生成验证码图像

publicstatic Map getVerifyCode(int width, int heigth) {

VerifyCodeUtils.image = new BufferedImage(width, heigth, Bu fferedImage.TYPE_INT_RGB);

Graphics2D g = (Graphics2D) VerifyCodeUtils.image.g etGraphics();

String verifyCode = getVerifyCode();

Map map = new HashMap();

map.put("verifyCode", verifyCode);

//将图像填充为白色

g.setColor(Color.WHITE);

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

//设置字体

g.setFont(new Font("宋体", Font.BOLD + Font.ITALIC, heigth-

10));

//画边框。

g.setColor(VerifyCodeUtils.getColor());

g.drawRect(0, 0, width, heigth);

//随机产生干扰线,使图象中的认证码不易被其它程序探测到

g.setColor(Color.BLACK);

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

int x = VerifyCodeUtils.random.nextInt(width);

int y = VerifyCodeUtils.random.nextInt(heigth);

int xl = VerifyCodeUtils.random.nextInt(5);

int yl = VerifyCodeUtils.random.nextInt(5);

g.setColor(getColor());

g.drawLine(x, y, x + xl, y + yl);

}

char c;

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

c = verifyCode.charAt(i);

g.drawString(c+"", i*20+40, heigth-10);

}

map.put("image", VerifyCodeUtils.image);

return map;

}

//随机化颜色

publicstatic Color getColor() {

int red = 0, green = 0, blue = 0;

// 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。red = VerifyCodeUtils.random.nextInt(255);

green = VerifyCodeUtils.random.nextInt(255);

blue = VerifyCodeUtils.random.nextInt(255);

returnnew Color(red,green,blue);

}

}

VerifyCodeServlet把VerifyCodeUtils生成的验证码图片通过io流传入前端显示,代码如下:

package Servlet;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.util.Map;

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 utils.VerifyCodeUtils;

/**

* Servlet implementation class VerifyCodeServlet

*/

@WebServlet("/")

publicclass VerifyCodeServlet extends HttpServlet { privatestaticfinallong serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public VerifyCodeServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, Ht tpServletResponse response)

*/

protectedvoid doGet(HttpServletRequest request, HttpServlet Response response) throws ServletException, IOException {

response.setHeader("Expires", "-1");

response.setHeader("Cache-Control", "no-cache");

response.setHeader("Pragma", "no-cache");

response.setHeader("Content-type", "image/jpeg");

Map map = VerifyCodeUtils.getVerifyCode(223, 50);

//把verifyCode的数值传入session中用于验证用户输入的验证码是否正确

request.getSession().setAttribute("verifyCode", map.get(" verifyCode").toString().toUpperCase());

//通过IO流传入前端显示

ImageIO.write((BufferedImage) map.get("image"), "jpg", res ponse.getOutputStream());

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, H ttpServletResponse response)

*/

protectedvoid doPost(HttpServletRequest request, HttpServle tResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}

}

页面jsp代码如下:

<%@ pagelanguage="java"contentType="text/html; charset=utf -8"

pageEncoding="utf-8"%>

验证码测试界面

js实现ajax代码如下:

/**

*

*/

function check_verifyCode(){

var XMLHttpReqVerifyCode = null;

var url =document.getElementById("base").href +"/servlet/Te stVerifyCodeServlet";

var verifyCode = document.getElementById("verifyCode").valu e;

var tip = document.getElementById("tip");

var errorTip = "输入的验证码不正确";

var successTip = "输入的验证码正确";

tip.innerHTML=errorTip;

if(verifyCode==null || verifyCode==""){

tip.innerHTML=errorTip;

tip.style.color = "red";

}else{

if(window.XMLHttpRequest) {

//DOM2浏览器

XMLHttpReqVerifyCode = new XMLHttpRequest();

} elseif(window.ActiveXObject) {

//使用json语法创建数组

var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', ' MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP '];

for(var i = 0; i

try{

XMLHttpReqVerifyCode = new ActiveXObject(MSXML[i]);

} catch(e) {

}

}

}

XMLHttpReqVerifyCode.open("POST",url, true);

XMLHttpReqVerifyCode.setRequestHeader("Content-Type", "ap plication/x-www-form-urlencoded");

XMLHttpReqVerifyCode.onreadystatechange = function testVeri fyCodeServletResponse(){

if(XMLHttpReqVerifyCode.readyState == 4&& (XMLHttpReqVerif yCode.status == 200 || XMLHttpReqVerifyCode.status == 304)) {

if(XMLHttpReqVerifyCode.responseText == 1){

tip.innerHTML = successTip;

tip.style.color = "green";

}elseif(XMLHttpReqVerifyCode.responseText == 0){

tip.innerHTML = errorTip;

tip.style.color = "red";

}

}

}

XMLHttpReqVerifyCode.send("code="+verifyCode);

}

//ajax前后台交互

function createXMLHttpRequest(XMLHttpReq) {

if(window.XMLHttpRequest) {

//DOM2浏览器

XMLHttpReq = new XMLHttpRequest();

} elseif(window.ActiveXObject) {

//使用json语法创建数组

var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', ' MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP '];

for(var i = 0; i

try{

XMLHttpReq = new ActiveXObject(MSXML[i]);

} catch(e) {

}

}

return XMLHttpReq;

}

}

}

TestVerifyCodeServlet与js交互代码为:

package Servlet;

import java.io.IOException;

import java.io.PrintWriter;

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 TestVerifyCodeServlet */

@WebServlet("/TestVerifyCodeServlet")

publicclass TestVerifyCodeServlet extends HttpServlet { privatestaticfinallong serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public TestVerifyCodeServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, Ht tpServletResponse response)

*/

protectedvoid doGet(HttpServletRequest request, HttpServlet Response response) throws ServletException, IOException {

// TODO Auto-generated method stub

String codeTrue = (String) request.getSession().get Attribute("verifyCode");

String codeInput = request.getParameter("code");

System.out.println(codeInput);

response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter();//打印流

if(codeInput!=null){

if(codeInput.toUpperCase().equals(codeTrue)){

out.println("1");

}else{

out.println("0");

}

}

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, H ttpServletResponse response)

*/

protectedvoid doPost(HttpServletRequest request, HttpServle tResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}

}

xml代码为

demo.jsp

VerifyCodeServlet

Servlet.VerifyCodeServlet

VerifyCodeServlet

/servlet/VerifyCodeServlet

TestVerifyCodeServlet

Servlet.TestVerifyCodeServlet

TestVerifyCodeServlet

/servlet/TestVerifyCodeServlet

结果显示:

如何在JSP中使用MYSQL中的登录界面(内涵完整代码)

如何在JSP中使用MYSQL中的登录界面 1.和创建登录的JSP界面,action指向servlet中的方法 2.创建一个新的字符用于存储新的数字和字符String msg=""; 3.获取JSP中输入的数据。String account = request.getParameter("name"); 4.Try语句调用后面的方法。先写方法 方法: 连接数据库和MYSQL中方法一样 try{ String driverName="com.mysql.jdbc.Driver"; //数据库用户名 String userName="root"; //密码 String userPasswd="123456"; //数据库名 String dbName="xueshenbiao"; //表名 String tableName="nima"; //联结字符串 String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+u serPasswd; Class.forName("com.mysql.jdbc.Driver").newInstance(); java.sql.Connection connection=DriverManager.getConnection(url); Statement statement = connection.createStatement(); 重点如下: 之前习惯了用select去巡查SQL中数据,现在因为是验证登录所以只要比对是否有一样的数据即可,现在采用SELECT count(*)用于计数,如果返回是0说明不存在登录的用户,返回1说明存在,返回>1说明不止一个。 5.接下来寻找个数用while(rs.next())寻找个数 6.和删除一样用result返回参数. 7.此时的result有了自己的判断力用于前面的判断。 跳回前面的try语句 用If()else语句来判断登录的界面

JSP生成验证码_源代码

jsp验证码实现源代码 (2011-10-16 11:11:40) 验证码原理:①首先随机生成数字或字母;②把生成的数字或字母保存在Session这次会话中;③最后,在登陆页面上把接收用户输入的验证码与生成的验证码相匹配,成功返回TRUE,失败则返回FALSE; 演示程序包括三个文件: 1.login.jsp:登录页面 2.code.jsp:生成验证码图片页面 3.check.jsp:验证结果 code.jsp <%@ page contentType="image/jpeg" import="java.awt.*, java.awt.image.*,java.util.*,javax.imageio.*" %> <% // 在内存中创建图象 int width=60, height=20; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取图形上下文 Graphics g = image.getGraphics(); // 设定背景色 g.setColor(new Color(0xDCDCDC)); g.fillRect(0, 0, width, height); //画边框 g.setColor(Color.black); g.drawRect(0,0,width-1,height-1); // 随机产生的认证码(4位数字) String rand =""+ (Math.random()*10000); rand = rand.substring(0,rand.indexOf(".")); switch(rand.length()) { case 1: rand = "000"+rand; break; case 2: rand = "00"+rand; break; case 3: rand = "0"+rand; break; default: rand = rand.substring(0,4); break; }

jsp验证码生成以及刷新

关于jsp验证码生成,显示,验证和刷新: 1:四位数据的验证图片生成,用servlet实现 2:在web.xmlli配置servlet 3:页面上显示servlet生成的图片 4:关于验证码输入数据的验证 5:验证码的刷新 ——————————————————————– 1:四位数据的验证图片生成,用servlet实现,servlet代码如下: import java.io.*; import javax.servlet.http.*; import javax.servlet.*; import java.util.*; import java.awt.*; import java.awt.image.*; import javax.imageio.*; public class vImage extends HttpServlet { public void init(ServletConfig conf) throws ServletException { super.init(conf); } public void doGet(HttpServletR equest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType(‖image/jpeg‖); res.setHeader(‖Pragma‖, ―No-cache‖); res.setHeader(‖Cache-Control‖, ―no-cache‖); res.setDateHeader(‖Expires‖, 0); HttpSession session = req.getSession(); // 在内存中创建图象 int width = 60, height = 20; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取图形上下文 Graphics g = image.getGraphics(); // 生成随机类 Random random = new Random();

jsp页面验证码源代码

jsp页面验证码源代码 在java后台中生成验证码的ImageIO传到前端页面显示,同时把验证码的v alue值传入session 中用于与用户输入的验证码进行匹配,在用户验证中使用ajax技术,在不刷新页面的同时进行验证码验证。 程序结构图: VerifyCodeUtils程序主要内容为通过Java生成验证码的图片,以及验证码的value值,程序如下: package utils; import java.awt.Color; import java.awt.Font;

import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; import java.util.Random; publicclass VerifyCodeUtils { privatestatic BufferedImage image = null; privatestatic Random random = new Random(); //在自己定义的一些数中,生成4位随机数 publicstatic String getVerifyCode() { String str = ""; char[] code = newchar[]{'A','B','C','D','E','F','G','H','I ','J','K','L','M','N','P','Q','R','S','T','U', 'V','W','X','Y','Z','a','b','c','d','e','f','g','h','i',' j','k','m','n','p','q','r','s','t', 'u','v','w','x','y','z','2','3','4','5','6','7','8','9'}; Random random = new Random(); for(int i = 0; i <4; i++) { str += String.valueOf(code[random.nextInt(code.length)]); } return str; }

php用户登录页面代码源代码

//登入页面 $conn=mysql_connect('127.0.0.1','root','')or die("连接失败"); mysql_select_db('tujian',$conn)or die("未找到该数据库"); define(ALL_PS,"vivid");mysql_query("set names GBK"); if($_POST[submit]){ $postcode=strtolower($_POST["code"]); $postcode=strtoupper($_POST["code"]); $uid=str_replace(" ","",$_POST[uid]); $sql="select * from users where `uid`='$_POST[uid]'"; $query=mysql_query($sql); $user=is_array($row=mysql_fetch_array($query)); $mi=$user?md5($_POST[pass].ALL_PS)==$row[pass]:FALSE; if($mi){ $_SESSION[uid]=$row[uid]; $_SESSION[name]=$row[name]; $_SESSION[id]=$row[id]; $_SESSION[user_shell]=md5($row[uid].$row[pass].ALL_PS); if( $_SESSION["code"]==$postcode){ echo""; }else{ echo"

验证码输入错误,请重新输入!
"; } } else{ echo"
用户名或密码输入错误
"; session_destroy(); } } ?>