- 浏览: 385383 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (269)
- FY_UML (3)
- FY_JAVA (12)
- FY_JavaScript脚本 (7)
- FY_JSP (3)
- FY_Tapestry框架 (12)
- FY_Spring框架 (3)
- FY_Manager (5)
- FY_Junit(单元测试) (3)
- SERVER (14)
- FY_Struts2框架 (3)
- FY_SVN (2)
- FY_NoSQL (2)
- FY_jquery_sir (13)
- FY_hibernate_sir (8)
- FY_设计模式_sir (6)
- FY_Extjs_sir (10)
- FY_CI_sir (5)
- FY_Oracle_sir (11)
- FY_MySql_sir (10)
- FY_Hadoop_sir (3)
- FY_SOA_sir (1)
- 中文分词技术 (1)
- FY_Android (52)
- FY_架构 (2)
- FY_PhoneGap (2)
- FY_Webstorm (5)
- FY_Sencha Touch (3)
- HTML5应用快速开发 (1)
- FY_python (0)
- HADOOP (1)
- AI (0)
最新评论
-
antao592:
楼主,HkDataSourceWrapper中的getCurr ...
结合spring jdbc 实现分表分库的数据库访问构思 -
bonait:
不错,看看我的这个怎么样www.zipin168.com
So Easy京东商城 -
chenzheng8975:
...
So Easy京东商城 -
yzhenxing:
我导入demo后少com.google.android.gms ...
google地图demo -
echoaiya:
非常感谢~~
google地图demo
ActionForm是什么?
ActionForm本质上是一种JavaBean,是专门用来传递表单数据的DTO(Data Transfer Object,数据传递对象)。它包括用于表单数据验证的validate()方法和用于数据复位的reset()方法。
我们为什么要使用它?
因为我们要将页面的数据传到后台,也就是从表示层传到逻辑层。要利用ActionForm对象来临时存放视图页面中的表单数据
怎么使用ActionForm?
1、得到页面的Map集合
2、配置xml
3、通过反射得到对象
4、得到对象的字段
5、method.invoke(对象,map.get(key));【通过反射给当前对象set值】
6、验证(正则表达式写一款通用的正则表达式);
config.xml
<?xml version="1.0" encoding="UTF-8"?> <actions> <actionForm name="newForm" class="com.lxit.company.bean.NewsVo"/> <action name="company" class="com.lxit.company.action.AdministratorAction"> <forward name="doValidate" type="redirect">company.0905?method=doLogin</forward> <forward name="doSave">company.0905?method=doSave</forward> <forward name="doFindAll">company.0905?method=doFindAll</forward> <forword name="aindex" type="redirect">index.jsp</forword> <forword name="showUserList">showUserList.jsp</forword> <forword name="addManager">addManager.jsp</forword> <forward name="index" type="redirect">admin/index.jsp</forward> <forward name="login" type="redirect">login.jsp</forward> <forward name="error">error.jsp</forward> <forward name="doRemoveCookie">company.0905?method=doRemoveCookie</forward> </action> <newsAction form="newForm" name="newsAction" class="com.lxit.company.action.NewsAction"> <forward name="doSave">newsAction.0905?method=doSave</forward> <forward name="addNews">addNews.jsp</forward> <forward name="doFindAll">newsAction.0905?method=doFindAll</forward> <forward name="manageNews">manageNews.jsp</forward> <forward name="doShowNewsIndex" type="redirect">newsAction.0905?method=doShowNewsIndex</forward> <forward name="showNewsList">showNewsList.jsp</forward> <forward name="index">index.jsp</forward> <forward name="detailNews">detailNews.jsp</forward> <forward name="doObscure">newsAction.0905?method=doObscure</forward> </newsAction> <goodsAction name="goodsAction" class="com.lxit.company.action.GoodsAction"> <forward name="doSave">goodsAction.0905?method=doSave</forward> <forward name="addProduct">addProduct.jsp</forward> <forward name="doFindAll">goodsAction.0905?method=doFindAll</forward> <forward name="manageProduct">manageProduct.jsp</forward> <forward name="updateProduct">updateProduct.jsp</forward> <forward name="doShowProductList">goodsAction.0905?method=doShowProductList</forward> <forward name="showProductList">showProductList.jsp</forward> <forward name="detailProduct">detailProduct.jsp</forward> </goodsAction> <messageAction name="messageAction" class="com.lxit.company.action.MessageAction"> <forward name="doSave">messageAction.0905?method=doSave</forward> <forward name="doFindAll">messageAction.0905?method=doFindAll</forward> <forward name="newMessage">newMessage.jsp</forward> <forward name="messageBoard">messageBoard.jsp</forward> </messageAction> <ajaxAction name="ajaxAction" class="com.lxit.company.action.AjaxAction"> <forward name="doSave">ajaxAction.0905?method=doJudge</forward> </ajaxAction> <company name="mysql"> <mysql name="mysql.driver" value="com.mysql.jdbc.Driver"></mysql> <mysql name="mysql.url" value="jdbc:mysql://localhost:3306/company"></mysql> <mysql name="mysql.userName" value="root"></mysql> <mysql name="mysql.password" value="123"></mysql> </company> </actions>
ConfigUtil
package com.lxit.company.util; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.List; import org.apache.log4j.Logger; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import com.lxit.company.action.ActionServlet; /** * * 文件名:ConfigUtil.java * 版权: 方勇 * 描述: 对键值对进行批量处理 * 修改时间: 2010-2-23下午02:43:00 */ public class ConfigUtil { private final Logger logger=Logger.getLogger(ConfigUtil.class); private Document document=null; /** * 批量导入键值对 * @param configPath */ public ConfigUtil() { logger.debug(StringUtil.append( "ConfigUtil", Common.BEGIN)); SAXBuilder builder=new SAXBuilder(); FileInputStream fileInputStream=null; try { fileInputStream = new FileInputStream(ActionServlet.configPath); document=builder.build(fileInputStream); } catch (FileNotFoundException e) { logger.error(StringUtil.append("ConfigUtil",e.getMessage())); } catch (JDOMException e) { logger.error(StringUtil.append("ConfigUtil",e.getMessage())); } catch (IOException e) { logger.error(StringUtil.append("ConfigUtil",e.getMessage())); }finally{ try{ if(null!=fileInputStream){ fileInputStream.close(); } } catch (IOException e) { logger.error(StringUtil.append("ConfigUtil",e.getMessage())); } } logger.debug(StringUtil.append( "ConfigUtil", Common.END)); } /** * * 〈得到action节点〉 * @param [key] [键值] * @return [Element] * @Author 方勇 */ public Element getActionElement(String key){ logger.debug(StringUtil.append( "getActionElement", Common.BEGIN)); Element actionElement=null; Element root=document.getRootElement(); @SuppressWarnings("unchecked") List<Element> children=root.getChildren(); String value=null; for (Element element : children) { value=element.getAttributeValue("name"); if(key.equals(value)){ actionElement=element; break; } } logger.debug(StringUtil.append( "getActionElement", Common.END)); return actionElement; } /** * * 〈通过key获取value〉 * @param [key] [键值] * @return [string类型的value] * @Author 方勇 */ public String getActionValue(String key){ return getActionElement(key).getAttributeValue("class"); } /** * * 〈得到action节点〉 * * @param [key] [键值] * @return [Element] * @Author 方勇 */ public Element getActionFormElement(String key) { Element actionElement = null; Element root = document.getRootElement(); @SuppressWarnings("unchecked") List<Element> children = root.getChildren(); String value = null; for (Element element : children) { value = element.getAttributeValue("name"); if (key.equals(value)) { actionElement = element; break; } } return actionElement; } /** * * 〈通过key获取value〉 * * @param [key] [键值] * @return [string类型的value] * @Author 方勇 */ public String getActionFormValue(String key) { return getActionElement(key).getAttributeValue("class"); } /** * * 〈通过key获取value〉 * * @param [key] [键值] * @return [string类型的value] * @Author 方勇 */ public String getActionFormName(String key) { return getActionElement(key).getAttributeValue("form"); } /** * * 〈获取forward节点〉 * @param [actionName] [action节点的值] * @param [forwardVlue] [forward节点的name值] * @return [Element] * @Author 方勇 */ public Element getForwardElement(String actionName,String forwardValue){ logger.debug(StringUtil.append( "getForwardElement", Common.BEGIN)); Element forwardElement=null; Element actionElement=getActionElement(actionName); @SuppressWarnings("unchecked") List<Element> children=actionElement.getChildren(); String value=null; for (Element element : children) { value=element.getAttributeValue("name"); if(forwardValue.equals(value)){ forwardElement=element; break; } } logger.debug(StringUtil.append( "getForwardElement", Common.END)); return forwardElement; } /** * * 〈得到forward节点值〉 * @param [actionName] [action节点的name值] * @param [forwardName] [forward节点的name值] * @return [String] * @Author 方勇 */ public String getForwardValue(String actionName,String forwardValue){ Element forwardElement = getForwardElement(actionName,forwardValue); return forwardElement.getText(); } /** * * 〈得到跳转页面类型〉 * @param [actionName] [action节点的name值] * @param [forwardName] [forward节点的name值] * @return [String] * @Author 方勇 */ public String getForwardType(String actionName,String forwardValue){ logger.debug(StringUtil.append("getForwardType", Common.BEGIN)); String type=null; Element forwardType=getForwardElement(actionName,forwardValue); type=forwardType.getAttributeValue("type"); logger.debug(StringUtil.append("getForwardType", Common.END)); return type; } /** * * 〈数据库连接〉 * @param [companyName] [company节点的name值] * @param [mysqlName] [mysqlName节点的值] * @return [Element] * @Author 方勇 */ public Element getDbElement(String companyName,String mysqlName){ logger.debug(StringUtil.append("getDbElement", Common.BEGIN)); Element forwardElement=null; Element actionElement=getActionElement(companyName); @SuppressWarnings("unchecked") List<Element> children=actionElement.getChildren(); String value=null; for (Element element : children) { value=element.getAttributeValue("name"); if(mysqlName.equals(value)){ forwardElement=element; break; } } logger.debug(StringUtil.append("getDbElement", Common.END)); return forwardElement; } /** * * 〈得到数据库连接的节点值〉 * @param [companyName] [company节点的name值] * @param [mysqlName] [mysqlName节点的值] * @return [String] * @Author 方勇 */ public String getDbValue(String companyName,String mysqlName){ Element forwardElement = getDbElement(companyName,mysqlName); return forwardElement.getAttributeValue("value"); } }
ActionFormUtil
package com.lxit.company.util; import java.io.IOException; import java.io.Reader; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; public class ActionFormUtil { private static ActionFormUtil instance = null; public ActionFormUtil(){ } public static synchronized ActionFormUtil getInstance(){ if(null == instance){ instance = new ActionFormUtil(); } return instance; } public Object getActionForm(String actionFormKey) { ConfigUtil configUtil = new ConfigUtil(); // action节点对应的form名 String form = configUtil.getActionFormName(actionFormKey); // ActionForm类路径 String actionForm = configUtil.getActionFormValue(form); Object object = null; try { object = Class.forName(actionForm).newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return object; } public Object mapToObject(Map map, Object object) { // key集合 Set keySet = map.keySet(); // map集合 Map fieldsMap = getFields(object); for (Object object2 : keySet) { if (fieldsMap.containsKey(object2)) { Method[] methods = object.getClass().getMethods(); for (Method method : methods) { String name = method.getName(); if (name.startsWith("set") && object2.equals(name.substring(3).toLowerCase())) { try { String[] str = (String[]) map.get(object2); method.invoke(object, str[0]); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } return object; } public Map getFields(Object object) { Map map = new HashMap(); Method[] methods = object.getClass().getMethods(); for (Method method : methods) { String name = method.getName(); if (name.startsWith("set")) { String field = name.substring(3).toLowerCase(); map.put(field, null); } } return map; } }
newAction调用
NewsVo newsVo = (NewsVo) ActionFormUtil.getInstance().getActionForm("newsAction"); ActionFormUtil.getInstance().mapToObject(request.getParameterMap(), newsVo);
- ActionForm.rar (3.2 KB)
- 下载次数: 2
相关推荐
Struts学习笔记之ActionForm ActionForm是Struts框架中的一种重要组件,用于封装和处理用户的表单数据。在Struts中,ActionForm是继承自JavaBeans的,主要用于处理用户的表单数据和业务逻辑。下面是ActionForm的...
标题"验证ActionForm存到了request中"涉及到的是Struts框架中ActionForm对象的使用和处理过程。ActionForm是Struts框架的核心组件之一,它主要用于收集用户在表单中的输入数据,并将这些数据传递到Action类进行业务...
本集成开发宝典主要关注如何将这三者有效地结合,以ActionForm为切入点,深入讲解它们的整合过程。 Struts 是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,它主要用于控制应用的流程,处理用户请求...
ActionForm是Struts框架中一个关键的组件,它充当了Controller与Model之间的桥梁,负责传递用户在表单中提交的数据到业务逻辑层。本篇文章将深入探讨ActionForm中的get和set方法及其作用。 1. **ActionForm基础** ...
本文将深入探讨Struts1框架下如何通过ActionForm简化表单处理,以及实体类与ActionForm之间的交互。 ### 实体类(Entity) 在Struts框架中,实体类(如`userEntity`)用于封装业务数据,是模型(Model)的一部分。...
在Struts中,ActionForm类是处理用户输入数据的核心组件,它封装了请求参数并负责业务逻辑验证。本文将详细讨论如何在Struts中使用ActionForm的`validate`方法进行数据验证。 `validate`方法是在ActionForm中定义的...
ActionForm是Struts1中处理用户输入的核心组件,它负责接收、验证和封装来自表单的数据。在本文中,我们将深入探讨如何利用ActionForm实现表单验证,并在验证失败时追加错误信息。 1. **ActionForm介绍** ...
一个Jsp两个ActionForm分别提交.rar一个Jsp两个ActionForm分别提交.rar一个Jsp两个ActionForm分别提交.rar一个Jsp两个ActionForm分别提交.rar一个Jsp两个ActionForm分别提交.rar
当我们需要在客户端提交多行数据时,通常会利用表单来收集信息,然后将这些数据传递到服务器端的ActionForm。这个过程涉及到如何将客户端的数据组织成一个集合,如List,并将其绑定到ActionForm的属性上。在本篇中,...
主要是actionForm的基本验证,重写validate方法,返回actionErrors,然后根据资源文件显示错误。 这是一个demo例子,直接导入eclispe中即可。 并且这部分内容会在相应的博客中介绍,稍后会更新博客。
动态ActionForm则旨在解决这个问题,它允许我们在运行时动态地创建和绑定ActionForm,而不是预先定义固定的ActionForm类。 在讲解动态ActionForm的过程中,通常会涵盖以下几个关键点: 1. **ActionForm接口**:...
3. **ActionForm的使用**:如何创建ActionForm类,定义属性并添加对应的get和set方法,以及如何在struts-config.xml中配置ActionForm。 4. **数据验证**:ActionForm不仅可以收集数据,还可以进行数据验证。通过...
标题“ActionForm_Scope为Session”涉及到的是Struts框架中的一个关键概念,即ActionForm对象的作用域设置。在Struts框架中,ActionForm是用于封装请求参数并传递给业务逻辑层(通常为Servelets或JavaBeans)的模型...
本篇学习笔记主要关注的是ActionForm,它是Struts框架中用于处理用户请求的核心组件之一。 ActionForm是Struts中用于接收和验证用户输入的数据的类。当用户通过表单提交数据时,这些数据会被封装到一个ActionForm...
### ValidatorActionForm、ValidatorForm 和 ActionForm 的区别 #### 一、ActionForm 概述 **ActionForm** 是 Struts 1.x 框架中用于封装用户输入数据的一个核心类,它通常作为表单对象的 JavaBean 实现。...
在这个名为“Struts中不同的Action和ActionForm组合.rar”的压缩包中,主要探讨的是Struts框架中Action和ActionForm的组合使用方式,以及它们在处理用户请求和数据验证过程中的作用。以下是对这个主题的详细解释。 ...
在Spring框架中,如果需要在ActionForm中注入其他对象,例如数据库访问层的服务,可能会遇到问题,因为ActionForm通常是非Spring管理的bean。 针对这个问题,一种解决办法是将注入的属性声明为静态,并修改setter...