nutz如何处理ajax请求,请求范围的模块

为什么需要请求范围的模块(废弃,不建议使用!)

无论 Struts2 还是 Spring,都提供了一种控制器: 每次请求,创建实例,使用后即抛弃。

这样的控制器的好处就是可以放心的吧 request 和 response 对象放心的存成它的私有

属性,反正使用一次后就丢掉了。

在 Nutz.Mvc,所谓控制器,实际上就是 Module,默认的,所有的模块都是整个应用程序唯一的,

除非你在 Ioc 配置文件里另有说明。

那么 Nutz 可以做到每次请求即抛弃的控制器(Module)吗? 答案是肯定的,稍微有点

麻烦,但是绝对不会繁琐的让你头疼,你需要自己动手做点事情,如果你对编写 JSP/Servlet

应用程序有点基本的支持,这点事情对你不会构成负担。

怎样做?

我们这里给你举一个简单的例子,假设你有一个模块,通过 Nutz.Ioc 来配置:

你的模块代码

@InjectName("myModule")

public class MyModule{

private HttpServletRequest request;

@At("/abc")

public String tryIt(){

return request.getParameter("abc");

}

}

修改 Ioc 配置文件

...

myModule : {

type : 'com.you.app.MyModule',

scope : 'request',

fields : {

request : {refer: '$request'}

}

}

...

请注意 scope : 'request' 以及 fields 里 request 字段的属性 {refer: '$request'}

scope 指明了这个对象存在的上下文环境,如果你不指明,默认是 'app'

更多关于 scope,请参看 对象生命范围】

关键就是这个 {refer: '$request'},很抱歉,你得自己设置它的值。怎样设置呢?

通过 web.xml 的 HttpFilter

添加 HttpFilter

注: 如果你使用的是 Nutz.1.b.37 以及之后的版本,不需要做这个操作,

因为每次请求,它都会自动增加 下面的属性,而之前的版本则不会。

增加一个 HttpFilter

public class MyFilter implements Filter {

public void destroy() {}

public void init(FilterConfig arg0) throws ServletException {}

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)

throws IOException, ServletException {

req.setAttribute("$request", req);

chain.doFilter(req, resp);

}

}

将它配置在 web.xml 里,具体怎么配置我想就不用我废话了吧

最后

这样,就可以做到 Request 级别的 Module 了,即,每次请求,都会重新创建你的 Module 实例

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值