`
gdq123
  • 浏览: 5252 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts formbean 就是鸡肋

    博客分类:
  • JAVA
阅读更多
理由如下:
1.由于后台数据库表字段的修改造成此formbean的修改,同时前端表现页面展现代码要修改,Action类也要跟着修改,也就是业务代码要修改,开发初期表的字段增删改是非常正常的,没有人能做到设计都是完美不用修改的。
2.有些人美其名曰formbean是面向对象,面向对象造成了开发与维护的如此繁琐,为OO而OO,得不偿失。最需要OO的地方是业务规则以及框架。
我们需要什么:
1.struts的action控制机制还是要保留,tag部分可以彻底扔掉。
2.在表现层与业务逻辑层我们传递的就是VO(数值对象)而已。需要的只是一个数据存放的容器而已,能做到通用就行了。难道非要写成bean.getXXX()的形式才叫OO么?
3.对于刚刚接触struts的人,或者不喜欢用标签的人,怎么样才能更好的完成协作开发呢?
我们只需要他们会html,java就可以了,让标签们见鬼去吧,让formbean见鬼去吧。
改进方案:
1.一个通用的action ,BaseAction extendsAction.负责完成http request,http session的参数收集与整理,形成一个通用的form,BaseForm extends ActionForm.
此BaseForm就可以传递到表现层了。
2.如果你有些地方需要使用标签,可能因为您偏爱或者习惯使用struts标签了,所以你可以继承这个BaseForm,然后添加你的方法和属性。而对于不习惯的人,则可以使用方案1的逻辑了。
3.BaseAction最好能实现几个通用功能,比如分页,普通查询,修改,插入等,这样各个实现的业务action在代码上减少很多,维护就更简单了。
代码实现:
public class OrderAction extends BaseAction {
public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		//解析request 和 session 参数,在BaseAction中实现
		BaseForm bf = this.parse(request, response);
		//没准你还想在返回页面得到请求的参数
		request.setAttribute(BaseForm.NAME, bf);
		String action = (String) bf.getStringData("action");
		try {
			if (action.equals("add")
			{
			 .....
			 request.setAttribute("xxxx", xxx);
			 return mapping.findForward("xxx");
			}
                         else if (action.equals("list"))
			 {
			 .....
			 request.setAttribute("xxxx", xxxxx);
			 return mapping.findForward("xxxxx");
			 }
			 else
			 .....

                    }catch (Exception ex) {
                         ......
			return mapping.findForward("error");
		    }

		}
}



或者
public class TaskMonitor extends BaseAction{
	Logger log = Logger.getLogger(OrderAction.class);
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		try {
		BaseForm bf = this.parse(request, response);
		request.setAttribute(BaseForm.NAME, bf);
		String actionjsp="";
		String action = (String) bf.getStringData("action");
		if(action.equals("list")||action.equals(""))
		{
			actionjsp="tasklist";
			doGetTaskList(bf);
		}
		request.setAttribute(BaseForm.NAME, bf);
		return mapping.findForward(actionjsp);	
		} catch (Exception ex) {
			this.resetToken(request);
			request.setAttribute("error", ex);
			return mapping.findForward("error");
		}
	}
	
	private void doGetTaskList(BaseForm bf)
	{
		//get request value and do business work
		//set response value and return
	}



public class BaseForm extends ActionForm {
private Map datas=new HashMap();
	public Object getData(String name)
	{
		return datas.get(name.toUpperCase());
	}
	public Object setData(String name,Object obj)
	{
		return datas.put(name.toUpperCase(),obj);
	}
}


整个配置文件就一个formbean而已
<struts-config>
    <form-beans>
    <form-bean name="baseform" type="********.****.***.BaseForm"></form-bean>
    </form-beans>
</struts-config>


jsp页面

<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="com.****.framework.util.BaseForm" %>
<%@ page import="com.****.framework.util.BaseAction" %>
<%
String path = request.getContextPath();
BaseForm bf=(BaseForm)request.getAttribute(BaseForm.NAME);
//you can get the request parameters and response parameters
//by method getData("xxx");
%>




0
0
分享到:
评论
2 楼 xanpeng 2009-05-12  
struts2 中好像没有formbean了
1 楼 liangcoder 2009-05-10  
有些想法,期待进一步改进~

相关推荐

    Struts中FormBean的日期类型字段赋值自动转化

    FormBean是Struts中的一个重要概念,它充当了模型层与视图层之间的桥梁,用于存储用户的输入数据。本篇文章将深入探讨在Struts中FormBean的日期类型字段如何进行赋值以及自动转化。 一、FormBean的概念与作用 ...

    Struts1.2动态FormBean加验证功能的一个例子

    在这个例子中,我们将深入探讨如何在Struts1.2中实现动态FormBean并添加验证功能。 首先,让我们理解什么是动态FormBean。在传统的Struts1应用中,每个ActionForm Bean都是一个Java类,它对应于HTML表单的字段,并...

    Struts所需要的jar

    1. **struts-core.jar**:这是Struts框架的核心库,包含了Action、ActionSupport、FormBean等基础类,以及配置解析、请求处理等关键组件。 2. **struts-tiles.jar**:Tiles是一个视图管理框架,它允许开发者定义和...

    struts1&struts2

    Action类需要继承`org.apache.struts.action.Action`,并且表单数据通常封装在FormBean中。为了获取这些数据,开发者需要将Bean存入Page、Request或Session范围。 - **Struts2** 则是一个pull-MVC架构,它允许...

    struts1和struts2中文教程

    2. **配置文件**:struts-config.xml是核心配置文件,包含了Action、ActionMapping、FormBean和Result的定义,这些定义指导了请求如何被处理并跳转到相应视图。 3. **Tiles框架**:Struts1可以与Tiles框架结合使用,...

    Struts1_Struts2

    Struts1的配置主要在struts-config.xml文件中进行,包括Action映射、FormBean定义和Plug-In配置等。 - **MVC架构**:Struts1遵循MVC设计模式,使得开发者可以将业务逻辑、数据模型和用户界面分离,提高代码的可重用...

    Eclipse开发Struts1.2

    - FormBean是Struts中的模型组件,用于在视图和控制器之间传递数据。 - 在`struts-config.xml`中定义FormBean,并在Action类中使用get和set方法访问其属性。 11. **JSP页面**: - JSP页面负责显示数据和接收用户...

    Struts 1 学习文档

    软件架构的建立是一个复杂而又持续改进的过程,Struts 就是其中之一。 8. MVC 模式 MVC 是 Model-View-Controller 的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富...

    Struts的工作原理

    Struts通过将常规Servlet的功能拆分为ActionServlet、FormBean和ActionBean,实现了更细粒度的职责划分,增强了代码的可读性和可维护性。ActionServlet专注于请求分发和页面导航,而FormBean和ActionBean则专注于...

    struts1和struts2的区别

    Struts1.x 必须继承org.apache.struts.action.Action或者其子类,表单数据封装在FormBean中。Struts 2无须继承任何类型或实现任何接口,表单数据包含在Action中,通过Getter和Setter获取。 虽然,在理论上Struts2的...

    struts1编程例子

    通过上述步骤,我们不仅学习了如何在MyEclipse中使用Struts1构建一个基本的登录功能,还深入了解了Struts1框架的核心概念,如FormBean、Action和ActionForward的工作原理。这种实践操作不仅加深了对Struts1的理解,...

    使用 Easy Struts for Eclipse 开发 Struts

    ### 使用 Easy Struts for Eclipse 开发 Struts #### 一、Easy Struts 插件简介与安装配置 **Easy Struts** 是一个针对 Eclipse 的插件,它极大地简化了使用 **Struts** 框架进行 Web 开发的过程。通过 Easy ...

    json java读取 formbean操作

    本话题将围绕如何在Java中使用这些库来读取JSON数据并进行FormBean的操作进行详细讲解。 首先,我们需要理解FormBean的概念。FormBean是Java Web开发中的一个术语,通常用于封装HTML表单提交的数据,以便在服务器端...

    Struts与Struts2比较学习

    - **Struts1** 使用struts-config.xml文件配置Action、FormBean和ActionMapping等信息,这使得配置文件庞大且复杂。此外,还需要在web.xml中配置Struts的初始化参数。 - **Struts2** 引入了struts.xml配置文件,...

    struts-1.3.5-lib

    1. **核心库**:struts-1.3.5.jar 包含了Struts框架的核心类,如Action、FormBean、ActionServlet等。这些类负责处理HTTP请求,执行业务逻辑,并将结果传递给视图层。 2. **标签库**:struts-tags.jar 提供了一系列...

    struts2 valadation验证

    而ActionForm方式则是基于传统的Struts1的FormBean,将验证规则放在单独的Form类中。 在实际项目中,你可能还会遇到一些高级用法,比如自定义Validator,用于处理复杂的验证需求。这可以通过实现`org.apache.struts...

    Struts中英文帮助手册

    4. **配置文件详解**:深入解析struts-config.xml文件,包括ActionMapping、FormBean、Action、Forward、PlugIn等元素的配置细节。 5. **Action和ActionForm**:解释Action类的角色,它是如何处理用户请求并调用...

    王勇的Struts笔记

    在这个文件中,我们可以定义 Action、FormBean、Validation 等。 Struts 标签 Struts 提供了多种标签,可以方便地在 JSP 页面中使用。常见的 Struts 标签有: * logic 标签:用于逻辑控制,例如 if-else 语句。 *...

Global site tag (gtag.js) - Google Analytics