struts2简记

struts.xml:
<struts>
  <package name="HelloWorld" extends="struts-default">
    <action name="product-input">
      <result>/WEB-INF/pages/product-input.jsp</result>
    </action>
    <action name="product-detail" class="com.struts2.Product" method="save">
      <result name="detail">/WEB-INF/pages/product-detail.jsp</result>
    </action>
  </package>
</struts>

package的namespace属性默认是"/"
action有一个默认的class属性值和一个默认的method属性值
result的name属性值默认是success,type属性值默认是dispatcher
WEB-INF下的资源服务器内部转发可以访问,直接通过URL访问不到

action VS Action
action:代表一个struts2请求。
Action类:能够处理struts2请求的类。
struts2会为每一个请求创建一个Action实例,即是线程安全的。

在Action中访问WEB资源:
  有两种方式:
  1.和Servlet API解耦的方式:只能访问有限的Servlet API对象,且只能访问有限的方法。
    > 使用ActionContext
    > 实现XxxAware接口(若一个Action类中有多个方法,则建议使用该方法)
  2.和Servlet API耦合的方式:可以访问更多的Servlet API对象,且可以调用其原生的方法。
    > 使用ServletActionContext
    > 实现ServletXxxAware接口

struts2常量:
    <constant name="struts.action.extention" value="action,do"></constant>

ActionSupport:
    ActionSupport类是默认的Action类,若某个action节点没有配置class属性,而ActionSupport即为待执行的Action类,而
execute方法即为要执行的action方法。

result:
    常用的有四种type:dispatcher(默认)、redirect、chain、redirectAction

通配符映射匹配:*、{0}、{1}

动态方法调用: struts.enable.DynamicMethodInvocation = false

值栈:
  1.可以从ActionContext中获取值栈对象
  2.值栈分为两个逻辑部分
    > Map栈:实际上是OgnlContext类型,是个Map,也是ActionContext的一个引用。可以从中获得requestMap,sessionMap,applicationMap,
    > 对象栈:实际上是CompoundRoot类型,是一个使用ArrayList定义的栈。

struts2利用s:property标签和OGNL表达式来读取值栈中的属性值
    1.值栈中的属性值:
        > 对象栈:对象栈中某一个对象的属性值
        > Map栈: request,session,application的一个属性值或一个请求参数的值

struts2自动把Action对象放入值栈中
    放入的时间点为;struts2终将调用Action类的action方法之前

struts2通用标签:
    <s:property>:
    <s:url>:
    <s:set>:向page、request、session、application域对象中加入一个属性值。
    <s:push>:把一个对象在标签开始后压入到值栈中,标签结束时弹出值栈。
    <s:if>、<s:elseif>、<s:else>
    <s:iterator>、<s:sort>、<s:a>、<s:date>

struts2表单标签:
    struts2表单标签能进行回显:利用了值栈

ModelDriven接口、paramsPrepareParams拦截器

关于PrepareInterceptor拦截器(Preparable接口)
    Preparable接口通常情况下要跟ModelDriven一起用,prepare方法的主要作用:为getModel方法准备model的。
    若Action实现了Preparable接口,则Struts2尝试执行prepare[ActionMethodName]方法,若prepare[ActionMethodName]不存在,
则尝试执行prepareDo[ActionMethodName]方法。若都不存在,则都不执行。
    若PrepareInterceptor的alwaysInvokePrepare属性为false,则Struts2将不会调用实现了Preparable接口的Action的prepare方法。

struts2拦截器是可插拔的,拦截器是AOP(面向切面编程)的一种实现。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值