社区
Java EE
帖子详情
求一个Struts的formbean的通用模型。
w1w1w1w
2003-10-21 10:00:10
哪位有formBean的通用模型,发我一个。
lin_guang@hotmail.com
我可以用Action通用模型做交换。
...全文
124
5
打赏
收藏
求一个Struts的formbean的通用模型。
哪位有formBean的通用模型,发我一个。 lin_guang@hotmail.com 我可以用Action通用模型做交换。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
spiritsl
2003-10-21
打赏
举报
回复
^-^
w1w1w1w
2003-10-21
打赏
举报
回复
先谢谢各位的答复。Action模型是我对一个Servlet模型做个改动产生的,说实话我也不知道需不需要这样做;但是在实际应用的时候确实方便了很多。
至于FormBean......如果哪位有ValueObject的通用模型也可以发我。
whyxx
2003-10-21
打赏
举报
回复
formbean和action要什么通用模型?没听说过
VVV_lucky
2003-10-21
打赏
举报
回复
通用模型?
就像高级点的IDE可以根据你给的属性自动生成相关方法,是这个意思吗?
还是把该有的方法都列出来?
比特灵
2003-10-21
打赏
举报
回复
什么叫formBean的通用模型?
Struts
原理、开发及项目实施
Struts
原理、开发及项目实施
Holen 2002-9-12
1、 摘要
2、 关键词
3、 Framework
4、
Struts
的起源
5、
Struts
工作原理
6、
Struts
安装
7、
一个
实例
8、
Struts
优缺点
9、
Struts
项目实施经验
10、 总结
11、 参考文献
1、 摘要
本文主要讲述了
Struts
(以
Struts
1.0.2为例)的工作原理,安装以及配置方面的问题。然后结合
一个
实例,详细讨论了
Struts
在实际开发过程中的应用,最后提供一些在开发过程中积累的经验,供大家参考。
2、关键词
Struts
、MVC、J2EE、Tiles、Framework
3、Framework
Framework即架构(框架),这里指软件的架构方式,为什么要提Framework呢?请允许我从J2EE讲起。
J2EE体系包括JSP、Servlet、EJB、WEB SERVICE等多项技术。这些技术的出现给电子商务时代的WEB应用开发提供了
一个
非常有竞争力的选择。怎样把这些技术组合起来,形成
一个
适应项目需要的稳定架构是项目开发过程中
一个
非常重要的步骤。
此步骤一般主要由架构设计师完成,设计师将根据项目需
求
,对J2EE体系中的各处技术进行筛选取舍,并考虑到开发过程中的角色分工、后期的运行维护,以及系统扩展性等诸多因素,建立系统的架构。
一个
成功的软件需要有
一个
成功的架构,但软件架构的建立是
一个
复杂而又持续改进的过程,软件开发者们不可能对每个不同的项目做不同的架构,而总是尽量重用以前的架构,或开发出尽量
通用
的架构方案,
Struts
就是其中之一,
Struts
是流行的基于J2EE的架构方案,其他常用的基于J2EE的架构方案还有Turbine、RealMothods等。
4、
Struts
的起源
Struts
最早是作为Apache Jakarta项目的组成部分问世运做。项目的创立者希望通过对该项目的研究,改进和提高Java Server Pages (JSPs)、Servlet、标签库以及面向对象的技术水准。当前最高发行版本为
Struts
1.0.2,可以到http://jakata.apache.org/
Struts
下载。
Struts
这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为了帮助你减少在运用MVC设计
模型
来开发Web应用的时间。你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的优点来建立可扩展的应用,
Struts
是
一个
不错的选择。
5、
Struts
工作原理
MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。MVC的工作原理,如下图1所示:
Struts
是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。
Struts
继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。
Struts
的工作原理,如下图2所示:
控制:通过图2大家可以看到有
一个
XML文件
Struts
-config.xml,与之相关联的是Controller,在
Struts
中,承担MVC中Controller角色的是
一个
Servlet,叫ActionServlet。ActionServlet是
一个
通用
的控制组件。这个控制组件提供了处理所有发送到
Struts
的HTTP请
求
的入口点。它截取和分发这些请
求
到相应的动作类(这些动作类都是Action类的子类)。另外控制组件也负责用相应的请
求
参数填充 Action From(通常称之为From
Bea
n),并传给动作类(通常称之为Action
Bea
n)。动作类实现核心商业逻辑,它可以访问java
bea
n 或调用EJB。最后动作类把控制权传给后续的JSP 文件,后者生成视图。所有这些控制逻辑利用
Struts
-config.xml文件来配置。
视图:主要由JSP生成页面完成视图,
Struts
提供丰富的JSP 标签库: Html,
Bea
n,Logic,Template等,这有利于分开表现逻辑和程序逻辑。
模型
:
模型
以
一个
或多个java
bea
n的形式存在。这些
bea
n分为三类:Action
Form
、Action、Java
Bea
n or EJB。Action
Form
通常称之为
Form
Bea
n,封装了来自于Client的用户请
求
信息,如表单信息。Action通常称之为Action
Bea
n,获取从ActionSevlet传来的
Form
Bea
n,取出
Form
Bea
n中的相关信息,并做出相关的处理,一般是调用Java
Bea
n或EJB等。
流程:在
Struts
中,用户的请
求
一般以*.do作为请
求
服务名,所有的*.do请
求
均被指向ActionSevlet,ActionSevlet根据
Struts
-config.xml中的配置信息,将用户请
求
封装成
一个
指定名称的
Form
Bea
n,并将此
Form
Bea
n传至指定名称的Action
Bea
n,由Action
Bea
n完成相应的业务操作,如文件操作,数据库操作等。每
一个
*.do均有对应的
Form
Bea
n名称和Action
Bea
n名称,这些在
Struts
-config.xml中配置。
核心:
Struts
的核心是ActionSevlet,ActionSevlet的核心是
Struts
-config.xml。这在后面还会详细讨论。
6、
Struts
安装
Struts
的安装比较简单,下面的以Tomcat 4.0.4为例,讲述安装过程。
首先请到http://jakarta.apache.org/
Struts
下载
Struts
,建议使用release版,现在最高版本为1.0.2,下载后得到的是
一个
ZIP文件。
将ZIP包解开,可以看到这个目录:lib和webapps,webapps下有一些WAR文件。
假设你的Tomcat装在c:\Tomcat下,则将那些WAR文件拷贝到C:\Tomcat\webapps,重新启动Tomcat即可。
打开浏览器,在地址栏中输入:http://localhost:8080/
Struts
-example/index.jsp,若能见到“powered by
Struts
”的深蓝色图标,即说明成功了。这是
Struts
自带的
一个
例子,附有详细的说明文档,可以做为初学者的入门教程。
另外,
Struts
还提供了一系统实用对象:XML处理、通过Java reflection APIs自动处理Java
Bea
ns属性、国际化的提示和消息等。
7、
一个
实例
一个
用户注册系统,用户通过网页输入相关信息:注册ID号,密码,EMAIL,若注册成功,则返回成功提示信息,反之出现注册失败提示信息。
以下是相关文件的部分核心代码。
项目建立:
正式开发前,需要在Tocmat(我的tomcat装在c:\tomcat)中建立此项目。
比较快的一种建立方式为:
在C:\tomcat\webapps下新建目录test,再将C:\tomcat\webapps\
struts
-example下的
WEB-INF目录拷贝到test目录下,然后将test\WEB-INF下的src和classes目录清空,以及
struts
-config.xml文件中内容清空即可。这样,我们需要的
Struts
类包及相关的配置文件就都齐了。
开发时,将JSP文件放在test目录下,Java原文件放在test\WEB-INF\src下,编译后的类文件放在test\WEB-INF\classes下。
注册页面:reguser.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/
Struts
-
bea
n.tld" prefix="
bea
n" %>
<%@ taglib uri="/WEB-INF/
Struts
-html.tld" prefix="html" %>
RegUser
form action="/regUserAction" focus="logname">
Logname:
Password:
E-mail:
form>
此JSP页面不同于普通的JSP页,因为它大量运用了taglib,这些taglib对初学者而言,可能难于掌握,可这却是
Struts
的精华之一。灵活运用,将大大提高开发效率。
Struts
-config.xml:
<
Struts
-config>
<
form
-
bea
ns>
<
form
-
bea
n name="regUser
Form
"
type="org.cjea.
Struts
.example. RegUser
Form
"/>
form
-
bea
ns>
type=" org.cjea.
Struts
.example.RegUserAction "
attribute=" regUser
Form
"
scope="request"
validate="false">
Struts
-config>
Struts
的核心是Controller,即ActionServlet,而ActionServlet的核心就是
Struts
-config.xml,
Struts
-config.xml集中了所有页面的导航定义。对于大型的WEB项目,通过此配置文件即可迅速把握其脉络,这不管是对于前期的开发,还是后期的维护或升级都是大有裨益的。掌握
Struts
-config.xml是掌握
Struts
的关键所在。
Form
Bea
n:RegUser
Form
package org.cjea.
Struts
.example;
import javax.Servlet.http.HttpServletRequest;
import org.apache.
Struts
.action.Action
Form
;
import org.apache.
Struts
.action.ActionMapping;
public final class RegUser
Form
extends Action
Form
{
private String logname;
private String password;
private String email;
public RegUser
Form
(){
logname = null;
password = null;
email = null;
}
public String getLogName() {
return this.logname;
}
public void setLogName(String logname) {
this.logname = logname;
}
public void setPassWord(String password) {
this.password = password;
}
public String getPassWord() {
return this.password;
}
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return this.email;
}
public void reset(ActionMapping mapping, HttpServletRequest request)
{
logname = null;
password = null;
email = null;
}
}
每
一个
Form
Bea
n 都必须继承Action
Form
类,
Form
Bea
n是对页面请
求
的封装。即把HTTP request 封装在
一个
对象中,需要说明的一点就是多个HTTP request可以共用
一个
Form
Bea
n,便于维护和重用。
Action
Bea
n:RegUserAction
package org.cjea.
Struts
.example;
import javax.Servlet.http.*;
import org.apache.
Struts
.action.*;
public final class RegUserAction extends Action
{
public ActionForward per
form
(ActionMapping mapping,
Action
Form
form
, HttpServletRequest req,
HttpServletResponse res)
{
String title = req.getParameter("title");
String password = req.getParameter("password");
String email = req.getParameter("email");
/*
取得用户请
求
,做相应数据库操作,略
*/
}
}
Form
Bea
n的产生是为了提供数据给Action
Bea
n,在Action
Bea
n中可以取得
Form
Bea
n中封装的数据,经相应的逻辑处理后,调用业务方法完成相应业务要
求
。
Servlet的演变:在常规的 JSP,Servlet,Java
Bea
n三层结构中,JSP实现View的功能,Servlet实现Controller的功能,Java
Bea
n实现Model的实现。
在
Struts
中,将常规情况下的Servlet拆分与ActionServlet、
Form
Bea
n、Action
Bea
n三个部分。ActionServlet配合
Struts
-config.xml,专职完成页面导航,而不再负责具体的数据获取与相应逻辑,这两部分功能由
Form
Bea
n和Action
Bea
n来完成。
8、
Struts
优缺点
优点:
Struts
跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。
除此之外,
Struts
的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是
Struts
的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许
Struts
是
一个
很好的起点。
关于页面导航,我认为那将是今后的
一个
发展方向,事实上,这样做,使系统的脉络更加清晰。通过
一个
配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
缺点:
Taglib是
Struts
的一大优势,但对于初学者而言,却需要
一个
持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。
Struts
将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。
Struts
从产生到现在还不到半年,但已逐步越来越多运用于商业软件。虽然它现在还有不少缺点,但它是一种非常优秀的J2EE MVC实现方式,如果你的系统准备采用J2EE MVC架构,那么,不妨考虑一下
Struts
。
9、
Struts
项目实施经验
前段时间,我们基于
Struts
架构(结合Tiles),开发了
一个
WEB应用。以下是我们在项目过程中积累的一些经验和吸取的教训,望对各位有所帮助。
1、 基于
Struts
架构的项目开发,首先需要有
一个
很好的整体规划,整个系统中包括哪几个模块,每个模块各需要多少
Form
Bea
n和Action
Bea
n等,而且最好有专人负责
Struts
-config.xml的管理。开发基于
Struts
的项目的难点在于配置管理,尤其是对
Struts
-config.xml的管理。
2、 如果你的项目非常紧,并且项目组中又没有富有经验的
Struts
开发人员,建议不要冒然采用
Struts
。
Struts
的掌握需要
一个
过程,对于
一个
熟练的JSP程序员,自学大概需要半个月左右的时间。如果结合titls,则需要更长的时间。
3、 如果你在网页中大量运用taglib,那么你的美工将做出部分牺牲。当你结合Tiles,功能增强的同时,这种牺牲尤为明显。当然,你对功能和美观的取舍由你自己决定。
4、 Taglib是
一个
好东西,但灵活运用它却需要
一个
过程,如果你不想在Taglib上花太多的时间,那么只需理解与
FORM
有关的几个标记,其它的标记就放着吧,以后再看,先去研究ActionServlet和
Struts
-config.xml,你会觉得很有成就感。
5、
Struts
的诞生时间虽不长,但与之相关的工具却越来越多,如果你是用Jbuilder作为开发工具,那我可以为你推荐几款优秀的open tools,极大的提高开发效率。
6、
Struts
是否只适合于大型项目呢?No!
Struts
适合于各种大小的项目,当然,对于大型项目,它所体现出来的优势更加明显。
10、总结
Struts
是一种优秀的J2EE MVC架构方式。它利用taglib获得可重用代码和抽象 Java 代码,利用ActionServlet配合
Struts
-config.xml实现对整个系统导航。增强了开发人员对系统的整体把握,提高了系统的可维护性和可扩充性。
11、参考文献
1、 《
Struts
-documentation》
2、 《当前流行的J2EE WEB应用架构分析》 龚永生 IBM开发者网站
3、 《
Struts
,MVC 的一种开放源码实现用这种Servlet和JSP框架管理复杂的大型网站》Malcolm G. Davis IBM开发者网站
4、 《Jakarta
Struts
Book Review Project》 Chuck Cavaness Theserverside连载
Spring面试题
spring 的优点? 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能 5.容器提供了众多的辅助类,能加快应用的开发 6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,
Struts
等 7.spring属于低侵入式设计,代码的污染极低 8.独立于各种应用服务器 9.spring的DI机制降低了业务对象替换的复杂性 10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部 什么是DI机制? 依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同
一个
概念,具体的讲:当某个角色 需要另外
一个
角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中 创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者 因此也称为依赖注入。 spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。 设置注入的优点:直观,自然 构造注入的优点:可以在构造器中决定依赖关系的顺序。 什么是AOP? 面向切面编程(AOP)完善spring的依赖注入(DI),面向切面编程在spring中主要表现为两个方面 1.面向切面编程提供声明式事务管理 2.spring支持用户自定义的切面 面向切面编程(aop)是对面向对象编程(oop)的补充, 面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。 AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,aop是动态的抽象, 是对应用执行过程中的步骤进行抽象,,从而获得步骤之间的逻辑划分。 aop框架具有的两个特征: 1.各个步骤之间的良好隔离性 2.源代码无关性 Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要用: 1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. Hibernate是
一个
基于JDBC的主流持久化框架,是
一个
优秀的ORM实现。他很大程度的简化DAO层的编码工作 3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。 2. Hibernate是如何延迟加载? 1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection) 2. Hibernate3 提供了属性的延迟加载功能 当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、 4. 说下Hibernate的缓存机制 1. 内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存 2. 二级缓存: a) 应用及缓存 b) 分布式缓存 条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键数据 c) 第三方缓存的实现 5. Hibernate的查询方式 Sql、Criteria,object comptosition Hql: 1、 属性查询 2、 参数查询、命名参数查询 3、 关联查询 4、 分页查询 5、 统计函数 6. 如何优化Hibernate? 1.使用双向一对多关联,不使用单向一对多 2.灵活使用单向一对多关联 3.不用一对一,用多对一取代 4.配置对象缓存,不使用集合缓存 5.一对多集合使用Bag,多对多集合使用Set 6. 继承类使用显式多态 7. 表字段要少,表关联不要
struts
1 组件
模型
来源于url:http://
struts
.apache.org/release/1.3.x/userGuide/building_model.html 创建
模型
组件 "If I had a world of myown, everything would be nonsense. Nothing would be what it is, becauseeverything would be w
Struts
与
Struts
2的区别(简单详细)
从发展来看
Struts
2继承了
Struts
与WebWork的MVC框架,
Struts
2取两者之精华,形成新的框架,但是
struts
2还是更多的继承了
struts
的设计思想,并加入了WebWork的优点。 Stuts有个核心控制器,但是只提供了
一个
接口,也就是execute,还要配置action
form
之类的,很麻烦,所以依赖性比较强; 而Stuts2是针对拦截器开发的,也就是所谓的AOP思想,可以配置多
Struts
1与
Struts
2对比分析
Struts
2其实并不是
一个
陌生的Web框架,
Struts
2是以Webwork的设计思想为核心,吸收了
Struts
1的优点,因此,可以认为
Struts
2是
Struts
1和Webwork结合的产物。 简单来说二者的区别是:
一个
是Stuts1 ,
一个
是Stuts2,这是最大的区别,技术方面,Stuts1有个核心控制器,但是只提供了
一个
接口,也就是execute,还要配置...
Java EE
67,515
社区成员
225,878
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章