java servlet验证码_Servlet 实现验证码
分析
生成图片实现类
① 定义BufferedImage 对象
② 获得 Graphics 对象
③ 通过 Random 产生随机验证码信息
④ 使用 Graphics 绘制图片
⑤ 记录验证码信息到 session 中
⑥ 使用 ImageIO 输出图片
代码实现
1、新建 web 项目 CheckCode,在 WebContent 下新建 index.jsp
index.jsp
pageEncoding="UTF-8"%>
>
Insert title heretitle>
function reloadCode() {
//传个时间参数,防止缓存
var time = new Date().getTime();
document.getElementById("imageCode").src="/ImageServlet?d="+time;
}
script>
head>
/LoginServlet" method="post">
验证码:
/ImageServlet" alt="验证码" />
看不清楚a>
form>
body>
html>
2、在 src 下新建 com.liuyanzhao 包,然后分别新建用于动态画图的 ImageServlet 类和用于判断验证码是否正确的 LoginServlet 类
ImageServlet.java
package com.liuyanzhao;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
* @author LiuYanzhao
*/
public class ImageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BufferedImage bi = new BufferedImage(68, 22, BufferedImage.TYPE_INT_RGB);
Graphics g = bi.getGraphics();
Color c = new Color(200,155,255);
g.setColor(c);
g.fillRect(0, 0, 68, 22);
char[] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
Random r = new Random();
int len = ch.length,index;
StringBuffer sb = new StringBuffer();
for(int i=0;i<4;i++) {
index = r.nextInt(len);
g.setColor(new Color(r.nextInt(88),r.nextInt(188),r.nextInt(255)));
g.drawString(ch[index]+"", (i*15)+3, 18);
sb.append(ch[index]);
}
request.getSession().setAttribute("piccode", sb.toString());
ImageIO.write(bi, "JPG", response.getOutputStream());
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
LoginServlet.java
package com.liuyanzhao;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
* @author LiuYanzhao
*/
public class LoginServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String piccode = (String)request.getSession().getAttribute("piccode");
String checkcode = request.getParameter("checkcode");
checkcode = checkcode.toUpperCase();//不区分大小写
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
if(piccode.equals(checkcode)) {
out.println("验证码输入正确");
} else {
out.println("验证码输入错误");
}
out.flush();
out.close();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
3、在 web.xml 里添加 Servlet 映射
ImageServletservlet-name>
com.liuyanzhao.ImageServletservlet-class>
servlet>
ImageServletservlet-name>
/ImageServleturl-pattern>
servlet-mapping>
LoginServletservlet-name>
com.liuyanzhao.LoginServletservlet-class>
servlet>
LoginServletservlet-name>
/LoginServleturl-pattern>
servlet-mapping>
4、运行 Tomcat 服务器,打开浏览器,访问 http://localhost:8080/CheckCode
效果如下
验证码不区分大小写,点击 “看不清楚”可以更换
java servlet验证码_Servlet 实现验证码相关推荐
- java servlet 多线程_Servlet的多线程和线程安全
线程安全 首先说明一下对线程安全的讨论,哪种情况我们可以称作线程安全? 网上对线程安全有很多描述,我比较喜欢<Java并发编程实战>给出的定义,"当多个线程访问某个类时,不管运行 ...
- java servlet 作用_servlet的作用,servlet有什么用?
Servlet我们经常说到,那你们知道servlet的作用是什么吗?下面通过这篇文章一起来了解一下吧. servlet作用 当我们在使用一个交互式 的Web站点的时候,我们所浏览到的所有内容都应该是在 ...
- java servlet例子_Servlet学习教程(三)---- 一个简单的Servlet例子
我们用个最简单的Servlet例子来解说一下Servlet简单配置以及Servlet类实现类的写法. 第一,我们新建一个Dynamic Web Project,起名Servlet 点击NEXT,设置D ...
- java servlet 入门_servlet 入门详解
servlet 入门详解 Servlet是一种服务器端的编程语言,是J2EE中比较关键的组成部分.Servlet本质上也是Java类,编写Servlet需要遵循java的基本语法,但是与一般的Java ...
- java servlet文件下载_Servlet 实现文件下载
Servlet 实现文件下载 在生活或者工作中,总是避免不了下载文件,下载的东西有各种类型,譬如图片,视频,文本,文档,音乐等等,这些东西有大有小,大的有几G到几十G,小的或许只有几K.这些东西究竟是 ...
- java servlet作用_Servlet的功能是什么
servlet是很复杂的东西,事实上,servlet就是一个Java接口,interface! 打开idea,ctrl + shift + n,搜索servlet,就可以看到是一个只有5个方法的int ...
- java servlet试题_Servlet面试题库 选择题
2015-11-27 06:30:03 阅读( 247 ) 1.有两个Servlet:servlet1和servlet2,servlet1把HttpServletRequest和HttpServlet ...
- java servlet 配置_servlet与javabean配置
servlet与javabean配置 (一):目录结构 tomcat的目录结构如下: 目录名 简介 bin 存放启动和关闭tomcat脚本 conf 包含不同的配置文件,server.xml(Tomc ...
- java servlet文件下载_Servlet实现文件下载功能
本文实例为大家分享了Servlet实现文件下载的具体代码,供大家参考,具体内容如下 把文件目录直接暴露给用户是很不安全的.所以要用Servlet来做,而且这样做,文件的存储方式就更丰富了,可以是从文件 ...
最新文章
- 倒计时2天,如何搭乘通往AI全明星技术盛宴的末班车?(附大会完整版全日程)...
- Qt5.7 + VS2015 环境搭建
- IRIS在win2003中安装 报 error while loading a DLL错误
- python中a=str(int(a))什么意思_如何解决TypeError:只能将str(而不是“int”)连接到str - python...
- python怎么写中文至excel_[ Python爬虫实战 ] python 操作excel以及解决中文报错 - pytorch中文网...
- 杭电 2036 改革春风吹满地【求多边形面积】
- Linux中文件权限的一些知识
- Node.js npm 详解
- 【计算机网络复习】1.2.1 分层结构、协议、接口、服务
- 教育|仝卓高考舞弊案细节曝光:为“恢复高考成绩”已起诉1年多
- 企业级应用与互联网应用的区别?
- 关于简历:怎样才叫熟悉/精通Linux?
- jQuery核心函数
- VLC支持的视频和音频文件扩展名
- 反激开关电源变压器设计实例讲解(定明芳)
- PHP 获取YouTube视频相关信息(Youtube Api v3)
- STM32F103RCT6实验代码之ADS1115的使用
- 微软同步备份工具SyncToy,值得使用
- plsql无法连接linux下的oracle服务器,提示:ora-12541:TNS 无监听程序
- [转]PMP之挣值管理(PV、EV、AC、SV、CV、SPI、CPI)的记忆方法
热门文章
- mwt是什么意思网络用语_skr、xswl、zsqg…这些网络用语你知道是什么意思吗?
- 改变人生的100句箴言
- 蓝桥杯练习题之 Fibonacci数列
- 【Matlab学习手记】Matlab积分问题
- Java中的字节是什么意思?
- 回传速率和测量带宽及两者之间的联系
- 现有列表记录商品名称和价格如下:要求用户输入总资产,例如: 20000,输出所有商品序号和商品列表,每行
- NIXIE_TUBE
- MATLAB | solve函数求解析解时不支持分段函数的解决方案
- 【产品运营从0到1】资深产品运营推荐的互联网产品运营人员必看书籍