Struts2 访问 Servlet API

Struts2 访问 Servlet API

在Struts2中,Action 已经与 Servlet API 完全分离,但我们在实现业务逻辑时,经常要访问Servlet 中的对象,如session,application等。
在Struts2 框架中访问 Servlet API 有如下几种方法:

一.通过 ActionContext 类访问
ActionContext(com.opensymphony.xwork.ActionContext)是Action执行时的上下文,上下文可以看作是一个容器(其实我们这里的容器就是一个Map而已),它存放的是Action在执行时需要用到的对象, 一般情况, 我们的ActionContext都是通过:
ActionContext context = (ActionContext) actionContext.get();来获取的
通过ActionContext取得HttpSession方法如下:
Map session =ActionContext.getContext().getSession();
代码列:

    public String execute() {
        if("admin".equals(user.getUsername())&&"123".equals(user.getPassword())){
            return SUCCESS;
        }
    1.第一种
        //节耦  得到是map
        Map<String, Object> requset= (Map<String, Object>) ActionContext.getContext().get("request");
        requset.put("msg", "用户名或密码错误!");
    2.第二种   
        Map<String, Object> session = ActionContext.getContext().getSession();
        session.put("msg", "用户名或密码错误!");
        //得到rquest对象
    3.第三种   
        HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);
        request.setAttribute("msg", "用户名或密码错误!!");
        return LOGIN;
    }

二.通过 ServletActionContext 类直接访问

public String execute() {
        if("admin".equals(user.getUsername())&&"123".equals(user.getPassword())){
            return SUCCESS;
        }
        HttpServletRequest request = ServletActionContext.getRequest();
        request.setAttribute("msg", "用户名或密码错误!!");
        return LOGIN;
    }

三.通过特定的xxxAware接口访问

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

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private User user;
    private HttpServletRequest request;

    public String execute() {
        if("admin".equals(user.getUsername())&&"123".equals(user.getPassword())){
            return SUCCESS;
        }
        request.setAttribute("msg", "用户名或密码错误!!");
        return LOGIN;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }

    @Override
    public void setServletResponse(HttpServletResponse arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void setServletContext(ServletContext arg0) {
        // TODO Auto-generated method stub

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值