JSP验证码页面-Serverlet

使用 Get方法,通过设置session和request设置页面状态


 <body>
<div>
<form method=get>
<tr>
<td align=left>请输入认证码:<input type=text name=rand maxlength=4 value=""></td>
<td><img border=0 src="checkcode" onclick="this.src = ‘checkcode?a=‘ + Math.random() + 100"></td>
<td colspan=2 align=center><input type=submit value="check"></td>
</tr>
</form>

<%
String rand = (String) session.getAttribute("rand");
String input = request.getParameter("rand");
if (input != null) {
if (rand.equals(input)) {
%>
<font color=green>验证码正确!</font>
<%
} else {
%>
<font color=red>验证码错误!</font>
<%
}
}
%>
</div>
</body>

上面是login.jsp下面是serverlet的


protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

// 在内存中创建图象
int width=60, 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("Times New Roman",Font.PLAIN,18));

//画边框
g.setColor(new Color(height));
g.drawRect(0,0,width-1,height-1);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<150;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(36));
if(Integer.parseInt(rand)>9){
int a = Integer.parseInt(rand)-9+64;
rand = String.valueOf((char)a);
//生成随机大写字母
}
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
HttpSession session = request.getSession();
session.setAttribute("rand",sRand);

// 图象生效
g.dispose();

// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
}

@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>

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);
}

JSP验证码页面-Serverlet

时间: 2024-10-11 20:06:58

JSP验证码页面-Serverlet的相关文章

jsp登陆页面验证码在火狐浏览器不能刷新问题处理方案

jsp登陆页面在火狐浏览器验证码不能刷新问题处理方案: <img src="YzmServlet" onClick="this.src='YzmServlet?time='+new Date()" width="59" height="20" style="width: 86px; height: 25px"> 关键代码:?time='+new Date() 如果不加入以上关键代码部分会导致在不

JSP验证码

在JSP页面上写随机的4位数验证码 实例化BufferedImage类 得到Graphics画笔给图片填充背景色 然后写上随机数和100个干扰点 用scropt实现刷新验证码 疑问:视频和书上的DrawString 方法不能用 也不知道怎么回事 把String转成了char调用了另外一个drawChars的方法才对 <%@ page language="java" contentType="text/html; charset=GB2312" import =

JSP验证码简单例子

原文:JSP验证码简单例子 源代码下载地址:http://www.zuidaima.com/share/1550463705320448.htm 几年前用servlet写的一个简单验证码功能.还有许多要完善的,但是验证码已经完善了. 包含登陆界面,可以自己修改下验证码代码把验证码的代码写进后台,生成图片后再输出到页面.也可以把验证码生成更复杂些. 登陆成功  验证失败

MyEclipse导入主题文件epf后xml及jsp等页面中点击标签之后显示灰白

MyEclipse导入主题文件epf后xml及jsp等页面中点击标签之后显示灰白,症状如下: 解决方案如下: MyEclipse导入主题文件epf后xml及jsp等页面中点击标签之后显示灰白,布布扣,bubuko.com

@RestController注解下返回到jsp视图页面(转)(转)

这个问题我也遇到过,下面的方法可以试试 蓝萝卜blu @RestController注解下返回到jsp视图页面 spring4.1中添加了@RestController注解很方便,集成了@ResponseBody注解,无需再在每个方法前添加了..但是却发现个问题..之前用@Controller注解的时候经常会如下所示的返回到视图页面index.jsp: @RequestMapping(value="/tologin", method=RequestMethod.GET) public

项目总结_过滤器只过滤jsp后缀页面

其实只要在filter的xml配置中   filter-mapping     --->   *.jsp    就行了. 就可以只过滤jsp的页面,而css/js/images都可以不过滤,直接放行.   这里不要写成/*.jsp   只要*.jsp就行了.

JSP 500页面的异常信息打印

web开发中异常信息是很重的信息,对开发人员是其相当重要的,对这些异常信息进行转换为用户能理解的信息就更重要了~ 在单纯的JSP开发中,处理异常信息一般使用web.xml来定义. 01 <error-page> 02          <error-code>400</error-code> 03          <location>/400.html</location> 04      </error-page> 05 06  

myeclipse关闭html,jsp等页面的可视化编辑器

myeclipse打开html,jsp等页面时,有的是默认用可视化编辑器打开的,这样打开会显得很慢,只要关闭可视化编辑器就会快很多了,方法如下: 1,选择菜单: windows -> preferences 2,在弹出窗口中选择General-> Editors -> File Associations 3,在上方框内选择*.jsp(或*.html),在下方框内选择MyEclipse JSP Editor(或MyEclipse html Editor),按Default即可. 若要打开,

Django项目:CRM(客户关系管理系统)--49--40PerfectCRM实现全局账号注册+验证码+页面刷新保留信息

1 # gbacc_urls.py 2 # --------38PerfectCRM实现全局账号登录注销-------- 3 from django.conf.urls import url 4 from gbacc import gbacc_views 5 urlpatterns = [ 6 url(r'^gbacc_login/', gbacc_views.gbacc_login, name='gbacc_login'), # 全局登录 7 # LOGIN_URL = '/gbacc/gba