用户登录时生成验证码页面
来源:互联网 发布:网络订餐 方便面 编辑:程序博客网 时间:2024/05/22 14:39
1.生成验证页面
<%@ page language="java" import="java.util.*,java.awt.*" contentType="image/jpeg"%><%@ page import="java.awt.image.*"%><%@ page import="java.awt.Graphics,javax.imageio.*"%><%! 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);}%><% 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(getRandColor(160,200)); for(int i=0;i<155;i++){ int x= random.nextInt(width); int y = random.nextInt(height); int x1 = random.nextInt(12); int y1 = random.nextInt(12); g.drawLine(x,y,x1,y1); } //随机产生的认证码(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("rand",sRand); //图像生效 g.dispose(); //输出图像到页面 ImageIO.write(image,"JPEG",response.getOutputStream()); out.clear(); out = pageContext.pushBody();%>
2.用户登录页面,调用生成验证码页面
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>My JSP 'login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><link rel="stylesheet" type="text/css" href="../css/login.css"><script type="text/javascript"> function checkForm(){ if(checkUsername() && checkPass() && checkCode()){ return true; } return false; } function checkUsername(){ var name = document.getElementById("username").value;var namePattern=/^[a-zA-Z0-9]\w{0,15}$/;if(name.length == 0){ alert("用户名不能为空!"); return false;}if(!namePattern.test(name)){alert("用户名输入出错!");return false;}return true;} function checkPass(){ var pass = document.getElementById("password").value;var pushMoneyPattern=/^[a-zA-Z0-9]\w{0,15}$/; //表示只能是数字if(pass.length == 0){ alert("密码不能为空!"); return false;}if(!pushMoneyPattern.test(pass)){ alert("密码输入错误!"); return false; } return true; } function checkCode(){ var code = document.getElementById("txtCheckCode").value; var codePattern = /^[0-9]{4}$/; if(code.length == 0){ alert("验证码不能为空!"); return false; } if(!codePattern.test(code)){ alert("验证码只能是四位数字! "); return false; } return true; } function loadimage(){ document.getElementById("randImage").src = "checkCode.jsp?"+Math.random(); }</script> </head> <body> <form action="/Chapter06/BankLoginServlet" method="post" onsubmit="return checkForm()"> <table cellpadding="0" cellspacing="0" border="1px solid black" width="320px" height="120px"> <tr> <td class="loginTitle">用户名:</td> <td class="loginValue"><input type="text" name="username" /></td> </tr> <tr> <td class="loginTitle">密 码:</td> <td class="loginValue"><input type="password" name="password" size="21" /></td> </tr> <tr> <td class="loginTitle">验证码:</td> <td class="loginValue" nowrap> <input type="text" name="txtCheckCode" id="txtCheckCode"> <img src="checkCode.jsp" name="randImage" id="randImage" alt="看不清换一张" onclick="javascript:loadimage();" /> </td> </tr> <tr> <td id="btn" colspan="2"> <input type="submit" value="提交" /> <input type="reset" value="重置" /> </td> </tr> </table> </form> </body></html>
3.验证用户登录的servlet
package com.chapter06.servlet;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;import com.chapter06.bo.UserBo;import com.chapter06.bo.impl.UserBoImpl;public class BankLoginServlet extends HttpServlet {/* * 对输入的用户名、密码和验证码进行验证 * */private UserBo userBo;@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {userBo = new UserBoImpl();response.setContentType("text/html;charset=gbk");PrintWriter out = response.getWriter();//获取表单中的数据String username = request.getParameter("username");String password = request.getParameter("password");String checkCode = request.getParameter("txtCheckCode");System.out.println(username);System.out.println(password);System.out.println(checkCode);//获取在session域中随机产生的验证码String randCode = request.getSession().getAttribute("rand").toString();System.out.println(randCode); //首先对验证码进行判断 if(!checkCode.equals(randCode)){ out.print("<script>alert('验证码输入错误!');location.href='bankLogin/login.jsp';</script>"); }else{ if(userBo.validUserByNameAndPwd(username, password)){ request.setAttribute("username", username); request.getRequestDispatcher("bankLogin/index.jsp").forward(request, response); }else{ out.print("<script>alert('用户名或密码验证错误!');location.href='bankLogin/login.jsp';</script>"); } }}protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {this.doGet(req, resp);}}
- 用户登录时生成验证码页面
- 登录页面的验证码的生成
- 用户登录验证码
- PHP 用户登录,验证码的生成,搜索代码
- 用户登录图片验证码生成java技术
- 网站登录页面,验证码的一个生成方法
- JavaWeb登录页面生成数字或字母图片验证码
- 基于javascript的用户登录页面验证
- 用户登录注册页面jQuery验证
- shiro登录验证(登录跳转到指定页面,验证码验证,不注销之前已登录用户下,再次登录)
- YII用户注册和用户登录(六)之生成验证码
- 用户登录图片验证码
- JavaWeb用户登录验证码
- 登录页面加入验证码
- struts生成登录验证码
- JS生成登录验证码
- 登录验证码图片生成
- JAVA生成登录验证码
- ARM ELF 文件格式常见段名称及自定义段
- 16个HTML5 框架、模板以及生成工具
- 代码自动生成-宏带来的奇技淫巧
- 使用hibernatetemplate的几种方法
- TD-SCDMA物理层体制协议与MATALB仿真
- 用户登录时生成验证码页面
- 2011 年 20 个最棒的免费 HTML5 网站模板
- 庞果网-在线编程挑战 幸运数 简单数论.......
- C语言宏定义技巧
- C6455外设与库函数
- 25 个精美的手机网站模板
- 23款精美的HTML5网站模板免费下载
- Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)
- 英特尔发布HTML5开发环境 开发者可免费获得