Struts2-Action中获取ServletAPI

版权声明: https://blog.csdn.net/qq_34866380/article/details/79732815

struts2HttpServletRequestHttpSessionServletContext进行了封装,
构造了三个Map对象来替代这三个对象。在action中获取这三个对象的方法有
三种。
1、通过ActionContext获取

        ActionContext ac = ActionContext.getContext();
        Map<String,Object> application = ac.getApplication();
        Map<String, Object> session = ac.getSession();

        ac.put("req", "req");
        application.put("application", "application");
        session.put("session", "session");

2、通过ServletActionContext获取

        HttpServletRequest request = ServletActionContext.getRequest();
        request.setAttribute("req", "req");
        request.getSession().setAttribute("session", "session");
        request.getServletContext().setAttribute("application", "application");

3、通过实现SessionAware,ApplicationAware,RequestAware接口,在实现方法内赋值获取

public class testAction  implements RequestAware,SessionAware,ApplicationAware{

    private Map<String, Object> request;
    private Map<String, Object> session;
    private Map<String, Object> application;

    public String execute(){
        System.out.println("struts");

        request.put("req", "request");
        application.put("application", "application");
        session.put("session", "session");
        return "success";
    }
    @Override
    public void setApplication(Map<String, Object> application) {
                this.application = application;
    }
    @Override
    public void setSession(Map<String, Object> session) {
            this.session = session;
    }
    @Override
    public void setRequest(Map<String, Object> request) {
                this.request = request;
    }
}

在action后的跳转页面检测值

request = ${requestScope.req}<br>
session = ${sessionScope.session}<br>
application = ${applicationScope.application}<br>

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_34866380/article/details/79732815
今日推荐