验证码大多是jsp,servlet写的. 我拿来主义了, 再自己完善了一下(我一直努力想要站在巨人的肩膀)
首先是页面 test.jsp
<%@ page contentType="text/html; charset=GBK"%>
<html>
  <head>
    <title>test p_w_picpath code</title>
<script type="text/javascript">
function reloadImg(){
var i = Math.random();
document.getElementById("imgCode").src="imgcode?"+i;
}
</script>
  </head>
  <body>
    <form action="p_w_picpathCodeCheck.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="p_w_picpathCodeCheck" 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>p_w_picpathcodeservlet</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>p_w_picpathcodeservlet</servlet-name>
        <url-pattern>/imgcode</url-pattern>
    </servlet-mapping>
    
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

重点在验证码的配置

转载于:https://blog.51cto.com/lichen/157515

struts2验证码相关推荐

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

    第一步:编写验证码的Action 1 package com; 2 3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt ...

  2. javaweb利用servlet与struts2实现可点击刷新的基础图片验证码

    javaweb利用servlet实现图片验证码 验证码是登录验证的技术,可以一定程度防止恶意脚本刷网站,造成服务器压力. 具体实现思想很简单: 首先利用servlet产生一个随机的验证码, 保存在se ...

  3. 基于struts2+hibernate+spring(ssh2)的登录验证码的实现

    验证码是很多系统都需要的,今天搞了一下午终于把验证码的功能实现了,可以显示三种不同类型的验证码而不是单独一种,显示效果如下图所示: * 第一种:简单验证码,4位随机数字 : * 第二种:英文字符加数字 ...

  4. struts2中jsp页面上验证码的生成

    如何在jsp页面中显示验证码: 验证码:<img class="yzm_img" align="middle" id="validateImag ...

  5. Struts2学习笔记(十九) 验证码

    概述 验证码也是我们在web应用中经常要用到的功能.基本思路就是,我们在服务端动态的生一成张图片,然后将它输出到客户端.图片上包含一些字符信息,我们将这些字符信息事先保存在session中,那么客户端 ...

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

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

  7. java 生成图片验证码结合struts2使用

    验证码生成器类 package com.itest.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  8. 用struts2的拦截器实现登录验证,同时登录界面加上验证码

    1.验证码实现:AuthorityAction 1 package com.sram.action; 2 3 import java.awt.Color; 4 import java.awt.Font ...

  9. Struts2访问验证码异常解决OgnlValueStack:64 - ..java.lang.NumberFormatException: For input string: 1494056190

    Struts2 整合验证码程序时出现异常 15:36:30,511 WARN OgnlValueStack:64 - Error setting value java.lang.NumberForma ...

最新文章

  1. 吊打一切的YOLOv4的tricks汇总!
  2. 微信朋友圈里的十五种类型,笑死了!
  3. C++ 中的类型限定符 类型限定符提供了变量的额外信息。
  4. js_jQuery【下拉菜单联动dom操作】
  5. 腾讯云大数据套件Hermes-MR索引插件使用总结
  6. 三角函数公式总结(四)
  7. 大意导致Java访问DB2库时导出SQLCODE=-301, SQLSTATE=07006错误
  8. 「上海院子」打造不可复制的国宅风华
  9. SIM900/SIM900A 模块实现收发短信,打电话
  10. mysql 未找到 WinSxS_win7的winsxs文件清理方法
  11. Entity Framework介绍
  12. 云原生之 Ansible 篇(一)
  13. android -chrome 调试
  14. 斯坦福NLP名课带学详解 | CS224n 第15讲 - NLP文本生成任务(NLP通关指南·完结)
  15. python语言是网络编程语言吗_三大主流编程语言Python为啥这么牛?
  16. php高仿互站网源码,2020新版友价高仿互站网源码 虚拟交易商城整站源码
  17. 【Bluetooth蓝牙开发】九、BLE协议之GATT
  18. C语言的部分杂碎知识
  19. MTK 按键驱动流程总结
  20. java显示日历 插件_JavaWeb项目FullCalendar日历插件使用的示例代码

热门文章

  1. 微软发现已遭在野利用的 SolarWinds 新0day
  2. JavaScript人脸检测的实现方法
  3. headless webkit(无界面浏览器、爬虫)
  4. W3C发布DRM作为推荐方案
  5. 美封锁对华半导体出口:14nm制造可以 X86设计不行
  6. Oracle浅谈第一回
  7. MySQL高可用方案-PXC环境部署记录
  8. 验证码识别服务提供商
  9. 开机后系统时间被恶意修改
  10. Python CGI编程