欢迎来到天天文库
浏览记录
ID:11542916
大小:43.00 KB
页数:4页
时间:2018-07-12
《struts2 依赖注入》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Struts2基础描述Struts2变化MVC框架最主要的两个功能是页面对象参数与ActionModel的转换与页面流转控制,我们考察框架时也多从这两点入手。 Struts2模式上的变动: 一、Action从singletonbean改为了perrequest的prototypebean。之前Struts1为了线程安全,action里面没有任何成员变量,在一个处理函数里输入输出都靠request,response参数搞定。 二、将很多处理透明的分解到了InterceptorChain中, 因此,Struts2中Action在MVC里的位置,从Controller转为了Model
2、(有属性、有行为且不依赖Request/Response的POJO),而Controller的角色则由Struts2亲自担当。 Struts2实际上的简化: 1.输入输出:·FormBean与Action合一,直接读写成员变量,不再需要FormBean或LazyBean,不再需要从request读写数据,每个函数不再需要长长的Request/Response参数。·实用的Prepareable接口和ModelDriven接口,比在在update时先从数据库载入拥有10个属性的对象,然后从页面绑定其中5个属性,整个过程很完美。 2.配置文件:·Zero-Config与Code-Bin
3、d,基于约定与annotation实现零配置文件。·支持配置的继承与扩展, 可以预设通用的配置。零配置文件 ZeroConfig能根据web.xml中配置的actionPackages自动扫描所有Action类,并猜测其NameSpace. 再利用CodeBehind猜测Result指向的jsp,实现了struts.xml的零配置(其实也不是完全没有struts.xml,而是指struts.xml的内容不会随action的增加而膨胀) 如果有特殊的结果指向(如redirect类型的结果),在Action处用@Result配置。 如有package级的配置(如使用非默认的
4、Interceptor栈),仍在struts.xml中定义package,用@ParentPackage指定。 不过,目前ZeroConfig的Annotation较少,只有@Result、@ParentPackage,@NameSpace(java的package名不符合约定规则时使用),还有exception-Mapping之类的配置没有包含。 1.ZeroConfig 在Web.xml中设置ActionPackages,则Struts2会自动扫描这些Package下的Class,Class名含Action或扩展子ActionSupport的类都将被载入。 其中actio
5、nPackages的设置很有学问,比如com.ulearning.web,则com.ulearning.web.user.RoleAction,访问路径就会被自动的猜测为 /user/role.action 如果package名不符合这个规则,就需要自行设定NameSpace了,可以用Namespaceannotation。又或者用ParentPackageannotation指定package,再在struts.xml中定义package的namespace. struts2org.a
6、pache.struts2.dispatcher.FilterDispatcheractionPackagescom.ulearing.web 在Action类中,用Annotation对特殊的RELOAD返回值进行了注释,其余的results就交给code-behind去猜了。@Results({@Result(name=CRUDActionSupport.RELOAD,value=
7、"/role",type=ServletActionRedirectResult.class)})publicclassRoleAction 2.CodeBehind 指定JSP的默认目录在/WEB-INF/jsp下,原因就是希望保护jsp不能被直接打开,安全模块只要保护Action的地址即可 1.可以用/u
此文档下载收益归作者所有