Struts2之访问Servlet的API

一. Struts2访问Servlet的API:
(1)使用完全解耦合的方式.

// 使用Struts2中的一个对象ActionContext对象.
ActionContext actionContext = ActionContext.getContext();
// 接收参数:
Map<String,Object> paramsMap = actionContext.getParameters();
String page=null;
        if(paramsMap.get("page")!=null) {
           page=((String[])paramsMap.get("page"))[0];
        }
......

// 向request中存入数据 
actionContext.put("requestName", "张三");

(2)使用原生的Servlet的API

// 接收参数:
HttpServletRequest req = ServletActionContext.getRequest();
String page=req.getParameter("page");

......

req.setAttribute("requestName", "张三");

比较:上面两种方法都可以获取到前端表单传来的值。第二种方法不做多讲;这里讲第一种;actionContext.getParameters()返回的是一个Map对象,理论上通过遍历key可以得到参数的value,但是测试发现,paramsMap.get(“page”)此种方法返回的是一个String数组。数组起始((String[])paramsMap.get(“page”))[0]才是参数的值。


二. Struts2的拦截器
(1)拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。
在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。
谈到拦截器,还有一个词大家应该知道——拦截器链 (Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。

(2)Struts 2的拦截器实现相对简单。当请求到达Struts 2的ServletDispatcher时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器。
Struts2拦截器是可插拔的,拦截器是AOP的一种实现。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值