验证码大多是jsp,servlet写的. 我拿来主义了, 再自己完善了一下(我一直努力想要站在巨人的肩膀)
 
首先是页面 test.jsp
<%@ page contentType="text/html; charset=GBK"%> 
<html> 

  <head> 

    <title>test image code</title> 
<script type="text/javascript"> 

function reloadImg(){ 

var i = Math.random(); 

document.getElementById("imgCode").src="imgcode?"+i; 


</script> 

  </head> 

  <body> 

    <form action="imageCodeCheck.action" method="POST" name="form1"> 

      <img id="imgCode" src="imgcode" border="0"> 

      <input type="text" name="thecode" /><a href="javascript:reloadImg();">看不清?</a> 

      <font color="red">${requestScope.imgCodeError }</font> 

      <br> 

      <input type="submit" name="submit" value=" 提 交 " /> 

    </form> 

  </body> 
</html> 
 
 
接下来是Action了 ImageCodeCheck.java
package com.lichen.action; 

import java.util.Map; 

import javax.servlet.http.HttpServletRequest; 

import org.apache.struts2.interceptor.ServletRequestAware; 
import org.apache.struts2.interceptor.SessionAware; 

import cn.com.enorth.util.imgcode.ImageCodeUtils; 

import com.opensymphony.xwork2.ActionSupport; 

public class ImageCodeCheck extends ActionSupport implements 

    ServletRequestAware, SessionAware { 

  private HttpServletRequest request; 

  private Map session; 

  @Override 

  public String execute() throws Exception { 

    if (ImageCodeUtils.isGoodCode(request, "thecode")) { 

      return SUCCESS; 

    } else { 

      request.setAttribute("imgCodeError", "验证码输入不正确"); 

    } 

    return INPUT; 

  } 

  @Override 

  public void setServletRequest(HttpServletRequest request) { 

    this.request = request; 

  } 

  @Override 

  public void setSession(Map session) { 

    this.session = session; 

  } 


 
 
struts的配置很普通 struts.xml
<?xml version="1.0" encoding="UTF-8" ?> 

<!DOCTYPE struts PUBLIC 

        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 

        "http://struts.apache.org/dtds/struts-2.0.dtd"> 
<struts> 

  <constant name="struts.i18n.encoding" value="GBK"></constant> 

  <constant name="struts.locale" value="zh_CN"></constant> 

  <package name="struts2" extends="struts-default"> 

    <action name="imageCodeCheck" class="com.lichen.action.ImageCodeCheck" > 

      <result name="success" >index.jsp</result> 

      <result name="input" >test.jsp</result> 

    </action> 

  </package> 
</struts>
 
 
然后就是web的配置了 web.xml
<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5"    

  xmlns="http://java.sun.com/xml/ns/javaee"    

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    

  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    

  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

    <!-- struts2 --> 

  <filter> 

    <filter-name>struts2</filter-name> 

    <filter-class> 

      org.apache.struts2.dispatcher.FilterDispatcher 

    </filter-class> 

  </filter> 

  <filter-mapping> 

    <filter-name>struts2</filter-name> 

    <url-pattern>/*</url-pattern> 

  </filter-mapping> 

     

    <!-- spring --> 

  <context-param> 

    <param-name>contextConfigLocation</param-name> 

    <param-value>classpath*:applicationContext-*.xml</param-value> 

  </context-param> 

  <listener> 

    <listener-class> 

      org.springframework.web.context.ContextLoaderListener 

    </listener-class> 

  </listener> 

  <!-- hibernate 的session 创建关闭 --> 

  <filter> 

    <filter-name>hibernateFilter</filter-name> 

    <filter-class> 

      org.springframework.orm.hibernate3.support.OpenSessionInViewFilter 

    </filter-class> 

  </filter> 

  <filter-mapping> 

    <filter-name>hibernateFilter</filter-name> 

    <url-pattern>/*</url-pattern> 

  </filter-mapping> 

     

    <!-- 验证码 --> 

    <servlet> 

        <servlet-name>imagecodeservlet</servlet-name> 

        <servlet-class>cn.com.enorth.util.imgcode.ImageCodeServlet</servlet-class> 

        <init-param> 

            <param-name>type</param-name> 

            <param-value>1</param-value> 

        </init-param> 

        <init-param> 

            <param-name>length</param-name> 

            <param-value>4</param-value> 

        </init-param> 

    </servlet> 

    <servlet-mapping> 

        <servlet-name>imagecodeservlet</servlet-name> 

        <url-pattern>/imgcode</url-pattern> 

    </servlet-mapping> 

     

    <welcome-file-list> 

        <welcome-file>index.jsp</welcome-file> 

    </welcome-file-list> 
</web-app> 
重点在验证码的配置
 
 

本文转自chainli 51CTO博客,原文链接:http://blog.51cto.com/lichen/157515,如需转载请自行联系原作者

struts2验证码的更多相关文章

  1. Struts2 验证码图片实例

    本文转载于DongLiYang的博客http://www.cnblogs.com/dongliyang/archive/2012/08/24/2654431.html 其中修改过一部分,针对使用注解而 ...

  2. struts2与cookie实现自动登录和验证码验证

    主要介绍struts2与cookie结合实现自动登录 struts2与cookie结合时要注意采用.action 动作的方式实现cookie的读取 struts2的jar包 链接数据库文件 db.pr ...

  3. java验证码(采用struts2实现)转

    第一步:编写验证码的Action package com; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; ...

  4. struts2结合生成验证码

    import java.util.Arrays; /** * 工具类,生成随机验证码字符串 * @version 1.0 2012/12/01 * @author shiyz * */ public ...

  5. 图片验证码(Struts2中使用)

    写在前面: 最近在项目中做了一个登录页面,用到了图片验证码的功能,所以记录一下.方便之后再有用到,直接拿来用即可.其实图片验证码的生成都是有固定步骤的,网上也有很多的例子,有的时候,如果不想深究,都是 ...

  6. Ajax+Struts2实现验证码验证功能

    ---------------------------------------------------------------------------------------------------- ...

  7. Struts2自定义结果视图(servlet验证码)

    1.编写一个类实现com.opensymphony.xwork2.Result,或者继承org.apache.struts2.dispatcher.StrutsResultSupport 2.自定义的 ...

  8. struts2生成随机验证码图片

    之前想做一个随机验证码的功能,自己也搜索了一下别人写的代码,然后自己重新用struts2实现了一下,现在将我自己实现代码贴出来!大家有什么意见都可以指出来! 首先是生成随机验证码图片的action: ...

  9. Struts2中实现随机验证码

    一.创建RandomNum类 1: import java.awt.Color; 2: import java.awt.Font; 3: import java.awt.Graphics; 4: im ...

随机推荐

  1. Golang微信支付跳过X509验证

    游戏支付提交到微信的post: 微信: https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=23_4 错误信息: err:Post ...

  2. Deep Dream模型与实现

    Deep Dream是谷歌公司在2015年公布的一项有趣的技术.在训练好的卷积神经网络中,只需要设定几个参数,就可以通过这项技术生成一张图像. 本文章的代码和图片都放在我的github上,想实现本文代 ...

  3. Solr复杂查询一:函数查询

    一.简介 Solr的函数可以动态计算每个文档的值,而不是返回在索引阶段对应字段的静态数值集.函数查询是一类特殊的查询,它可以像关键词一样添加到查询中,对所有文档进行匹配并返回它们的函数计算值作为文档得 ...

  4. 经常使用到的vim命令

    常用的vim命令 总结了我经常用到的vim命令,虽然不是很全,但是日常的开发足够了 启动vim vim 直接启动vim vim filename 打开vim并创建名为filename的文件 插入命令 ...

  5. mysql截取函数常用方法 即mysql 字符串 截取-- - 最后带上java字符串截取规则比较

    常用的mysql截取函数有:left(), right(), substring(), substring_index() 下面来一一说明一下: 1.左截取left(str, length) 说明:l ...

  6. 给想学python但还没有接触过的你,python代码的书写规则,小白入门

    Python 文件结构 变量命名 注释 单行注释 多行注释 缩进 Python 文件结构 #!/usr/bin/env python3 # 指定python解释器 # -*- coding: utf- ...

  7. G. 蚂蚁的镜像串

    单点时限: 1.0 sec 内存限制: 512 MB 一只聪明的蚂蚁在学习了回文串之后,一直觉得回文串不够优美,所以它决定自己定义一种新的字符串——镜像串 所谓镜像串,就是对一个字符串进行一整个完全的 ...

  8. mysql数据库深入学习

    mysql 数据库 一.数据库介绍 1.关系型数据库的特点 ​ 二维表 典型产品Oracle传统企业,MySQL是互联网企业 数据存取是通过SQL 最大特点,数据安全性方面强(ACID) 2.NoSQ ...

  9. mongodb权限篇

    1. 权限详解 内建角色: 数据库用户角色: read.readWrite: 数据库管理角色: dbAdmin.dbOwner.userAdmin: 集群管理角色: clusterAdmin.clus ...

  10. 尾递归和JAVA

    简单来说,递归即是调用自己本身.所有递归都应该有至少一个基本条件,在满足基本条件时不进行递归. 给出一个递归实例: int fact(int N){ if(N==1) return 1; else r ...