struts2学习

Struts1 缺陷:
1.支持的表现层技术单一,只支持JSP
2.与Servlet API严重耦合,难于测试
public ActionForward LinkManageContactListAction(ActionMapping mapping,
    ActionForm form, HttpServletRequest request,
    HttpServletResponse response) throws Exception {}
3.代码严重依赖于Struts1 API,属于侵入式设计

Webwork相对于Struts1优点:
1.Action无需与Servlet API耦合,难于测试
2.Action无需与Webwork耦合,代码重用率高
3.支持更多的表现层技术,有更好的适应性

Strut2与Webwork相比
1.命名改变
2.不再支持webwork的AroundInterceptor
3.不再支持webwork的富文本编辑器,应适用Dojo
4.不再支持内建的IOC容器,支持spring IOC

当Action设置了某个属性值后,Struts2将这些属性值全部封装在一个叫struts.valueStack的请求属性里面,Action中的属性名可以理解为
ValueStack中的value的名字

ActionSupport
当用户提交请求时,请求得到execute方法处理之前,先会被validate方法处理,如果该方法处理结束后,Action的fieldErrors里的校验错误
不为空,请求会被转发给input逻辑视图. addFieldError("username","user.required");

Action只是一个控制器,它并不直接对浏览者生成任何响应,所以在Action中通过HttpServletResponse来生成服务器响应是不可能的。系统是通过Action对应的getter和setter方法来处理请求参数的,而不是通过Action属性名来处理请求参数的。

动态方法调用是通过struts.enable.DynamicMethodInvocation变量设定???

对于redirect和redirect-action两种结果类型,都是重新生成一个新请求,区别是前者通常用于生成一个对具体资源的请求,后者通常用于生成一个对其他Action的请求。两个结果类型都会丢失请求参数、请求属性和前一个Action的处理结果。
<action>
<result name="error" type="redirect-action">error</result>
</action>

<action>
<result name="success" type="redirect">/${target}.jsp?name=${currentSkill.name}</result>
</action>
</action>

模型驱动使用使用单独的VO(值对象)来封装请求参数和处理结果,属性驱动则使用Action实例来封装请求参数和处理结果。

setFileUploadName ?????
权限拦截

你可能感兴趣的:(spring,struts,IOC,Webwork,dojo)