访问Servlet API,访问web资源

1.什么是WEB资源
> HttpServletRequest HttpSession ServletContext等原生的Servlet API

2.为什么访问WEB资源
> B/S 的应用的Controller中 必然需要访问web资源 向域对象中读写属性,读写Cookie 获取 realPath ....

3.如何访问 ?

I. 和 Servlet API 解耦的方式: 只能访问有限的 Servlet API 对象, 且只能访问其有限的方法(读取请求参数, 读写域对象的属性, 使 session 失效...).

> 使用 ActionContext

> 实现 XxxAware 接口

> 选用的建议: 若一个 Action 类中有多个 action 方法, 且多个方法都需要使用域对象的 Map 或 parameters, 则建议使用
Aware 接口的方式

> session 对应的 Map 实际上是 SessionMap 类型的! 强转后若调用其 invalidate() 方法, 可以使其 session 失效!

II. 和 Servlet API 耦合的方式: 可以访问更多的 Servlet API 对象, 且可以调用其原生的方法.

> 使用 ServletActionContext

> 实现 ServletXxxAware 接口.

 

 

 

 1     //0.获取ActionContext对象,是Action的上下文对象,可以从中获取        
 2         ActionContext actionContext = ActionContext.getContext();
 3         //1.获取application对应的Map,并向其中添加一个属性
 4         Map<String,Object> applicationMap = actionContext.getApplication();
 5         //设置属性
 6         applicationMap.put("applicationKey","applicationValue");
 7         //获取属性(此属性值从JSP文件中获取)
 8         Object date  = applicationMap.get("date");
 9         System.out.println("date:" + date);
10         //2.session
11         Map<String,Object> sessionMap = actionContext.getSession();
12         
13         sessionMap.put("SessionKey", "SessionValue");
14         //3.request
15         //actionContext中并没有提供getRequest方法来获取request对应的Map
16         //需要手工调用get(),传入request字符串获取        
17         Map<String,Object> requestMap = (Map<String, Object>) actionContext.get("request");
18         requestMap.put("requestKey","requestValue");
19         //4.获取请求参数对应的Map,
20         //键: 请求参数的名字, 值: 请求参数的值对应的字符串数组
21         //注意: 1. getParameters 的返回值为 Map<String, Object>, 而不是 Map<String, String[]>
22         //     2. parameters 这个 Map 只能读, 不能写入数据, 如果写入, 不出错, 但也不起作用!
23         Map<String,Object> parameters = actionContext.getParameters();
24         System.out.println(((String[])parameters.get("name"))[0]);    
25         parameters.put("age", 100);

 

 

 

1.使用ActionContext类

>使用HttpServletRequest

  ActionContext context = ActionContext.getActionContext();

  context.put(key,value);

>使用session

  

posted @ 2015-11-09 01:06  月半夜曲  阅读(75)  评论(0)    收藏  举报