004——struts生成图片验证码
2016-07-13 19:21
495 查看
login.jsp
<span style="font-size:18px;"><%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.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">
<script type="text/javascript">
function reloadImage() {
document.getElementById('btn').disabled = true;
document.getElementById('identify').src = 'validatecode.do?ts=' + new Date().getTime();
}
</script>
</head>
<body>
<div align="center">
<table>
<tr>
<td>
<form method="post" action="LoginServlet">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><img src="validatecode.do" id="identify" onload="btn.disabled=false;"/></td>
<td><input type="text" name="identifyCode"><input type="button" value="换张图片" id="btn" onclick="reloadImage()"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="登录"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
</body>
</html> </span>Action
<span style="font-size:18px;"><%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.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">
<script type="text/javascript">
function reloadImage() {
document.getElementById('btn').disabled = true;
document.getElementById('identify').src = 'validatecode.do?ts=' + new Date().getTime();
}
</script>
</head>
<body>
<div align="center">
<table>
<tr>
<td>
<form method="post" action="LoginServlet">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><img src="validatecode.do" id="identify" onload="btn.disabled=false;"/></td>
<td><input type="text" name="identifyCode"><input type="button" value="换张图片" id="btn" onclick="reloadImage()"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="登录"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
</body>
</html> </span>Action
<span style="font-size:18px;">package com.java.struts.action; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.commons.lang.RandomStringUtils; public class ValidatecodeAction extends Action { /** * Method execute * * @param mapping * @param form * @param request * @param response * @return ActionForward */ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { try { // 定义图片的宽和长 int width = 60; int height = 20; // 取得一个4位随机字母数字字符串 String s = RandomStringUtils.random(4, true, true); // 保存入session,用于与用户的输入进行比较. // 注意比较完之后清除session. HttpSession session = request.getSession(true); session.setAttribute("validateCode", s); //向客户端响应一个图片文件 response.setContentType("images/jpeg"); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); ServletOutputStream out = response.getOutputStream(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); // 设定背景色 g.setColor(getRandColor(200, 250)); g.fillRect(0, 0, width, height); // 设定字体--类型,颜色,大小 Font mFont = new Font("Times New Roman", Font.PLAIN, 20);// 设置字体 g.setFont(mFont); // 画边框 //g.setColor(Color.BLACK); //g.drawRect(0, 0, width - 1, height - 1); // 随机产生干扰线,使图象中的认证码不易被其它程序探测到 g.setColor(getRandColor(160, 200)); // 生成随机类 Random random = new Random(); for (int i = 0; i < 155; i++) { int x2 = random.nextInt(width); int y2 = random.nextInt(height); int x3 = random.nextInt(12); int y3 = random.nextInt(12); g.drawLine(x2, y2, x2 + x3, y2 + y3); } 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中,已变action中做验证 session.setAttribute("rand", sRand); // 图象生效 g.dispose(); // 输出图象到页面 ImageIO.write((BufferedImage) image, "JPEG", out); out.close(); } catch (Exception e) { e.printStackTrace(); } return null; } private 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); } } </span>struts-config.xml
<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans /> <global-exceptions /> <global-forwards /> <action-mappings> <action path="/validatecode" type="com.java.struts.action.ValidatecodeAction"> </action> </action-mappings> <message-resources parameter="ApplicationResources" /> </struts-config></span>
相关文章推荐
- JQuery+Strusts1.x无刷新登录
- java自动生成验证码插件-kaptcha
- 按右键另存图片只能存BMP
- photoshop去除图片上的水印
- upload上传单张图片
- 图片引发的溢出危机(图)
- C# WinForm控件对透明图片重叠时出现图片不透明的简单解决方法
- 如何识别高级的验证码的技术总结第1/4页
- C#实现把彩色图片灰度化代码分享
- WinForm生成验证码图片的方法
- C#将图片和字节流互相转换并显示到页面上
- C#监控文件夹并自动给图片文件打水印的方法
- 纯CSS实现的当鼠标移上图片添加阴影效果代码
- 如何使用C#从word文档中提取图片
- C#实现打开画图的同时载入图片、最大化显示画图窗体的方法
- C#图片添加水印的实现代码
- 随鼠标移动的图片或文字特效代码
- CSS 图片横向排列实现代码
- C#实现将Email地址转成图片显示的方法
- C#实现图片加相框的方法