JSP登录页面包括验证码的验证

7 篇文章 0 订阅

login.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 'login.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>
  <%
  	String incode = (String)request.getParameter("code"); 
  	String rightcode = (String)session.getAttribute("rCode"); 
  	
  	if(incode != null && rightcode != null){
  		if(incode.equals(rightcode)){
  			out.println("验证码输入正确!");
  		}else{
  			out.println("验证码输入不正确,请重新输入!");
  		}
  	}
  %>
  
  <body>
  	<form action="login.jsp" method="post">
  	用户名:
  	<input type="text" name="username"/><br/>
  	密码:
  	<input type="password" name="password"/><br/>
  	验证码:
  	<img src="number.jsp"/>
  	<input type="text" name="code"/>
  	<input type="submit" value="登录"/>
  	</form>
  </body>
</html>

number.jsp提供了验证码的提取功能,如下:
<%@ page contentType="image/jpeg" language="java" import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*" pageEncoding="utf-8"%>

<%!
	Color getRandColor(int fc,int bc){
		Random random = new Random();
		if(fc > 255){
			fc = 255;
		}
		if(bc < 255){
			bc = 255;
		}
		int r = fc +random.nextInt(bc-fc);
		int g = fc +random.nextInt(bc-fc);
		int b = fc +random.nextInt(bc-fc);
		
		
		return new Color(r,g,b);
	}
%>

<% 
	//设置页面不缓存
	response.setHeader("Pragma","no-cache");
	response.setHeader("Cache-Control","no-catch");
	response.setDateHeader("Expires",0);
	
	//在内存中创建图象
	int width = 60;
	int height = 20;
	BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
	
	//创建图象
	Graphics g = image.getGraphics();
	//生成随机对象
	Random random = new Random();
	//设置背景色
	g.setColor(getRandColor(200,250));
	g.fillRect(0,0,width,height);
	//设置字体
	g.setFont(new Font("Tines Nev Roman",Font.PLAIN,18));
	//随机产生干扰线
	g.setColor(getRandColor(160,200));
	for(int i = 0; i < 255; i++){
		int x = random.nextInt(width);
		int y = random.nextInt(height);
		int xl = random.nextInt(12);
		int yl = random.nextInt(12);
	}
	//随机产生认证码,4位数字
	String sRand = "";
	for(int i = 0; i < 4; i++){
		String rand = String.valueOf(random.nextInt(10));
		sRand  += rand;
		//将认证码显示到图象中
		g.setColor(new Color(20 + random.nextInt(110),20 + random.nextInt(110),20 + random.nextInt(110)));
		g.drawString(rand,13*i+6,16);
	}
	session.setAttribute("rCode",sRand);
	//图像生效
	g.dispose();
	//输出图像到页面
	ImageIO.write(image,"JPEG",response.getOutputStream());
	out.clear();
	out = pageContext.pushBody();
%>


评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值