快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰黑平台_龟发之家论坛



Result Types

从action天生结果,并返回组用户不合的结果值,不都必要相同的类型.结果"success"可以衬着为一JSP页面,但结果"error"可能必要发送一个HTTP头返回给浏览器.

结果的类型应用"type"属性在结果节点设置设置设备摆设摆设.与"name"属性相似,这个属性也有一个默认值-"dispatcher"-将衬着JSPs.大年夜多半的光阴,你将应用所供给的结果类型,但无意偶尔也可能供给自定义的实现.

Request and Form Data

为了要做出Action应该若何事情的抉择,并且供给数据的数据库持久工具,Action可能必要从哀求字符串中造访值,并天生数据.

Struts2沿序JavaBean的要领-假如你想造访数据,你必要为字段供给一个getter和setter措施.造访哀求字符串和form里的值是一样的.每个哀求字符串或是Form里的值都是一个简单的名值对,所以为一个特定的名称赋值,需在action里创建一个setter措施.例如, 假如JSP提议了一个哀求,"/home.action?framework=struts&version=2",澳门新葡亰黑平台Action必要供给 setter措施"setFramework(String frameworkname)",和setter措施"setVersion(int version)".

留意在这个例子中,setter措施不是必然必要一个String的值.默认的,Struts2将从一个String转换成action所需的类型.可以转换所有的原始类型和根基工具类型,而且可以设置设置设备摆设摆设你自己的自定义类.Struts2同样可以操作繁杂工具中的值,例如,一个名称在Form元素中称为"person.address.home.postcode",值为"2",Struts2将应用同样的调用要领"getPerson().getAddress().getHome().setPostcode(2)".

Accessing Business Services

到现在为止,我们都在评论争论假如设置设置设备摆设摆设action,假如节制衬着不合的结果返回给用户.对付action是做什么的,是异常紧张的一部分,然则,返回它们的结果之前,一些处置惩罚必要履行.对付这个,它们必要造访一些不合类型的工具-商业工具,数据造访工具,或是其他资本.

为了供给一个松耦合的系统,Struts2应用称为依附注入或是节制反转(IOC)的技巧.依附注入可以经由过程构造函数注入,接口注入和set措施注入来实现.Struts2应用set措施注入.意思是对付action可用的工具,你仅必要供给一个setter.首选的依附注入框架是Spring框架,可以经由过程插件设置设置设备摆设摆设进来.另一个选择是Plexus,或都假如你爱好,你可以调换成你自己的实现.

也有一些工具不能用Spring框架治理,比如像HttpServletRequest.这些工具是组合应用setter注入和接口注入来操作.对付每一个非商业工具,都有个响应的口(大年夜家都知道的"aware"接口),Action必须实现这个接口.

注:

WebWork最初有自己的依附注入框架.它在2.2版时,删除了这个特性,而改用Spring框架调换.最初的组件框架是基于接口的,所以为每个组件接口和接口的实现类,都必要供给.

别的,每个组件都有一个"Aware"接口,为组件供给一个setter.假如接口是"UserDAO",那么Aware接口则为"UserDAOAware"(约定俗成),并且拥有一个措施-一个setter,"void setUserDAO(UserDAO dao);".

拦截器会为需要的接口和setters注入需要的工具注入.

Accessing Data from the Action

有些时刻,必要查看被action改动过的工具.有几种技巧可以被应用.

很多WEB法度榜样员认识的技巧是将必要造访的工具放到HttpServletRequest和HttpSession中.这可以经由过程实现"aware"接口来完成,然后设置对像,应用特定的名称造访.

假如你想应用内建的标签或是引入JSTL支持,造访数据就异常轻易了.他们两个都可以经由过程值栈直接存取action.独一的事情便是法度榜样员必要给Action里容许被造访的必要存取的工具供给getter措施.

我们将在后面的部分更具体的评论争论值栈.

Interceptors

Struts2框架应用拦截器供给了许多特性;例如包孕非常处置惩罚,文件上传,生命周期回调和验证.拦截器是同Servlet过滤器或是JDKs的代理类相同的观点.它们供给了Action的前处置惩罚和后处置惩罚的措施.与Servlet过滤器相似,拦截器也可以分层和排序.They have access to the action being executed, as 澳门新葡亰黑平台well as all environmental variables and execution properties.

让我们开始评论争论拦截器依附注入.依附注入到action傍边,与我们之前看到的一样,有两种不合的形式呈现.有一些拦截器是我们已经提过的:

Spring框架-ActionAutowiringInterceptor拦截器

哀求字符串和Form值-ParametersInterceptor拦截器

Servlet根基工具-ServletConfigInterceptor

前两个拦截器自力事情,不必要Action再做什么,但着末一个却是不合的.它同下面的接口协作事情:

SessionAware-经由过程一个Map来供给对所有Session属性的造访

ServletRequestAware-供给对HttpServletRequest工具的造访

RequestAware-经由过程一个Map来供给对所有Request属性的造访

ApplicationAware-经由过程一个Map来供给对所有Application属性的造访

ServletResponseAware-供给对ServletResponse工具的造访

ParameterAware-经由过程一个Map来供给对所有哀求字符串和Form值的造访

PrincipalAware-供给对PrincipleProxy工具的造访;这个工具实现了HttpServletRequest工具的规则和角色的措施, 但供给个代理,容许自力于Action的实现

ServletContextAware-供给对ServletContext工澳门新葡亰黑平台具的造访

为了将精确的数据注入到Action傍边,它必要实现必需的接口.

Confi澳门新葡亰黑平台guration

假如我们想要能够注入(或任何其他由拦截器供给的功能)到我们的Action,我们必要供给设置设置设备摆设摆设.像其他元素一样,大年夜多半的拦截器已经为你设置设置设备摆设摆设好了.只必要你的Actions的包承袭自"struts-defau澳门新葡亰黑平台lt"包即可.

要设置设置设备摆设摆设一个新的拦截器,我们首先必要定义这个拦截器.将和标签直属

标签.对付上面提到的Spring框架拦截器,它的设置设置设备摆设摆设如下:

1interceptors>

2

3interceptor name="autowiring"

4class="interceptor.ActionAutowiringInterceptor"/>

5interceptors>

您可能还会对下面的文章感兴趣: