核心思想

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 [必须实现接口]

java学习笔记(10) —— ActionContext、ServletActionContext、ServletRequestAware用法的更多相关文章

  1. Java学习笔记---继承和super的用法

    自从换了个视频教学,感觉比原来那个好多了,就是学校网速太渣,好多视频看一会卡半天,只能先看看已经下载的了. 不过也好,虽然不能从开始开始重新开,但是已经看过一次,在看一次也是好的,就当巩固学习了. 继 ...

  2. Java 学习笔记(10)——容器

    之前学习了java中从语法到常用类的部分.在编程中有这样一类需求,就是要保存批量的相同数据类型.针对这种需求一般都是使用容器来存储.之前说过Java中的数组,但是数组不能改变长度.Java中提供了另一 ...

  3. Java学习笔记10

    31.编写当年龄age大于13且小于18时结果为true的布尔表达式age > 13 && age < 18 32.编写当体重weight大于50或身高大于160时结果为t ...

  4. Java学习笔记10(面向对象三:接口)

    接口: 暂时可以理解为是一种特殊的抽象类 接口是功能的集合,可以看作是一种数据类型,是比抽象类更抽象的"类" 接口只描述所应该具备的方法,并没有具体实现,具体实现由接口的实现类(相 ...

  5. Java学习笔记-10.io流

    1.输入流,只能从中读取数据,而不能向其写出数据.输出流,只能想起写入字节数据,而不能从中读取. 2.InputStream的类型有: ByteArrayInputStream 包含一个内存缓冲区,字 ...

  6. Java学习笔记10(面对对象:构造方法)

    在开发中经常需要在创建初始化对象时候明确对象的属性值, 比如Person对象创建的时候就给Person的属性name,age赋值, 这里就要用到构造方法: 构造方法是类的一种特殊方法,它的特殊性体现在 ...

  7. Java学习笔记31(IO:Properties类)

    Properties类,表示一个持久的j集,可以存在流中,或者从流中加载 是Hashtable的子类 map集合的方法都能用 用途之一:在开发项目中,我们最后交给客户的是一个编译过的class文件,客 ...

  8. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  9. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

随机推荐

  1. gnu cc扩展和ABI

    gnc cc扩展标准c的语法,非常强大!!!详情请见: http://uw714doc.sco.com/cgi-bin/info2html?%28gcc.info%29C%2520Extensions ...

  2. CLOUDSTACK我也来啦

    最近,专业客户需要私有云和自助管理. 那我就倒一个CLOUDSTACK出来吧. WEB UI已搞定. 难点在于高级网络和主存储.再接再力. ... 因为要反复重装,在服务端有个快速重建步骤: serv ...

  3. C51指针小结

    一. 指针变量的定义 指针变量定义与一般变量的定义类似,其形式如下: 数据类型 [存储器类型1] * [存储器类型2] 标识符: [存储器类型1] 表示被定义为基于存储器的指针.无此选项时,被定义为一 ...

  4. Android UI开发第三十一篇——Android的Holo Theme

    好长时间没写Android UI方面的文章了,今天就闲扯一下Android的Holo主题.一直做android开发的可能都知道,Android 系统的UI有过两次大的变化,一次是android 3.0 ...

  5. sql server 修改字段大小

    alter table AAA ALTER COLUMN BBBvarchar(100);  这种语法只适合把字段往大了设置,  如果更新的字段大小比实际的要小时,并且数据库已存在比要更新的数据大时, ...

  6. cf590A Median Smoothing

    A. Median Smoothing time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  7. chrome播放语音时,在chrome 控制台中报 DOMException: The play() request was interrupted by a call to pause(). 的问题.

    $(document).ready(function () { var audioElement = $( '<audio>' + ' <source src="" ...

  8. jenkins服务器安装

    http://www.360doc.com/content/13/0412/09/10504424_277718090.shtml

  9. Android 物理按键

    import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view. ...

  10. SQL报错error:索引中丢失IN或OUT參数

    简单记录下: 今天mybatis中遇到一个错误: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallba ...