访问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

浙公网安备 33010602011771号