Struts2基础知识

来源:互联网 发布:淘宝旺旺手机版 编辑:程序博客网 时间:2024/06/11 03:06

一 概述

    

计算机生成了可选文字: StrutsZ框架的大致处理流程如卜:O浏览器发送请求,例如请求/m}lpage.acti。1,、/reports八nyrep。rt.pdr等。O核心控制器Filteroispatcher根据请求决定调用合适的Action。O城b灿rk的拦截器链自动对一清求应用通用功能,例如worknow、、alidation或文件上传等功能。O回调Actioll的。xecut。方法,该。xecut。方法先获取川户请求参数,然后执行某种数据库操作,既可以是将数据保存到数据库,也可以从数据库中检索信息。实际上,因为A以ion只是一个控制器,它会调川业务逻辑组件来处理少IJ户的清求。OA以ion的execute方法处理结果信息将被输出到浏览器中,可以是HTML页面、图像,也可以是PDF文档或者其他文档。此时支持的视图技术非常多,既支持JSP,也支持Velocity、FreeMarke:等模板技术。

 

struts2配置文件有两种:配置actionstruts.xml和配置全局属性的struts.properties

 

 

Struts.xml文件定义了一些列的action,定义action的时候指定action的指定类,并定义该action处理结果与视图资源之间的映射关系。

计算机生成了可选文字: 在上面的StrutS.xml文件中,定义了两个Action。定义Action的实现类,而且的定义Action的处理结果时,指定了多个:esult,方法返回值和视图资源之间的映射关系。对于如卜配置片段:时,不仅定义了A以ionresult元素指定execute<resul七name二”cancel”七ype二”redirec七一ac七ion'>We工come</resul七>表示当execute方法返回cancel的字符串时,跳转到Welcolne的Action。定义:esult元素时,可以指定两个属性:tyPe和11ame。其中11ame指定了execute方法返回的字符串,此处转向的资源可以是JSP,也可以是FreeMarker等,甚至是另一个Action―这一也是StrutSZ可以支持多种视图技术的原因。

 

struts2的核心是控制器组件。

 

A FilterDispatcher

B:业务控制器Action

 

二 命名空间

计算机生成了可选文字: name、pa(e决定了a(t.on的访问,‘默致为…可以接收所有翻引的a(t.。nname、pace可以写为,,或者,xxx.或者四皿分对回勺ac,ion访问路径为力ndex.action,/洲习index.action,或者八众八解泊dex.a(tion.namespa(e最好也用模块来进行命名

 

 

 

 

2package,相当于为了区分里面不同的action的重名的情况

 

3

计算机生成了可选文字: <口On,七ant<p口Ck几Oen日五吧.r,S匕rU:!.口三气叮峨:d三”Val议e.砰七r公巴厅I》name-.fron七.e器tend,二S亡r翻ts-der咨U二七”::己允护,盆己护‘<aC七IOnn口加吧=’恤月deX一》<re,。1'na,亡一,s口cce,s")/NO.之,pace.j即</re,ul七><jac七lan》</p.cka切.>

 

就是说,想要访问某一个action,那么必须加上namespace的值,那么这里

要访问的话就是 /front/index

 

result如果不写里面的name=success”,就默认为成功。因为SUCCESS是继承的类里面的自己定义的常量。

 

计算机生成了可选文字: <packaqena.e一”frant叩ex亡en山.'s七r二:s一d已fault'na加吧,pace一l/front今<口C七10nn.扣e一”二ndeX一)<rea吐:)/月..巴月pace‘立月p</re,ul七></actian></pac七age><packogen。”吧-.,.二n介ex:end,.介S七rU亡s-def钧U孟t.na,e,pa:e.”一》<三C艺工Onna功e…二nd已X,><re,ul:、/Na功e,poce,二口p</re,ul七》</actlan》风/pac比。e>:艺U七月》。,。.}f.,回二“匕”·‘”一;加触,吕三0u,11。。口rr。per.:。,「脚困迹面画画肠回面丽翻困圈曰恤币ace决定了action的访问路径,默认为”',可以接收所有路径的改tion‘口a〔e可以写为/,或者/众戈.或者/联刀Vvv.对应的action访问路径

 

 

action的话,如果别的包里没有,那么找namespace为空的执行。

 

 

4、学习视频教程的时候,先把里面的代码导入到工程里面去,学习代码,然后自己再去试验,不必要非得第一次就自己完全的写,要注意,自己的最主要的目标是快速掌握知识点,没必要非得自己背着写出来。

 

5、如果从eclipse中左边复制一个工程,然后复制,重新命名一个的话,一定要记住,无web那里,把Web contentroot 名字设置为自己新命名的名字。

 

 

三 通配符

12:59

计算机生成了可选文字:

 

对于这个URL的分析,首先是端口后面的app,然后就是actions命名空间,然后就是一个action名字。

计算机生成了可选文字: :kaqena翻e一”actions'.xte乙d,一struts一d.介ult'na胜,pace一/actions护卜<.口叹沪nn~一,studon心。cia二,一c二.勿琢.stots:.act、on.:tudont孟ct、on,,一thod一(i)·><re,ul七>/S七udent111</口C七IOn)3UCCe<ac七lanna.e一”二”cla,,一co.。bjsxt。stru七52。ac七ion。fl}Act工on今<re,ul七>八1》一12》_3ucce,3·j却</re3ul七><竺一《O争_,ucce3,·立聋刀一></己C七IOn>,c比aqe>

