验证码代码编写

index.jsp 页面

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<html:html>
<head>
<title><bean:message key="application.title" /></title>
<link rel="icon" href="./images/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="./styles/login.css" type="text/css"
media="all" />
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<meta name="author" content="neusoft" />
<meta name="description" content="MCIS System" />
<meta name="copyright" content="copyright (c) 2008 neusoft" />
<style type="text/css">
<!--
.style1 { border-color: #009900 }
-->
</style>
</head>
<body >
<div id="layout-left"></div>
<div id="layout-middle">

<div id="body">
<div id="body_left">
<p></p>
</div>
<div id="body_right">
<html:form method="post" action="/logon.do" focus="user.value(ID)"
onsubmit="return clickSubmit();">
<ul>
<li></li>
<li>
用户名:
<br>
<html:text size="16" property="user.value(ID)"
onkeyup="checkAdmin();" onblur="checkAdmin();"
style="width:160;height:20" maxlength="16"/>
</li>
<li>
密&nbsp&nbsp码:
<br>
<!--<input class="fixed" type="password" size="16" id="password"/>-->
<html:password size="16" property="user.value(PASSWORD)"
style="width:160;height:20" maxlength="10"/>
</li>
<li>
验证码:
<br>
<html:text property="user.value(rs)" styleId="rs"
maxlength="4" style="width:100;height:20" value=""
onfocus="if(this.value==‘‘) this.value=‘‘;"
onblur="if(this.value==‘‘) {this.value=‘‘;}" />
<a href="javascript:show(document.getElementById(‘hcode‘))"><img
id="hcode" title="点击刷新"
src="./random.jsp" hspace="15" class="style1"
style="text-decoration:none" /></a>
</li>
<li>
登录方式:
<html:checkbox styleId="adminType" style="border: none"
property="user.value(TYPE)" value="0" />
独占模式
</li>
<li>
<input class="bt" type="submit" value="登 录" />
<!--<a href="#">忘记密码?</a>-->
<input class="bt" type="button" value="重 置"
onclick="clickReset();">
</li>
</ul>
</html:form>
<div id="message">
<%@ include file="../common/messagehandle.jsp"%>
</div>
<span id="logo"></span>
</div>
</div>

</div>
<div id="layout-right"></div>

<script type="text/javascript">

<!--
var windowName = "processWindow";

function init(){
setTitle2Top();
window.name = windowName;
}

function onEnter(){

if(window.event.keyCode == 13) //if press the Enter key
//window.event.keyCode = 9; //replace it with the Tab key
userBean.submit();
}
function checkAdmin(){

if(‘admin‘== userBean.elements["user.value(ID)"].value){
document.getElementById("adminType").disabled=false;
}else{
document.getElementById("adminType").disabled="true";
}
}

function clickSubmit(){
var main = document.getElementById("main");
var errMsg = document.getElementById("message");
var Id=userBean.elements["user.value(ID)"].value;
var orignPass=userBean.elements["user.value(PASSWORD)"].value;
var RS=userBean.elements["user.value(rs)"].value;
var orignRS=userBean.elements["user.value(rs)"].value;

if(Id == null || Id==""){
errMsg.style.color="#CC0000";
errMsg.innerText = "请输入用户名";
userBean.elements["user.value(ID)"].focus();
return false;
}
if(orignPass == null || orignPass==""){
errMsg.style.color="#CC0000";
errMsg.innerText = "请输入密码";
userBean.elements["user.value(PASSWORD)"].focus();
return false;
}

if(orignRS == null || orignRS==""){
errMsg.style.color="#CC0000";
errMsg.innerText = "请输入验证码";
userBean.elements["user.value(rs)"].focus();
return false;
}
else {
return true;
//userBean.submit();
}
}
function clickReset(){
userBean.reset();
load();
var errMsg = document.getElementById("message");
errMsg.innerText="";
}
function load(){

//document.getElementById("type1").checked="true";
//alert(document.getElementById("type2").disabled);
document.getElementById("adminType").disabled=true;
}

function show(o){//重载验证码
var timenow = new Date().getTime();
o.src="./random.jsp?d="+timenow;
//超时执行;
setTimeout(function(){
o.src="./random.jsp?d="+timenow;
}
);
}
//-->
</script>
</body>
<html:javascript formName="userBean" dynamicJavascript="true" staticJavascript="true"/>
</html:html>

random.jsp

<%@ page contentType="image/jpeg; charset=GBK"%>
<%@ page import="java.awt.*,java.awt.image.*"%>
<%@ page import="java.util.*"%>
<%@ page import="com.sun.image.codec.jpeg.*"%>

<%!//产生随机颜色函数getRandColor
Color getRandColor(int fc, int bc) {
Random r = new Random();
if (fc > 255) fc = 255;
if (bc > 255) bc = 255;
int red = fc + r.nextInt(bc - fc); //red
int green = fc + r.nextInt(bc - fc); //green
int blue = fc + r.nextInt(bc - fc); //blue
return new Color(red, green, blue);
}%>
<%
//设置页面不缓存
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);

//创建随机类
Random r = new Random();

//在内存中创建图像,宽度为width,高度为height
int width = 60, height = 20;
BufferedImage pic = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

//获取图形上下文环境
Graphics gc = pic.getGraphics();

//设定背景图形上下文填充
gc.setColor(getRandColor(200, 250));
gc.fillRect(0, 0, width, height);

//设定图形上下文环境字体
gc.setFont(new Font("Times New Roman", Font.PLAIN, 18));

