struts2:Action、interceptor继承的基类和获得作用域的方式

一、Struts2
 1、Action:
  1)、实现struts2的Action类功能,需要继承ActionSupport类(ActionSupport实现了Action接口),可以重写excute()方法,实际开发中一般不用
  2)、在Action中获得作用域的方式:有三种
   A、方式一:纯粹的servlet  api 
    HttpServletRequest request=ServletActionContext.getRequest();
    HttpServletResponse response=ServletActionContext.getResponse();
    request.setAttribute("name", this.getUsername());
    HttpSession session=request.getSession();
    ServletContext application=session.getServletContext();
   B、方式二:通过Action上下文ActionContext  
    获取request session application
    ActionContext request=ActionContext.getContext();
    request.put("req_key", "req_value");
    
    Map<String,Object> session=request.getSession();
    session.put("ses_key", "ses_value");
    
    Map<String,Object> application=request.getApplication();
    application.put("app_key", "app_value");
   C、方式三:通过接口实现,重写里面的方法,位置struts  API包为:org。apache。struts2。interceptor
    ServletRequestAware
    ServletResponseAware
    SessionAware
    ApplicationAware
    例如:
     //实现下面三个接口,声明对应作用域的对象,生成对应的set方法,当struts2被加载时,会将对应的作用域参数注入到当前声明的对象中
     publicclass TestAction extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
         private Map session;
         private HttpServletRequest request;
         private HttpServletResponse response;   
         //重写接口中的方法,只提供set方法,并不需要get方法,可以自定义生成
         publicvoid setSession(Map att) {
      this.session = att;
         }
        
         publicvoid setServletRequest(HttpServletRequest request) {
      this.request = request;
         }
        
         publicvoid setServletResponse(HttpServletResponse response) {
      this.response = response;
         }
 2、Interceptor:拦截器
  1)、实现struts2的Interceptor类功能,需要继承AbstractInterceptor类,并重写intercept(ActionInvocation invocation)方法
  2)、获得作用域的方法:通过拦截器方法里面的参数ActionInvocation invocation获得(注意:拦截器中任何参数的获得都通过invocation,其他方式都是非法的)
   获取request session application
   ActionContext request=invocation.getInvocationContext().getContext();
   request.put("req_key", "req_value");
   
   Map<String,Object> session=request.getSession();
   session.put("ses_key", "ses_value");
   
   Map<String,Object> application=request.getApplication();
   application.put("app_key", "app_value");
  3)、此处说一下invoke()方法和invokeActionOnly()方法的区别:
   invocation.invoke()方法:请求被响应的过程:action-----result-----interceptor
   invocation.invokeActionOnly()方法:请求被响应的过程:action-----interceptor-----result
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值