但是在上面的配置中,找不到对应的action名字,但是两个里面全部是用通配符设置好的,

而对于method={1}" 表示的是前面第一个*匹配的内容,例如上面,很显然,选中的*匹配的是“add”,那么后面的method里面的内容代表的自然就是add

 

下面的result里面值也是匹配的,以前需要匹配多个result,这里的话就直接一个。这里的话,需要JSP的命名规则一定要约定好,按照一定的格式。

 

下面第二个action

四 注意点

1:若拷贝项目后,一定要改web

计算机生成了可选文字: 肠刀FroPertleStorstruts之_UZUU_Namespace~巴二习止型口鱼里困.ResourceBuildersJavaBuildpathJavaCodeStyleJavaCompilerJavaEditorJavadocLocation'MyEclipseJavascriptJSpFragmentsTaskTagsUMLI1ValidationWebXDocl改projectReferenceSRefactoringHistoryRun/DebugSettingsRootl丁。9Libraries}DeploymentWeb一rootfolder:ZWebRootWebContext一root:/StrutsZ一ZO0eNamespace一巨赢二(seeNotice)NoticeContext一rootchangesonlyapplytoexplodedandpackagedWARdeploymentsoft卜15project.Toupdatet卜econtext一rootwhenthisproject15deployeda、amoduleofanenterpri,eprojectselecttheenterpriseproject.Fromthecontextmenu(;.e.,right一click)chooseMyEclip,e>Add/RemoveModuledialog.Fromt卜15dialogremovetheweb一projectfromt卜eenterpri,eproject.Thenre一addtheweb一projecttot卜eenterpriseprojectwhilespecifyingthenewcontext一root·

 

 

2

23:30

1Action返回一个结果的名字字符串,例如SUCCESSERROR以及INPUT等,从struts.xml中获取映射信息。一个给定的结果字符串将选择一个页面或其他资源(图片或PDF)来返回给用户。

 

 

3

1:首先下载 struts2jar

2:建立 web project

3然后再struts2的包里面apps里面解压blank那个例子

4:把里面classes里面的struts配置文件拷到项目的src下,

5:然后拷贝类库lib中的jarweb_inf下的lib中,可以从navigater视图中看到。

6:配置web.xml,参考示例程序,把里面filter的东西复制过来

7:然后在strut.xml配置文件中,将package全部注释掉,重新写一个package

8Struts2是集成了以前的Webwork

五 DMI

9DMI

2011911

12:47

计算机生成了可选文字: ta口ena功e=Nuser'.ex七end,="s七ruts一defaul七”name,pace="/user">二aCt1Onn~=,恤鑫困’'<re3ul七>/u,eraddcla,,'"cozu.b〕sxt.st刊tsZ.user。act工on.UserAction”硬七hod="add">,ucce,,。j,p</:e3ul七>

 

 

 

最后面的参数是method,表示:这里调用的不是execute方法了,而是电泳method指定的add方法。这样的话,类里面只要一个名字为add的方法就可以。

 

 

