JSP页面生成验证码功能
<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.net.*" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<%
if(request.getAttribute("user")==null){
String username=null;
String password=null; Cookie[] cookies=request.getCookies();
for(int i=0;cookies!=null && i<cookies.length;i++){
if(cookies[i].getName().equals("user")){
username=URLDecoder.decode(cookies[i].getValue().split("-")[0],"UTF-8");
password=URLDecoder.decode(cookies[i].getValue().split("-")[1],"UTF-8");
}
if(username==null){
username="";
} if(password==null){
password="";
} pageContext.setAttribute("username", username);
pageContext.setAttribute("password", password);
}
}
%>
<title>登录页</title>
<script type="text/javascript" src="${pageContext.request.contextPath}/jquery/jquery-1.5.1.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/login.js"></script>
<link href="${pageContext.request.contextPath}/bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="${pageContext.request.contextPath}/bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
<script src="${pageContext.request.contextPath}/bootstrap/js/bootstrap.js"></script>
<script type="text/javascript">
function loadImage(){
document.getElementById("randImage").src = "${pageContext.request.contextPath}/image.jsp?"+Math.random(); //Math.random()方法非常重要,它使每次的请求都不同以便重新发送。如果每次的请求都一样,那么不会重新生成页面
}
</script>
<style type="text/css">
body {
padding-top: 40px;
padding-bottom: 40px;
background-color: #f5f5f5;
} body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td
{
margin: 0;
padding: 0;
} .form-signin {
max-width: 500px;
padding: 19px 29px 29px;
margin: 0 auto 20px;
background-color: #fff;
border: 1px solid #e5e5e5;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
-moz-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
} .form-signin .form-signin-heading,.form-signin .checkbox {
margin-bottom: 15px;
} .form-signin input[type="text"],.form-signin input[type="password"] {
height: auto;
margin-bottom: 15px;
padding: 7px 9px;
} h1 {
color: #fff;
background: #06b;
padding: 10px;
font-size: 200%;
text-align: center;
}
.labelError{line-height: 9px; font-size: 10pt; color: #f40000; border: 1px #ffb8b8 solid; padding: 8px 8px 8px 35px; background: url(/StudentManagerWeb/images/error.png) no-repeat; background-color: #fef2f2;}
</style>
</head>
<body>
<div>
<form class="form-signin" action="${pageContext.request.contextPath}/login" method="post" onSubmit="return check()">
<h2 class="form-signin-heading">管理员登录</h2>
<hr>
<table>
<tr>
<td ></td>
<td><font color="red">${error }</font></td>
<td></td>
</tr> <tr>
<td align="right">用户名:</td>
<td><input type="text" name="username" id="username" class="input" value="${username} "></td>
<td><label class="labelError" id="usernameError"></label></td>
</tr> <tr>
<td align="right">密码:</td>
<td><input type="password" name="password" id="password" class="input" value="${password }"></td>
<td><label class="labelError" id="passwordError"></label></td>
</tr> <tr>
<td align="right">验证码:</td>
<td><input type="text" name="imageValue" size="50px" id="imageValue" class="input" value="${verifyCode }"></td>
<td><label class="labelError" id="imageValueError"></label></td>
</tr> <tr>
<td ></td>
<td>
<img onClick="javascript:loadImage();" title="换一张试试" id="randImage"
src="${pageContext.request.contextPath}/image.jsp" width="100" height="200" border="1" align="absmiddle"></td>
<td> </td>
</tr>
<tr>
<td ></td>
<td colspan="2"><label class="checkbox"><input id="remember" name="remember" type="checkbox" value="remember-me">记住我一周 </label></td>
<td></td>
</tr>
<tr>
<td ></td>
<td><button type="submit" class="btn btn-primary">登陆</button> <input type="reset" class="btn btn-primary" value="重写"/></td>
<td></td>
</tr>
</table>
</form>
</div>
</body>
</html>
以上是 login.jsp
以下是image.jsp生成验证码
<%@ page contentType="image/jpeg"
import="java.awt.*,java.awt.image.*,java.util.*,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);
}%>
<%
out.clear(); /*这句针对resin服务器,如果是tomacat可以不要这句*/ out.clear();
//设置页面不缓存
response.setHeader("Prama","No-cache");
response.setHeader("Cache-Control","no-cache");
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 < 155; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x, y, x + xl, y + yl);
}
//随机产生认证码,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
session.setAttribute("sRand", sRand);
//图像生效
g.dispose();
//输出图像到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
%>
JSP页面生成验证码功能的更多相关文章
- ASP.NET ashx实现无刷新页面生成验证码
现在大部分网站登陆时都会要求输入验证码,在网上也看了一些范例,现在总结一下如何实现无刷新页面生成验证码. 效果图: 实现方式: 前台: <div> <span>Identify ...
- 使用JSP页面生成PDF报表
转自:http://developer.51cto.com/art/200907/134261.htm 1.iText简介 iText是一个开放源码的Java类库,可以用来方便地生成PDF文件.大家通 ...
- JSP页面中验证码的调用方法
步骤: 1.首先是要生成验证码 2.对验证码类进行调用:主要 实现的是 将验证码图片 输出到response.getOutputStream()这个输出流中 调用时,可以在页面调用,也可以在serv ...
- zf-关于查询机把index.jsp换成index_new.jsp页面之后把功能链接都改成新页面的简单方法
一开始我都是找action 然后一个一个的改 把onmousedown="goURL('index.jsp')" 改成 onmousedown="goURL('index ...
- 如何用jsp页面生成随机的验证数字码
checkNum.jsp <%@ page language="java" import="java.util.*,java.sql.*" pageEnc ...
- JSP页面 CTRL+F 功能实现
.res { color: rgba(255, 0, 0, 1) } .result { background: rgba(255, 255, 0, 1) } --- js 部分 var oldKey ...
- jsp页面简单的验证码实现
前段时间赶着结束毕业设计任务,现在完成了.回来补一下设计毕业设计的过程中遇到的问题和解决方案. 为了使小系统更有模有样,这里尝试在登录页面实现验证码功能.现描述一下我的解决方案. 首先看一下实现后的界 ...
- jsp中生成的验证码和存在session里面的验证码不一致的处理
今天在调试项目的时候发现,在提交表单的时候的验证码有问题,问题是这样的:就是通过debug模式查看得知:jsp页面生成的验证码和表单输入的页面输入的一样,但是到后台执行的时候,你会发现他们是不一样的, ...
- 生成验证码JSP【复用代码】
该JSP可以生成验证码.以后用到的时候就方便了. <%@ page language="java" pageEncoding="UTF-8"%> & ...
随机推荐
- 解决通用串行总线(USB)控制器有感叹号
(转自:http://blog.sina.com.cn/s/blog_44190ce10101ejth.html) 通用串行总线控制器:由于其配置信息(注册表中的)不完整或已损坏,Windows ...
- MyEclipse Tern was unable to complete your request in time
1.错误描述 2.错误原因 由错误提示可知,是由于MyEclipse Tern不能及时完成回复 3.解决办法 (1)Window--->Preferences--->MyEclipse-- ...
- Nodejs 实用工具集笔记
前言 工具列表 supervisor 安装 使用 node-inspector 安装 使用 SuperAgent 安装 使用 教程 cheerio 安装 使用 教程 总结 前言 学了Nodejs一天了 ...
- 类Flask实现前后端交互之代码聊天室
前言 框架 项目目录及各自功能 流程图 后端 server backend exector 前端 ajax 页面更新 演示 简易应答模式 代理模式处理外部请求 后台日志 总结 前言 这两天老是做梦,全 ...
- Problem: Query on the tree(二分+划分树)
题目链接: Problem: Query on the tree Time limit: 1s Mem limit: 64 MB Problem Description There ...
- 当导用模块与包的import与from的问题(模块与包的调用)
当在views.py里写impor models会不会报错呢? 1.Python里面的py文件都是每一行的代码. 2.Python解释器去找一个模块的时候,只去sys.path的路径里找 3.djan ...
- 火狐下的GreaseMonkey和Chrome下的tampermonkey使用手记
说明:GreaseMonkey的作用是让我们浏览器运行我们自己写的脚本,而且是在后台一直不断的运行,听着就让人兴奋. [ps:他们当然可以创建名单对哪些网站作用或者排除哪些站点]: 开始了:Greas ...
- [emwin]关于渐变色使用须知
由于需要用到渐变色,且出现问题,所以对渐变色有了解. 相关函数 GUI_DrawGradientV GUI_DrawGradientH 须知: 1.渐变色在565色和888色下的显示完全不一样.在模拟 ...
- EMQ (Erlang/Enterprise/Elastic MQTT Broker)
EMQ (Erlang/Enterprise/Elastic MQTT Broker) https://www.cnblogs.com/SteveLee/p/9843215.html MQ介绍 EMQ ...
- Java集合总结之Collection整体框架
前段时间一直在忙一个物联网的项目,所以Java的学习一直搁置,从今天开始继续学习!望大家多提宝贵意见! java.util包中包含了一些在Java 2中新增加的最令人兴奋的增强功能:类集.一个类集(c ...