`
miracle9i
  • 浏览: 34622 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Action详解

阅读更多
访问ServletAPI(3种方式)

  1. 使用com.opensymphony.xwork2.ActionContext
    • Object get(Object key)类似于调用HttpServletRequest的getAttribute(String name)的方法
    • static ActionContext getContext() 获取系统的ActionContext实例
    • Map getParameters() 获取所有的请求参数,类似于调用HttpServletRequest对象的getParameterMap方法
    • Map getSession() 返回一个Map,该Map模拟了HttpSession实例
    • Map getApplication() 返回一个Map,该Map模拟了ServletContext实例
    • void setApplication(Map application) 直接传入一个Map实例,Map中的key-value直接转换成Application中的key-value
    • void setSession(Map session)
    • void setParameters(Map request)
  2. 通过实现接口
  3. struts2通过实现接口,可以直接获得servlet对象
    实现:
    • org.apache.struts2.util.ServletContextAware 可访问用户请求的HttpServletRequest实例
    • org.apache.struts2.util.ServletResponseAware 可访问服务器响应的HttpServletResponse实例
  4. 通过org.apache.struts2.ServletActionContext的静态方法
    • static PageContext getPageContext()
    • static HttpServletRequest getRequest()
    • static HttpServletResponse getResponse()
    • static ServletContext getServletContext()

动态Action:
  1. DMI(Dynamic Method Invocation)动态方法调用
  2. actionName!methodName.action 形式将请求映射到Action上的相应方法进行处理
    注意:使用DMI之前请设置系统允许进行动态方法调用。设置struts.enable.DynamicMethodInvocation常量为true
  3. 为action元素指定Method属性
  4. 不推荐:这样需多处配置逻辑视图,影响可修改性
  5. name / class / method属性都支持通配符(*)
  6. 第一个出现的*,表达式为{1}.以此类推,可以实现通过动态属性名,实现对其它属性的动态指定
    对于多个Action可以同时匹配同一请求时,如果在Action映射中有完全匹配的,则选定此为之匹配,否则以先出现的包含通配符匹配的Action进行匹配


附:
  • Action配置
  • <action name="actionName" class="package.ActionName">
  • 配置默认Action:配置一个Action为容器默认的Action
  • <default-action-ref name="actionName"/>
分享到:
评论
2 楼 miracle9i 2008-08-11  
你需要在转发的url后面使用el表达式附带你所要传的参数
1 楼 smallsnake 2008-08-10  
有一个问题啊,是不是action与action之间,request对象中的属性不能传递啊,就是在一个action中放置一个属性,在别的action中调用request不能获取前面保存的属性?<result>是用的默认的转发方式

相关推荐

Global site tag (gtag.js) - Google Analytics