- 浏览: 202795 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
qiankai86:
s
多个文件上传的功能 -
zhjxzhj:
经测试不能用
PDF破解软件 -
meadlai:
很不错...哈哈...
PDF破解软件 -
talin2010:
刚学了,复习一下。。
Mysql+tomcat连接池自己的例子 -
yshuaiwen:
上面的方法都不怎么好,太麻烦,而且都需要改tomcat的xml ...
Mysql+tomcat连接池的配置实例
图片验证功能
1 创建3 个jsp 页面
tplogin.jsp
说明:所要注意的是<form id="form1" name="form1" method="post" action=" tp.do ">
<td>验证码
<input name="tupian" type="text" id="tupian" />
<img src="image1.jsp"> <a href="tplogin.jsp">换一格${requestScope.tupian}</a></td>
</tr>
<tr>
<td>
Image1.jsp
说明:session.setAttribute("tupian", str) 中的tupian 对应的是
<tr>
<td>验证码
<input name="tupian" type="text" id="tupian" />
<img src="image1.jsp"> <a href=" tplogin.jsp ">换一格</a></td>
</tr>
的tupian
<jsp:useBean id="image" class="dao.ImageEnsure" />
这个是引用一个类生成验证码的图片,对应的是dao包里面的ImageEnsure 这个类
Ok.jsp
ok恭喜你验证成功了
ImageEnsure 类
1个action
Struts-config.xml 文件
1 创建3 个jsp 页面
tplogin.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> </head> <body> <form id="form1" name="form1" method="post" action="tp.do"> <p>用户名: <label> <input name="username" type="text" id="username" /> </label> </p> <p>密码: <label> <input name="password" type="text" id="password" /> </label> </p> <p>验证码; <label> <input name="tupian" type="text" id="tupian" /> </label> <td><img src="image1.jsp"/> <a href="tplogin.jsp">换一格${requestScope.tupian}</a></td> </p> <p> <label> <input type="submit" name="Submit" value="提交" /> </label> </p> </form> </body> </html>
说明:所要注意的是<form id="form1" name="form1" method="post" action=" tp.do ">
<td>验证码
<input name="tupian" type="text" id="tupian" />
<img src="image1.jsp"> <a href="tplogin.jsp">换一格${requestScope.tupian}</a></td>
</tr>
<tr>
<td>
Image1.jsp
<%@page contentType="image/jpeg; charset=gb2312" %> <jsp:useBean id="image" class="dao.ImageEnsure" /> adc <% String str=image.getEnsure(0,0,response.getOutputStream());//取得真正的验证码信息 session.setAttribute("tupian", str); //将这个真正的验证码信息保存在一个对象当中。以便日后核对 %>
说明:session.setAttribute("tupian", str) 中的tupian 对应的是
<tr>
<td>验证码
<input name="tupian" type="text" id="tupian" />
<img src="image1.jsp"> <a href=" tplogin.jsp ">换一格</a></td>
</tr>
的tupian
<jsp:useBean id="image" class="dao.ImageEnsure" />
这个是引用一个类生成验证码的图片,对应的是dao包里面的ImageEnsure 这个类
Ok.jsp
ok恭喜你验证成功了
ImageEnsure 类
package dao; import java.io.*; import java.util.*; import javax.imageio.*; import java.awt.*; import java.awt.image.*; import javax.imageio.ImageIO; public class ImageEnsure { public ImageEnsure() { } private char mapTable[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; // 这是一个数据字典,验证码当中的信息都是来自这个数组 public String getEnsure(int width, int height, OutputStream os) { if (width <= 0) width = 100; if (height <= 0) height = 50; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取图形上下文 Graphics g = image.getGraphics(); // 设定背景色 g.setColor(new Color(0xCCCCFF)); g.fillRect(0, 0, width, height); // 用刚才的颜色填充矩形(开始x坐标,开始y坐标,终止x坐标,终止y坐标) // 画边框 g.setColor(Color.black); // 更改颜色 g.drawRect(0, 0, width - 1, height - 1); // 画个框 // 取随机产生的认证码 String strEnsure = ""; // 4代表4位验证码 for (int i = 0; i < 4; ++i) { strEnsure += mapTable[(int) (mapTable.length * Math.random())]; } // 将认证码显示到图象中 g.setColor(Color.black); g.setFont(new Font("Atlantic Inline", Font.PLAIN, 18)); // 18表示字号 String str = strEnsure.substring(0, 1); g.drawString(str, 8, 15); str = strEnsure.substring(1, 2); g.drawString(str, 20, 17); str = strEnsure.substring(2, 3); g.drawString(str, 35, 15); str = strEnsure.substring(3, 4); g.drawString(str, 45, 17); // 随机产生30个干扰点 Random rand = new Random(); for (int i = 0; i < 30; i++) { int x = rand.nextInt(width); int y = rand.nextInt(height); g.drawOval(x, y, 1, 1); } // 释放图形上下文 g.dispose(); try { // 输出图象到页面 ImageIO.write(image, "JPEG", os); } catch (IOException e) { return ""; } return strEnsure; } /* public static void main(String []args) { try{ BufferedOutputStream os = new BufferedOutputStream( new FileOutputStream("c:\\test.jpg")); new ImageEnsure().getEnsure(100, 200, os); os.flush(); os.close(); } catch(Exception e) {} } */ }
1个action
package action; 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; public class TpAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String tupian=request.getParameter("tupian"); HttpSession session=request.getSession(); String a=(String)session.getAttribute("tupian"); if(!(request.getSession().getAttribute("tupian").equals(tupian))){ request.setAttribute("tupian","验证码错误"); return mapping.findForward("nook"); } String username=request.getParameter("username"); String password=request.getParameter("password"); if(username.equals("11")&&password.equals("11")){ session.setAttribute("username", username); session.setAttribute("log","ok"); return mapping.findForward("ok"); } return mapping.findForward("nook"); } }
Struts-config.xml 文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources /> <form-beans /> <global-exceptions /> <global-forwards /> <action-mappings > <action path="/tp" type="action.TpAction"> <forward name="ok" path="/ok.jsp" /> <forward name="nook" path="/tplogin.jsp" /> </action> </action-mappings> <message-resources parameter="com.yourcompany.struts.ApplicationResources" /> </struts-config>
发表评论
-
查询2个表比较然后做下拉菜单显示
2008-09-20 19:06 1123查询2个表比较然后做下拉菜单显示 这段代码是在Main ... -
菜单配置上下移功能
2008-09-06 05:47 1202在数据库中 System.do?method=toM ... -
where 1 = 1
2008-09-04 17:44 1343[转]sql语句中where 1=1的作用 2008-08-2 ... -
工作中的连接池用法
2008-09-03 06:39 1174实际工作中连接池的应用 在 web.xml中 &l ... -
spring注入的例子
2008-08-31 21:35 1120关于注入机制的例子 在applicationContext. ... -
log4j自己的一个实例
2008-08-22 13:40 1131程序启动的时候首先启动web.xml中的servlet中log ... -
log4j
2008-08-22 13:39 825log4j 在强调可重用组件开发的今天,除了自己从 ... -
servlet中配置文件web.xml中的参数context-param和init-param区别
2008-08-22 13:05 2747servlet中配置文件web.xml中的参数context- ... -
在myeclipse中实现javascipt 的快捷键
2008-08-07 03:38 965在windows下面的preference下面的Genaral ... -
Myeclipse中,在导入脚本中出现乱码的问题的解决方法。
2008-08-07 03:36 1724在windows 下面的preferences 下面的Gena ... -
多个文件上传的功能
2008-08-07 02:16 3373这里用到的是用commons-fileupload-1.2.1 ... -
Mysql+tomcat连接池自己的例子
2008-07-31 23:18 23271.把MySQL-Connector-java-3.0.12- ... -
Mysql+tomcat连接池的配置实例
2008-07-31 23:03 2797特别感谢:robustwang 在Java Web开发中都 ... -
从数据库中读取数据(AJAX版本)
2008-07-30 21:33 4011现在是用ajax 做从数据库读取数据的例子 1个jsp Re ... -
从数据库中读取数据(直连版本)
2008-07-30 18:06 1850从数据库中读取数据(直连版本) 下面的这里例子实现的是在注册 ... -
Tomcat 的数据库连接池设置与应用
2008-07-29 21:33 1102Tomcat 的数据库连接池设置与应用 1.将数据库驱 ... -
session对象使用示例
2008-07-27 19:41 1262携带用户名往下跳转的 ... -
JDBC使用步骤
2008-07-24 18:42 6307分为6个步骤 1. load the driver (1) ... -
CSS鼠标移至此处, 背景变化例子
2008-07-24 17:33 1861鼠标移至此处, 背景变化的CSS例子 保存格式以jsp或者是 ... -
CSS背景颜色例子
2008-07-24 17:28 1985一个 有关 CSS 样式的小例子 建立一个 1.jsp ...
相关推荐
要深入学习和掌握Struts2,建议阅读官方文档,参与实际项目实践,也可以参考相关的技术书籍和教程,例如《Struts2技术内幕——深入解析Struts2架构设计与实现原理》等资源,来提升对Struts2框架的全面理解。
作者依照读者的学习规律,首先介绍基本概念和基本操作,然后对内容进行深入讲解。 2.讲解具体,示范典型 书中通过大量的示范性实例(全书范例近百个),逐一、详细地讲解了Struts2各知识点的用法,并细致地讲解每个...
Struts2.1权威指南——基于WebWork核心的MV Struts2.1权威指南——基于WebWork核心的MV Struts2.1权威指南——基于WebWork核心的MV Struts2.1权威指南——基于WebWork核心的MV
Struts2.1权威指南——基于WebWork核心的MV.Struts2.1权威指南——基于WebWork核心的MV.Struts2.1权威指南——基于WebWork核心的MV.Struts2.1权威指南——基于WebWork核心的MV.
Struts2.1权威指南——基于WebWork核心的MV Struts2.1权威指南——基于WebWork核心的MV Struts2.1权威指南——基于WebWork核心的MV
Struts2.1权威指南——基于WebWork核心的MV Struts2.1权威指南——基于WebWork核心的MV Struts2.1权威指南——基于WebWork核心的MV
Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...
这篇自学笔记将深入探讨Struts2的文件上传机制。 1. **文件上传原理** 文件上传是基于HTTP协议的POST请求实现的。在HTML表单中,通过`<input type="file" />`元素让用户选择本地文件。当用户提交表单时,浏览器会...
Struts2.1权威指南——基于WebWork核心的MVStruts2.1权威指南——基于WebWork核心的MVStruts2.1权威指南——基于WebWork核心的MVStruts2.1权威指南——基于WebWork核心的MV
Struts拦截器是Java Web开发中的一个重要概念,尤其在基于Struts2框架的应用中,它扮演着处理...通过学习这个案例,开发者可以更好地理解和掌握Struts2框架中的拦截器机制,从而在实际项目中实现更高效、灵活的控制流。
"Struts2 技术内幕——深入解析Struts2架构设计"这本书深入探讨了Struts2的核心机制和设计理念,帮助开发者更好地理解和应用这个框架。 Struts2的核心组件包括Action、Interceptor、Result和Configuration。Action...
Struts2.1权威指南——基于WebWork核心的MVStruts2.1权威指南——基于WebWork核心的MVStruts2.1权威指南——基于WebWork核心的MV
这本书《Struts2技术内幕——深入解析Struts2架构设计与实现原理》深入探讨了Struts2的核心机制和设计理念,旨在帮助开发者更好地理解和运用这个框架。 首先,Struts2的出现是为了解决Struts1在MVC模式中的局限性,...
Struts2.1权威指南——基于WebWork核心的MVStruts2.1权威指南——基于WebWork核心的MVStruts2.1权威指南——基于WebWork核心的MV
Struts2.1权威指南——基于WebWork核心的MVC开发,带目录,完整扫描,完美版 part5
Struts2.1权威指南——基于WebWork核心的MVStruts2.1权威指南——基于WebWork核心的MVStruts2.1权威指南——基于WebWork核心的MVStruts2.1权威指南——基于WebWork核心的MV
Struts2.1权威指南——基于WebWork核心的MVStruts2.1权威指南——基于WebWork核心的MVStruts2.1权威指南——基于WebWork核心的MVStruts2.1权威指南——基于WebWork核心的MV