Struts2 Web 资源获取

  • 我们需要获取 Web 资源 request、response、session、application 对象的时候,可以通过 Struts 2 的拦截器或静态内置对象获取、并使用对象完成业务

  • 推荐使用最后一种方法,即使用Struts2内置静态对象ServletActionContext


1. 拦截器获取Web资源模式

1.1 使用Struts2 Aware 拦截器

//实现以下三个接口可获取request、response和application对象,session对象通过request.getSession()获取。
//org.apache.struts2.interceptor.ServletRequestAware
//org.apache.struts2.interceptor.ServletResponseAware
//org.apache.struts2.interceptor.ServletContextAware

public class FirstAction extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware {

    private ServletRequest request;
    private ServletResponse response;
    private ServletContext application;

    @Override
    public String execute() throws Exception {
        String username = request.getParameter("username");
        System.out.println(username);
        return "success";
    }

    public void setServletRequest(HttpServletRequest arg0) {
        request = arg0;

    }

    public void setServletResponse(HttpServletResponse arg0) {
        response = arg0;
    }

    public void setServletContext(ServletContext arg0) {
        application = arg0;
    }


}

1.2 使用Strust2 RequestAware拦截器

//实现该接口即可获取全部web资源
//org.apache.struts2.interceptor.RequestAware

public class SecondAction extends ActionSupport implements RequestAware{

    private ServletRequest request;
    private ServletResponse response;
    private ServletContext application;

    @Override
    public String execute() throws Exception {
        String username = request.getParameter("username");
        System.out.println("第二个action    "+username);
        return "success";
    }

    public void setRequest(Map<String, Object> arg0) {
        request = (ServletRequest)arg0.get(StrutsStatics.HTTP_REQUEST);
        response = (ServletResponse)arg0.get(StrutsStatics.HTTP_RESPONSE);
        application= (ServletContext)arg0.get(StrutsStatics.SERVLET_CONTEXT);
    }

}

2. 静态对象获取Web资源模式

2.1 使用Struts2内置静态对象ActionContext

public class ThirdAction extends ActionSupport {
    @Override
    public String execute() throws Exception {

        ActionContext ac = ActionContext.getContext();

        ServletRequest request = (ServletRequest)ac.get(ServletActionContext.HTTP_REQUEST);
        ServletResponse response = (ServletResponse)ac.get(ServletActionContext.HTTP_RESPONSE);
        ServletContext application = (ServletContext)ac.get(ServletActionContext.SERVLET_CONTEXT);

        return "success";
    }
}

2.2 使用Struts2内置静态对象ServletActionContext

public class FourthAction extends ActionSupport {

    @Override
    public String execute() throws Exception {

        ServletRequest request = ServletActionContext.getRequest();
        ServletResponse response = ServletActionContext.getResponse();
        ServletContext application = ServletActionContext.getServletContext();

        return "success";
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值