仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1657|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA网站制作之Struts中分歧的Action和ActionForm组合...

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:34:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
还得说上一点,就java本质而言,是面相对象的,但是你有没有发现,java也不全是,比如说基本类型,int,那他就是整型而不是对象,转换类型是还得借助包装类。在TSS.com上看到一篇好文,有关Struts利用中各类分歧的Action和ActionForm组合的利害。我先消化一下,收拾好,供人人参考。原文题目:Strutsactionmappings:DivideEtImpera,MichaelJuravlev。在TSS上的URL:http://www.theserverside.com/articles/article.tss?l=StrutsActionMapping

申明:浏览本文必要必定的Struts基本。
注:文中小写的action纷歧定代表详细的StrutsAction类,偶然也指作为一个全体的actionmapping。


[1]完全的action

<actionpath="/aFullAction"
type="somePackage.someActionClass">
name="someForm"
input="someJSP.jsp"
<forwardname="successful"path="someJSP.jsp"/>
<forwardname="failed"path="someOtherJSP.jsp"/>
</action>

起首,Struts的ActionServlet吸收到一个哀求,然后依据struts-config.xml的设置定位到响应的mapping(映照);接上去假如form的局限是request大概在界说的局限中找不到这个form,创立一个新的form实例;获得form实例今后,挪用其reset()办法,然后将表单中的参数放进form,假如validate属性不为false,挪用validate()办法;假如validate()前往非空的ActionErrors,将会被转到input属性指定的URI,假如前往空的ActionErrors,那末实行Action的execute()办法,依据前往的ActionForward断定方针URI。

如许做的效果是:execute()仅当validate()乐成今后才实行;input属性指定的是一个URI。


[2]唯一Form的action

<actionpath="/aFormOnlyAction"
type="org.apache.struts.actions.ForwardAction"
name="someForm"
input="someJSP.jsp"
parameter="someOtherJSP.jsp"
/>

起首,Struts会在界说的scope征采someForm,假如找到则重用,假如找不到则新建一个实例;获得form实例今后,挪用其reset()办法,然后将表单中的参数放进form,假如validate属性不为false,挪用validate()办法;假如validate()前往非空的ActionErrors,将会被转到input属性指定的URI,假如前往空的ActionErrors,那末转到parameter属性指定的方针URI。

如许做的效果是:没有action类能够寄存我们的营业逻辑,以是一切必要写进的逻辑都只能写到form的reset()大概validate()办法中。validate()的感化是考证和会见营业层。由于这里的action映照不包含forward(也没成心义),以是不克不及重定向,只能用默许的谁人forward。这类唯一form的action能够用来处置数据猎取并forward到另外一个JSP来显现。


[3]唯一Action的action

<actionpath="/anActionOnlyAction"
type="somePackage.someActionClass">
input="someJSP.jsp"
<forwardname="successful"path="someJSP.jsp"/>
<forwardname="failed"path="someOtherJSP.jsp"/>
</action>

起首,ActionServlet吸收到哀求后,获得action类实例,挪用execute()办法;然后依据前往的ActionForward在设置中找forward,forward到指定的URI或action。

如许做的效果是:没有form实例被传进execute()办法,因而execute()必需本人从哀求中猎取参数。Action能够被forward大概重定向。这类action不克不及处置经由过程HTMLFORM提交的哀求,只能处置链接式的哀求。


[4]唯一JSP的action

<actionpath="/aJSPOnlyAction"
type="org.apache.struts.actions.ForwardAction"
parameter="someOtherJSP.jsp"
/>

起首,ActionServlet接到哀求后挪用ForwardAction的execute()办法,execute()依据设置的parameter属性值来forward到谁人URI。

如许做的效果是:没有任何form被实例化,对照实际的情况多是form在request更初级其余局限中界说;大概这个action被用作在使用程序编译好后充任体系参数,只必要变动这个设置文件而不必要从头编译体系。


[5]两个action对应一个form

