struts2 之 ServletAPI

1. 在struts2中有两种方式使用SercletAPI,一种解耦方式,一种耦合方式。

2. 解耦方式就是使用ActionContext 来实现,是完全解耦 servletAPI。 ActionContext可以在任何地方使用(action,service,dao).

实例如下:

public String login(){
        System.out.println("用户名:"+username+"\t密码:"+password);
        if("siggy".equals(username)&&"1111".equals(password)){
            //通过ActionContext获取session
            Map<String,Object> session = ActionContext.getContext().getSession();
            session.put("currentUser", "siggy");
            //获取全局域
            ActionContext.getContext().getApplication();
            //获取请求域中的数据
            ActionContext.getContext().get("request");
            return Action.SUCCESS;
        }
        return "login";
    }

3. 通过耦合的方式来使用ServletAPI.耦合方式既SercletAPI本身的对象。

  (a) .通过ActionContext来实现耦合。

    实例如下:

//登录处理方法
    public String login(){
        System.out.println("用户名:"+username+"\t密码:"+password);
        if("siggy".equals(username)&&"1111".equals(password)){
            //通过ActionContext获取HttpServletRequest对象
            HttpServletRequest req = (HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);
            req.getSession().setAttribute("currentUser", "siggy");
            return Action.SUCCESS;
        }
        return "login";
    }

  (b) 通过ServletActionContext 来获取servletAPI:

    实例如下:

public String login(){
        System.out.println("用户名:"+username+"\t密码:"+password);
        if("siggy".equals(username)&&"1111".equals(password)){
            //通过ServletActionContext获取HttpServletRequest对象
            HttpServletRequest req = ServletActionContext.getRequest();
            req.getSession().setAttribute("currentUser", "siggy");
            return Action.SUCCESS;
        }
        return "login";
    }

  (c)通过实现SerletRuestAware接口来获取HttpServletRequest对象

    实例如下:

public class User3Action implements ServletRequestAware{
    private String username;
    private String password;
    
    private HttpServletRequest req;
    //登录处理方法
    public String login(){
        System.out.println("用户名:"+username+"\t密码:"+password);
        if("siggy".equals(username)&&"1111".equals(password)){
            req.getSession().setAttribute("currentUser", "siggy");
            return Action.SUCCESS;
        }
        return "login";
    }
    public void setServletRequest(HttpServletRequest request) {
        req = request;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

 

posted on 2017-04-14 17:32  forever_2h  阅读(147)  评论(0编辑  收藏  举报

导航