java学习笔记(10) —— ActionContext、ServletActionContext、ServletRequestAware用法

核心思想

1、ActionContext

HttpServletRequest getAttribute setAttribute

ActionContext get put

//ActionContext.getContext() 获取入口
ActionContext.getContext().put("key", "value");

 2、ServletRequestAware

package com.test.action;

public class LoginAction extends ActionSupport implements ServletRequestAware
{
    private static final long serialVersionUID = -74906200993380354L;
    private HttpServletRequest request;
   
    
    @SuppressWarnings("unchecked")
    public String execute() throws Exception
    {
        if("james".equals(this.getUsername()) && "james".equals(this.getPassword())){
            Map map = ActionContext.getContext().getSession();
            //ActionContext.getContext() 获取入口
            //ActionContext.getContext().put("james", "get from AcionContext");
            request.setAttribute("chenkai", "from ServletRequestAware");
            map.put("user", "james");
            return "success"; 
        }else {
            this.addFieldError("username", "username or password is wrong");
            return "failer";
        }
    }
    
    /*
     * 实现 ServletRequestAware 接口 方法
     * struts2 自动加载,【ioc 依赖注入的方式】 将与容器相关的request参数set到应用里
     */
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
    
}

 3、ServletResponseAware 与 Cookie 的使用

public class LoginAction extends ActionSupport implements ServletResponseAware
{
    private HttpServletResponse response;
  public String execute() throws Exception
    {
        
            Cookie cookie = new Cookie("name", "james");
            cookie.setMaxAge(100);
            response.addCookie(cookie);
            return SUCCESS; 
    }
}
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
  </head>  
  <body>
    username:${requestScope.username }<br>
    password:${requestScope.password }<br>
    Cookie:${cookie.name }
  </body>
</html>

 4、ServletActionContext

    public String execute() throws Exception
    {
            HttpServletResponse response = ServletActionContext.getResponse();
            Cookie cookie = new Cookie("name", "james");
            cookie.setMaxAge(100);
            response.addCookie(cookie);
            return SUCCESS; 
    }

建议使用顺序   

a) ActionContext 【首选】

    b) ServletActionContext [如果需要使用reponse]

    c) ServletRequestAware [必须实现接口]

posted @ 2016-03-13 13:07  cklovefan  阅读(769)  评论(0编辑  收藏  举报