JSF 登录界面 验证码
2011-11-26 17:34
211 查看
JSF 登录界面添加验证码
1.validateCode.jsp(生成验证码图):
<%@ page import="java.util.Random"%> <%@ page import="java.io.OutputStream"%> <%@ page import="java.awt.Color"%> <%@ page import="java.awt.Font"%> <%@ page import="java.awt.Graphics"%> <%@ page import="java.awt.image.BufferedImage"%> <%@ page import="javax.imageio.ImageIO"%> <% int width = 60; int height = 22; //create the image BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); // set the background color g.setColor(new Color(0xDCDCDC)); g.fillRect(0, 0, width, height); // draw the border g.setColor(Color.black); g.drawRect(0, 0, width - 1, height - 1); // create a random instance to generate the codes Random rdm = new Random(); String hash1 = Integer.toHexString(rdm.nextInt()); // make some confusion for (int i = 0; i < 50; i++) { int x = rdm.nextInt(width); int y = rdm.nextInt(height); g.drawOval(x, y, 0, 0); } // generate a random code String capstr = hash1.substring(0, 4); session.setAttribute("key", capstr); g.setColor(new Color(0, 100, 0)); g.setFont(new Font("Times New Roman", Font.PLAIN, 20)); g.drawString(capstr, 11, 17); g.dispose(); response.setContentType("image/jpeg"); out.clear(); out = pageContext.pushBody(); OutputStream strm = response.getOutputStream(); ImageIO.write(image, "jpeg", strm); strm.close(); %>
2.在登录界面的适当位置加入验证码:
<dl> <dt> <h:outputText value="验证码" /> : </dt> <dd> <h:inputText id="validateCode" value="#{User.prop['validateCode']}" style="width:30px;" /> <div style="position:absolute;left:630px;top:204px;"> <img src="validateCode.jsp" id="getCode"/> <a href="#" onclick="javasrcipt:validateCode()">重新获取验证码</a> </div> </dd> </dl>
3.validateCode 方法(实现验证码局部刷新):
<script language="javascript" type="text/javascript"> function validateCode() { document.getElementById('getCode').src="validateCode.jsp?"+Math.ceil(Math.random()*1000); } </script>
4.User类中的Login()方法:
public void login() { try { ...获取用户名、密码等 String validateCode = prop.get("validateCode"); String key = (String)( ((HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true)).getAttribute("key")); if ("".equals(validateCode)) { String msg = "请输入验证码!"; getMySession().setMsg(msg, Integer.valueOf(2)); return; } if (validateCode.equals(key)) { ...登录处理 } else { String msg = "验证码错误!!!"; getMySession().setMsg(msg, Integer.valueOf(2)); return; } } catch (Exception ex) { String msg = getLang().getProp().get(getMySession().getL()).get("faield"); getMySession().setMsg(msg, Integer.valueOf(2)); ex.printStackTrace(); } }
只要掌握原理,在JSP中添加验证码也是一样的。
相关文章推荐
- ASP .NET登录界面用户验证码代码
- C#做的登录界面包含验证码
- 大众化的登录界面的一种完美简单的实现方法(验证码+自带一键删除+用户名密码为空时抖动提示)
- 登录界面更换验证码图片
- 登录界面中的验证码的使用
- 登录界面 单击刷新验证码
- java web登录界面中添加验证码
- 登录界面上的验证码的验证码的制作 以及git上的一些概念和使用
- ASP.NET 实现登录界面(生成验证码)
- 利用jQuery做登录界面的验证码
- [DZ平台]登录界面-无刷新验证码
- 牛腩新闻发布系统——后台登录界面生成验证码
- Web UI自动化测试框架搭建之十四: 复用Cookies绕过登录界面(尤其包含验证码)提高脚本执行速度
- 系统登录界面的验证码
- ExtJs学习篇---OA系统登录界面设计之验证码
- [C#]登录界面-无刷新验证码
- php用户登录界面(包含数据库表单验证及验证码)
- 实现带有验证码的ajax局部刷新登录界面
- 系统登录界面的验证码
- 如何用jsp界面与servlet带验证码的登录