码迷,mamicode.com
首页 > Windows程序 > 详细

struts2中耦合访问servlet- API

时间:2015-02-08 11:39:02      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:struts2中耦合访问servlet-   耦合访问servlet- api   struts2中耦合servlet- a   

struts2中耦合访问servlet- API有三种,推荐使用第二种。当然,尽量用解耦合的方式访问,解耦合方式访问内容在上一篇文章中有解释,需要者请查看。

方法一:.[一般推荐使用](只能获得request,而response则得不到)
Struts2提供了一个ActionContext类,Struts2中的Action可以通过它进行访问。
其方法有:get(),getApplication(),getContext(),getParameters(),getSession(),setApplication(),setSession()



public class LoginAction implements Action
{
    private String username;
    private String password;
    public String getPassword()
    {
        return password;
    }
    public void setPassword(String password)
    {
        this.password = password;
    }
    public String getUsername()
    {
        return username;
    }
    public void setUsername(String username)
    {
        this.username = username;
    }
    public String execute() throws Exception
    {
        //获取静态方法,获取系统的ActionContext实例
            ActionContext ctx = ActionContext.getContext();
        //获取servletContext里的counter属性
        Integer counter = (Integer)ctx.getApplication().get("counter");
        if (counter == null)
        {
            counter = 1;
        }
        else
        {
            counter = counter + 1;
        }
        //将增加1后的counter值设置成counter属性
        ctx.getApplication().put("counter" , counter);
        ctx.getSession().put("user" , getUsername());
        if (getUsername().equals("scott")&& getPassword().equals("tiger") )
        {
        //直接设置HttpServletRequest属性
            ctx.put("tip" , "服务器提示:您已经成功的登陆");
                    return SUCCESS;
        }else{
        //直接设置HttpServletRequest属性
            ctx.put("tip" , "服务器提示:登陆失败");
                 return ERROR;
        }
    }
}

方法二:强烈推荐使用

Struts2还提供了一个ServletActionContext,其静态方法有:getPageContext(),getRequest(),getResponse(),getServletContext()

HttpServletRequest request = ServletActionContext.getRequest(); 
HttpServletResponse response = ServletActionContext.getResponse(); 
request.getSession().setAttribute("username","admin"); 
request.setAttribute("password", "1234");

方法三:[不推荐](麻烦,与servlet API 耦合大).

虽然Struts2提供了ActionContext来访问Servlet API,但这种访问毕竟不能直接获得Servlet API,为了在Action中直接访问Servlet API,Struts2还提供了一下接口:ServletContextAware,ServletRequestAware,ServletResponseAware
下面以ServletResponseAware为例。

//实现ServletResponseAware
public class LoginAction implements Action , ServletResponseAware
{
//需要访问的HttpServletResponse对象
    private HttpServletResponse response;
    private String username;
    private String password;
    public String getPassword(){
        return password;
    }
    public void setPassword(String password){
        this.password = password;
    }
    public String getUsername(){
        return username;
    }
    public void setUsername(String username){
        this.username = username;
    }
//实现ServletResponseAware接口必须实现的方法
    public void setServletResponse(HttpServletResponse response) {
    this.response = response;
  }
    public String execute() throws Exception{
        Cookie c = new Cookie("user" , getUsername());
        c.setMaxAge(60 * 60);
        response.addCookie(c);
        return SUCCESS;
    }
}

 

struts2中耦合访问servlet- API

标签:struts2中耦合访问servlet-   耦合访问servlet- api   struts2中耦合servlet- a   

原文地址:http://blog.csdn.net/han_ying_ying/article/details/43635355

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!