java 登录验证码实现类
来源:互联网 发布:均值滤波算法 matlab 编辑:程序博客网 时间:2024/05/02 07:22
public class CheckCode extends HttpServlet {public static final int WIDTH=90;public static final int HEIGHT=30;private String checkcode;public static final char[] CHARS={'2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z'};public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {BufferedImage image=new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);//获取绘画实例Graphics g=image.getGraphics();//1.设置前景色setBackGround(g);//2.设置边框setBorder(g);//3.画干扰线drawRandomLine(g);//4.写随机数checkcode=drawRandomNum(g);//5、用session将验证码保存起来,如进行验证时,会在spring security自定义的登录验证MyUsernamePasswordAuthenticationFilter类里进行验证if(request.getSession().getAttribute("validateCode")!=""){request.getSession().removeAttribute("validateCode");request.getSession().setAttribute("validateCode", checkcode);}else{request.getSession().setAttribute("validateCode", checkcode);}//5.图形写给浏览器response.setContentType("IMAGE/jpeg");//浏览器不缓存response.setDateHeader("expires", -1);response.setHeader("Cache-Control", "no-cache");response.setHeader("pragma", "no-cache");ImageIO.write(image, "jpg", response.getOutputStream());}private void setBackGround(Graphics g) {g.setColor(Color.WHITE);g.fillRect(0, 0, WIDTH, HEIGHT);}private void setBorder(Graphics g) {g.setColor(Color.BLUE);g.drawRect(1, 1, WIDTH-3,HEIGHT-3);}private void drawRandomLine(Graphics g) {g.setColor(Color.GREEN);for(int i=0;i<5;i++){int x1=new Random().nextInt(WIDTH);int y1=new Random().nextInt(HEIGHT);int x2=new Random().nextInt(WIDTH);int y2=new Random().nextInt(HEIGHT);g.drawLine(x1, y1, x2, y2);}}private String drawRandomNum(Graphics g) {g.setColor(Color.RED);g.setFont(new Font("宋体",Font.BOLD,20));Random random =new Random();StringBuffer buffer=new StringBuffer(); for(int i=0;i<4;i++){ //生成六个字符 buffer.append(CHARS[random.nextInt(CHARS.length)]); } System.out.println("checkcode:"+buffer.toString());//测试用 g.drawString(buffer.toString(),22,22); return buffer.toString();}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {}public String getCheckcode() {return checkcode;}public void setCheckcode(String checkcode) {this.checkcode = checkcode;}}
<pre name="code" class="java">web.xml 配置 <!-- 登录验证码的servlet --> <servlet> <servlet-name>CheckCode</servlet-name> <servlet-class>framework.util.CheckCode</servlet-class> </servlet> <servlet-mapping> <servlet-name>CheckCode</servlet-name> <url-pattern>/servlet/CheckCode</url-pattern> </servlet-mapping>
<pre name="code" class="java">jsp 前端 和js <script type="text/javascript"> function changeValidateImg() { document.getElementById('validateImg').src='/项目名/servlet/CheckCode?t='+new Date().getTime(); } </script> <input id="validateCode" name="validateCode" type="text" id="vCode" style="width:118px;" tabindex="3" maxlength="4" /> <span style="margin:20px;"> <img id="validateImg" alt="无法显示验证码" src="/项目名称/servlet/CheckCode" onclick="changeValidateImg();return false;"/> <a href="javascript:void(0);" onclick="changeValidateImg();return false;">换一张</a> </span>
0 0
- JAVA验证码登录实现类
- java 登录验证码实现类
- java实现登录验证码
- Java实现登录验证码验证
- java jsp实现登录验证码
- java登录验证码实现代码
- java登录验证码实现代码
- java登录验证码实现代码
- java实现简单的登录验证码
- Java实现登录界面的验证码
- 登录验证码JAVA代码实现
- 登录验证码实现
- java动态实现登录验证
- java验证码登录
- Java实现在登录时验证验证码并在登录后记住用户名
- java 实现QQ自动登录(带验证码)
- Java实现登录界面的验证码总结
- java实现登录页面的验证码功能
- Android中用textview展示doc文档保存格式
- 机器学习之python基础(二)
- iOS的单例模式
- Qt报错 /usr/bin/ld: error: cannot find -lGL
- 数据库设计情景之相同类型下的不同类型
- java 登录验证码实现类
- java 中执行顺序
- Qt启动画面(类似Office)
- 自定义倒计时按钮
- 获取Eclipse 中获取工具箱command
- Windows下使用Hadoop-eclipse-plugin插件
- 关于大整数乘法和加法的一些整理
- android webview让内容充满屏幕的方法
- pat 1075 PAT Judge