`

struts做登录检验码

 
阅读更多
前台
<script type="text/javascript">
window.onload=function(){
     var verifyObj = document.getElementById("Verify");
     verifyObj.src="securityCodeImage.action?timestamp="+new Date().getTime();
     verifyObj.onclick=function(){
          this.src="securityCodeImage.action?timestamp="+new Date().getTime();
      };
}
</script>
	<body>
		${Message }
		<form action="login" method="post">
			用户名<input type="text" name="user.username" /><br />
			密码<input type="password" name="user.password" /><br />
			检验码<input type="text" name="securityCode" /><br />
			<img id="Verify" style="cursor: hand;" alt="看不清,换一张" /><br />
			<input type="submit" name="submit" value="登录" />
		</form>
	</body>
</html>


action
 <action name="securityCodeImage" class="securityCodeImageAction" method="securityCodeImage">
			<result name="success" type="stream">
				<param name="contentType">image/jpeg</param>
				<param name="inputName">imageStream</param>
				<param name="bufferSize">2048</param>
			</result>
		</action>

后台
/**
 * 提供图片验证码
 * 
 */
@SuppressWarnings("serial")
@Component("securityCodeImageAction")
@Scope("prototype")
public class SecurityCodeImageAction extends ActionSupport {

	// 图片流
	private ByteArrayInputStream imageStream;
	
	public ByteArrayInputStream getImageStream() {
		return imageStream;
	}
	public void setImageStream(ByteArrayInputStream imageStream) {
		this.imageStream = imageStream;
	}
	public String securityCodeImage() throws Exception {
		String securityCode = getSecurityCode();
		imageStream=getImageAsInputStream(securityCode);
		// 放入session中
		ActionContext actionContext = ActionContext.getContext();
		Map session=actionContext.getSession();
		session.put("SESSION_SECURITY_CODE", securityCode);
		return SUCCESS;
	}
	
	private String getSecurityCode() {
		// 字符集合(除去易混淆的数字0、数字1、字母l、字母o、字母O)
		char[] codes = { '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
		StringBuffer securityCode =new StringBuffer();
		for (int i = 0; i < 4; i++) {
			int r = (int) (Math.random() * codes.length);
			securityCode =securityCode.append(codes[r]) ;
		}
		return securityCode.toString();
	}
	private ByteArrayInputStream getImageAsInputStream(String securityCode) throws Exception {
		//图片
        BufferedImage image=new BufferedImage(70, 20, BufferedImage.TYPE_INT_RGB);
        Graphics g=image.createGraphics();
        g.setColor(Color.LIGHT_GRAY);//设置边框颜色
        //设置字体颜色和样式
        g.setColor(new Color(19,148,246));
        for(int i = 0; i < 4;i++){
            g.drawString(String.valueOf(securityCode.charAt(i)), i * 15 + 5, 15);
        }
        //关闭资源
        g.dispose();
        ByteArrayInputStream inputStream = null;
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(bos);
        jpeg.encode(image);
        byte[] bts = bos.toByteArray();
        inputStream = new ByteArrayInputStream(bts);
        return inputStream;
	}


}
分享到:
评论

相关推荐

    struts登录

    在本文中,我们将深入探讨如何使用Struts实现用户登录功能。 首先,了解Struts的基础架构至关重要。Struts遵循Model-View-Controller(MVC)设计模式,将业务逻辑、数据展示和用户交互分离,提高了代码的可维护性和...

    struts 2登录系统及其jar包

    Struts 2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它简化了构建可维护和可扩展的Web应用的过程。...实践是检验理论的最好方式,动手尝试这个示例,你将对Struts 2有更直观的理解。

    用struts2做一个密码校验器

    用struts2做一个自定义密码检验器,密码既要包括数字又要包括字母。自定义校验器的使用方法和预定义校验器的使用方法相同

    struts2和shiro完美整合解决方案

    3. **创建登录Action**:在Struts2中编写一个处理用户登录请求的Action,调用Shiro的Subject.login()方法进行登录操作。 4. **集成拦截器**:使用Struts2的拦截器机制,添加Shiro的`authc`拦截器,该拦截器会在每个...

    struts2+pager-taglib 实现分页小例子

    Struts2是一个非常流行的Java Web开发框架,它简化了MVC(模型-视图-控制器)架构的实现,使得开发者可以更高效地构建动态...记住,实践是检验真理的唯一标准,动手尝试这个小例子,将有助于更好地理解和掌握这些概念。

    Struts2开发环境搭建 附简单登录功能实例

    在Struts2开发环境搭建完毕之后,接下来可以通过实现一个简单的登录页面来检验搭建是否成功。 #### 1. 修改Index.jsp 首先修改Web项目的首页index.jsp,实现一个基本的登录界面。在该页面中包含输入用户名和密码的...

    struts2学习

    Action执行完成后,会返回一个结果码,这个结果码与视图页面关联,从而决定展示哪个页面。Struts2的标签库,如`s:form`、`s:textfield`等,使得在JSP页面中处理数据更加方便。 部署Struts2应用通常包括以下几个步骤...

    struts_2.1.8.1相关jar包

    9. **javassist.jar**:Javassist是一个字节码操作库,Struts 2使用它来实现运行时的类增强,提高性能。 10. **其他依赖的库**:如servlet-api、commons-fileupload、commons-lang等,这些是Struts 2正常运行所必需...

    Struts2的检证框架详解

    Struts2的检验证框架基于Apache Commons BeanUtils和Validator API,提供了灵活的数据验证机制。它允许开发者定义验证规则,并在用户提交表单时自动执行这些规则,从而提高应用的安全性和用户体验。 2. **验证配置...

    Struts 2校验框架的应用

    (1):对用户名的检验规则是用户名不能为空,且只能是字母,数字,长度为4到25之间。 (2):对密码校验的规则是用户不能为空,且只能是数字,长度为8到20之间。 (3):年龄的校验规则是必须是整数,且在1到120...

    SSH 登录系统 范例

    - 整合使用:这三者结合,形成SSH(Struts+Spring+Hibernate)架构,高效地处理用户登录、注册等业务,提供数据持久化和事务管理。 通过学习这些范例,你可以了解如何在实际项目中应用SSH进行安全登录,以及如何...

    struts验证框架-validation的验证框架

    Struts验证框架,作为Struts框架的一个重要组成部分,主要用于对用户输入的数据进行合法性检查,确保数据符合预期的格式和约束条件。这一机制不仅提升了应用程序的健壮性,还增强了用户体验,避免了因非法数据导致的...

    SSI电子书

    【SSI电子书】集合了三个重要的Java Web框架的开发指南,包括`Struts2`、`iBatis`和`Spring`。这些框架是企业级应用程序开发中的关键组件,广泛用于构建高效、可扩展和模块化的后端系统。以下是关于这三个框架的详细...

    S2SH配置demo

    SSH(Secure Shell)是一种网络协议,用于在不安全的网络环境中提供安全的远程登录和其他网络服务。SSH框架通常指的是Struts、Spring和Hibernate的集成,这是一个经典的Java Web开发架构,用于构建高效、灵活且可...

    在线图书网站的构建

    【在线图书网站的构建】是计算机科学与技术专业的一次实验项目,旨在通过使用JSP、Servlet、JDBC...实验报告的撰写和评估,也是对学生综合能力的一种检验,包括遵守规则、上机表现、程序设计能力和课题功能实现情况等。

    商城之家JSP商城基于jsp+mysql开发

    数据检验。数据的存储和持久化由HIENATER持久层实现,数据库采用MYSQL,数据源采用数 据源连接池机制,整个系统完全贯穿JAVA面向对象的概念,全面完整地实现了JAVA的封装性 ,继承性,多态性的三大特征,完全按照J2EE...

    JSP商城之家商城企业版

    数据检验。数据的存储和持久化由HIENATER持久层实现,数据库采用MYSQL,数据源采用数 据源连接池机制,整个系统完全贯穿JAVA面向对象的概念,全面完整地实现了JAVA的封装性 ,继承性,多态性的三大特征,完全按照J2EE...

    一个完整的ajax验证的代码

    5. **监听状态变化**:通过onreadystatechange事件监听请求的状态,当状态变为4(表示请求已完成)且状态码为200(表示成功)时,说明请求完成。 6. **处理响应**:使用responseText或responseXML属性获取服务器返回...

    电子产品交易系统

    8. **毕业设计**:此项目可能是一个学生的毕业设计作品,通常会涵盖课程中学到的核心概念和技术,如数据库设计、前端页面布局、后端逻辑处理等,是对学习成果的实际检验。 9. **系统架构**:考虑到Java项目的特性,...

Global site tag (gtag.js) - Google Analytics