//随机产生50条干扰直线,使图像中的认证码不易被其他分析程序探测
gc.setColor(getRandColor(160, 200));
for (int i = 0; i < 50; i++) {
int x1 = r.nextInt(width);
int y1 = r.nextInt(height);
int x2 = r.nextInt(15);
int y2 = r.nextInt(15);
gc.drawLine(x1, y1, x1 + x2, y1 + y2);
}

//随机产生50个干扰点,使图像中的验证码不易被其他分析程序探测到
gc.setColor(getRandColor(120, 240));
for (int i = 0; i < 50; i++) {
int x = r.nextInt(width);
int y = r.nextInt(height);
gc.drawOval(x, y, 0, 0);
}
//随机产生4位数字的验证码
String RS = "";
String rn = "";
for (int i = 0; i < 4; i++) {
//产生10以内的随机数字rn
rn = String.valueOf(r.nextInt(10));
RS += rn;
//将认证码用drawString函数显示到图像里
gc.setColor(new Color(20 + r.nextInt(110), 20 + r.nextInt(110), 20 + r
.nextInt(110)));
gc.drawString(rn, 13 * i + 6, 16);
}

//释放图形上下文环境
gc.dispose();

//将认证码RS存入SESSION中共享
session.setAttribute("random", RS);

//输出生成后的验证码图像到页面
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
encoder.encode(pic);

out.clear();
out = pageContext.pushBody();
%>

时间: 01-10

验证码代码编写的相关文章

大师传承-java代码编写的30条建议

成为一个优秀的Java程序员,有着良好的代码编写习惯是必不可少的.下面就让我们来看看代码编写的30条建议吧. (1) 类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母.例如: ThisIsAClassName thisIsMethodOrFieldName 若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母.这样便可标志出它们属于编译期的常数. Java包(Package

JAVA代码编写的30条建议

列举了大量有用的建议,帮助大家进行低级程序设计,并提供了代码编写的一般性指导: (1) 类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母.例如: ThisIsAClassName thisIsMethodOrFieldName 若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母.这样便可标志出它们属于编译期的常数. Java包(Package)属于一种特殊情况:它们全都是

为什么谷歌要执行严格的代码编写规范(转)

我们在谷歌所做事情中另外一个让我感到异常有效.有用的制度是严格的编码规范. 在到Google工作之前,我一直认为编码规范没有什么用处.我坚信这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率的东西. 我是大错特错了. 在谷歌,我可以查看任何的代码,进入所有谷歌的代码库,我有权查看它们.事实上,这种权限是很少人能拥有的.但是,让我感到惊讶的却是,如此多的编码规范-缩进,命名,文件结构,注释风格-这一切让我出乎意料的轻松的阅读任意一段代码,并轻易的看懂它们.这让我震惊-因为我以为这些规

HTML 代码编写的30条技巧

本文总结了30条HTML代码编写指南,只要在编写HTML代码的过程中牢记它们,灵活运用,你一定会写出一手漂亮的代码,早日迈入专业开发者的行列. 1. 一定要闭合HTML标签 在以往的页面源代码里,经常看到这样的语句: <li>Some text here. <li>Some new text here. <li>You get the idea. 也许过去我们可以容忍这样的非闭合HTML标签,但在今天的标准来看,这是非常不可取的,是必须百分百避免的.一定要注意闭合你的H

HTML和CSS的代码编写规范

在很多开发人员眼里,编码HTML简直容易极了,编写CSS不但简单有时还会显得很繁琐-相同的属性得一个劲不停地写.为此,曾经自己也迷惑过也遇到过不少问题,但随着写&读的前端代码渐渐增多,慢慢体会到,“能写”和“会写”之间还是有一定距离的.很多时候,你可以“这样做”,但并不意味着“你应该”这么做. 合理地编写HTML和CSS,可以让代码看起来更专业.即便是很简单的几行代码,也要写的有性格.嗯~用饱含工匠精神的态度去写码,你一定会在苦逼中作乐的. 以下整理些从别人那读到学到的,同时自己认可的琐碎的点,

asp.net中ashx生成验证码代码放在Linux(centos)主机上访问时无法显示问题

最近有个项目加入了验证码功能,就从自己博客以前的代码中找到直接使用,直接访问验证码页面报错如下: 源代码:asp.net中使用一般处理程序生成验证码 Application Exception System.ArgumentException The requested FontFamily could not be found [GDI+ status: FontFamilyNotFound] Description: HTTP 500.Error processing request. De

这些HTML、CSS知识点,面试和平时开发都需要 No10-No11(知识点:表格操作、代码编写规则)

系列知识点汇总 1.基础篇 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) 这些HTML.CSS知识点,面试和平时开发都需要 No5-No7(知识点:文字设置.设置背景.数据列表) 这些HTML.CSS知识点,面试和平时开发都需要 No8-No9(知识点:媒体操作.构建表单) 这些HTML.CSS知识点,面试和平时开发都需要 No10-No11(知识点:表格操作.代码编写规则) 2.进阶篇 如何提升我的HTML&CSS技术,编写有

Python——类代码编写细节

类代码编写细节 继续学习类.方法和继承. ================================================================================ class语句 以下是class语句的一般形式: class <name>(superclass,...): data = value def method(self,...): self.member = value 在class语句内,任何赋值语句都会产生类属性,而且还有特殊名称方法重载运

javascript实现的验证码代码实例

javascript实现的验证码代码实例:验证码大家应该不陌生,主要是为了网站的安全性,防止恶意注册和登陆.验证码实现的方式各有不同,下面是一段用javascript实现的验证码效果,供大家参考之用,希望能够给大家带来帮助.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="ht