<actionpath="/anAction"
type="somePackage.someActionClass">
name="someForm"
input="someJSP.jsp"
<forwardname="successful"path="/anotherAction.do"/>
</action>
<actionpath="/anotherAction"
type="somePackage.someOtherActionClass">
name="someForm"
input="someOtherJSP.jsp"
<forwardname="successful"path="someResultJSP.jsp"/>
</action>

就每一个独自的action来说,处置上并没有和完全的action有甚么本色的区分。这个组合形式能够被用来传送命令对象(form)。必要注重的是在后一个action中一样会挪用form的reset()和validate()办法,因而我们必需确保form中的信息不被重写。

处置的体例大抵分为两种:a)在request中放进一个唆使器标明前一个action成心向后一个action传送form,从而在后一个action能够保存谁人form中的值,这一体例只能在利用forward时利用。b)当利用redirect而不是forward时,能够把唆使器放在session或更高的级别,在命令链的最初一环将这个唆使器扫除。


[6]两个action对应两个form

<actionpath="/anAction"
type="somePackage.someActionClass">
name="someForm"
input="someJSP.jsp"
<forwardname="successful"path="/anotherAction.do"redirect="true"/>
</action>
<actionpath="/anotherAction"
type="somePackage.someOtherActionClass">"
name="someOtherForm"
input="someOtherJSP.jsp"
<forwardname="successful"path="someResultJSP.jsp"/>
</action>

这个组合体例跟前一种在流程上没有太年夜区分,只是我们如今关于两个action分离供应了form,因而代码看上往加倍明晰。因而我们能够分离处置WEB使用程序的输出和输入。值得注重的是,后一个action一样会实验往form中写进那些参数,不外我们能够如许处置:a)在后一个form中利用另外一套属性名;b)只供应getter而不供应setter。

大抵的处置是如许:
前一个action吸收输出、考证、然后将数据写进营业层或耐久层,重定向到后一个action,后一个action手动的从营业层/耐久层掏出数据,写进form(经由过程其他体例),交给前台JSP显现。

如许做的优点是不用保存输出form中的值,因而可使用redirect而不是forward。如许就下降了两个action之间的耦合度,同时也制止了不用要的反复提交。
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。
小魔女 该用户已被删除
沙发
发表于 2015-1-21 07:06:47 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
只想知道 该用户已被删除
板凳
发表于 2015-1-22 20:09:31 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
乐观 该用户已被删除
地板
发表于 2015-1-31 10:51:50 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
谁可相欹 该用户已被删除
5#
发表于 2015-2-5 18:44:52 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
不帅 该用户已被删除
6#
发表于 2015-2-11 18:30:26 | 只看该作者
是一种为 Internet发展的计算机语言
因胸联盟 该用户已被删除
7#
发表于 2015-2-20 14:22:48 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
再见西城 该用户已被删除
8#
发表于 2015-2-20 14:29:13 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-3 20:59:48 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
柔情似水 该用户已被删除
10#
发表于 2015-3-6 19:33:47 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
精灵巫婆 该用户已被删除
11#
发表于 2015-3-13 06:35:34 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
海妖 该用户已被删除
12#
发表于 2015-3-15 13:43:10 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
再现理想 该用户已被删除
13#
发表于 2015-3-17 11:46:20 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
简单生活 该用户已被删除
14#
发表于 2015-3-17 23:11:27 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
兰色精灵 该用户已被删除
15#
发表于 2015-3-22 23:18:13 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
飘灵儿 该用户已被删除
16#
发表于 2015-3-30 06:55:05 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
冷月葬花魂 该用户已被删除
17#
发表于 2015-4-4 21:37:57 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
山那边是海 该用户已被删除
18#
发表于 2015-4-15 13:33:20 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
活着的死人 该用户已被删除
19#
发表于 2015-4-18 15:17:30 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
变相怪杰 该用户已被删除
20#
发表于 2015-4-20 09:30:05 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 16:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表