计算机生成了可选文字: pnbliccla8SU,erAc七ionpubllcs七rin口add()eXtendsiActlonsupport《retUrnS叮犯SS'

 

上面这种不怎么用。

 

一、下面是指动态的方法调用DMI

 

计算机生成了可选文字: <act工onna功e,,,user.cla,,,'cc腼.bjsx七.stru七sZ.user。action。UserAction,,><re3ul七>/u,er_add_succe,,·j,p</re,ult></aC七10n》

这样的话,就不使用method这个参数,直接动态调用里面的方法,就是在action的名字和要调用的方法中间加上一个!,这样的话,如果action类里面有多个方法,却不用写多个action了,想要调用的时候直接用DMI方式就可以了。

 

计算机生成了可选文字: '.rlu写叮I'dd

 

 

六 Action接受参数

x

2011911

13:19

action属性接收参数。

 

1:在自己的action类里面,设置属性,然后gettersetter方法。

 

2DomainModel接收参数

所谓的域模型,就是在一个单独的类里存储属性,然后action方法里直接调用就可以了,不要newstruts2会自动new

 

例如:

计算机生成了可选文字: 幻。毛,让吐泛”er血.r人心t1.跳j.v.bjotttrut咬.”廿恤。rja,。句。吃‘tr吐口篮盯色仁t】p.blioclas,口3e:Ac七ionex七endsA。七ionsuppor七二田.由c.下Ox」,trut,.x一1J龟,翻nSL污、r解1.'盆.f.r.几e.dL盆卜r廿1.二几卫S,,te..od'prlvateUseru,er尝『汹『囚}毋闷由闲同白日·pablIcs七rlnoadd(){Sy,:e扭.ou七.p:1。:Inl一匕压,e=一+u,er.qe七,己口e《)卜君SY。七e扭.out.pr二n七Inl一aae一+uoe二。Oe七A口e峨》卜;returnSUCC艺写g:Llbr叮,}〕众t60_l贯.、对。ot',吧了^-I姗‘才视刃一r即尹:。吐.二J:PIpDblioU,e二ret口rnqe:U,e二咤)主U,er二以吐么己囱田J尸,尹r.,1.,跳’\巴知二:1曰口p百bl几0vo几d,e七口,erlU,eru,er)《thl,。U日er=U,er言

计算机生成了可选文字: 口口口口口口口口口口口口口口口口‘...............',1了,If叽‘~,',“心月。。.=峙.解“二鄙

 

 

这样就可以直接调用了。

还可以对于user里面的属性,多一个DTO,数据传输对象,里面定义属性。那么再根据DTO生成一个user就可以了。

计算机生成了可选文字: publiccla,。Uae二DIO《privotes七rlnono.巴:privates亡rlnqpa,a甘Ord二privates七rin口ccnf工:比二nqPa,。,ord声}T

 

计算机生成了可选文字: p.bllcolass口,e:Ac七工onextendsAc七工onsuppor七《pr!vate口seru,er:,,p::va:e画熟扭:,er叮。:p协blIcs七rlnoaddl){SY,七e也.Ou七·prln:In(一匕。.e二”+u,er.qe七Na口e《)》二SY,七em.out。prin七In(一a口e一+u,er。Oe匕A口e《》加;retur。写口亡C艺写S:口口叨叫双朋朋咖口0000000000000000'poblIcvo乞d,e七UaerIU,eru,er)丈thl.。U月er.uBer尝

3:模型驱动

 

计算机生成了可选文字: p.bllcolassUse:Ac七ionextend,Actio。月uppor七11叫ple.旧nt,胜。de1Dr工,en<U,er》丈prlvateU,eruser昌neUU3erl)言p.:。。,:::n。。dd《,Jsy,七e皿.Ou七.prln:In(一二盈比e='+u,er.ge七Na口巴()卜;SY。七em.out.prin七In(一a口e一+uoe二。Oe仁AOel),二returnSUCC艺S写:.0,err之已ep妞bltcU,er口e《Hadel()IretornU3er尝

 

 

对于MVCv就是那些JSPM就是数据类,c就是action

 

 

原创粉丝点击