关于jfinal处理请求的流程问题? 400 报错
@JFinal 你好,想跟你请教几个问题:
1,jfinal处理流程中是否在jfianlfilter.dofilter()中就把请求通过handler处理了 如下
boolean[] isHandled = {false}; try { handler.handle(target, request, response, isHandled); }2,如果是这样的话那FilterChain还有什么用途
if (isHandled[0] == false) chain.doFilter(request, response);3,请求执行完成之后为什么ApplicationFilterChain这个责任链还会继续 明明isHandled[0]已经是ture了通过调试发现chain.doFilter也没有执行 可程序还是往下走了
1:JFinal顶层是一个Handler链条,是责任链模式的一个变种。Handler会拦截到所有请求,包括静态资源请求,如xxx.cs、yyy.js请求
2:通过JFinalConfig.configHandler(Handlersme)的me.add(newXxxHandler())可以配置自义Handler
3:自定义Handler可以自行判断决定是否应该处理当前请求。此外Handler如果不去调用nextHandler.handle(...),则本次请求处理到此为止,不会向下传递。最后Handler中可以设置isHandle[0]的值,如果设置为true,则JFinalFilter中不会将此请求传递给下一个Filter(在web.xml中配置的Filter)
4:Handler链条的末端是ActionHandler,这是专门处理action动态请求的地方,如果当前请求被认定为action动态请求,则isHandle[0]会被立即置为1,即JFinal接管所有action动态请求,JFinalFilter不必传递给下个Filter
5:isHandle[0]这个值主要用来告诉JFinalFilter是否应该将请求传递给下一个Filter,也可以用于在各个Handler之间利用该信息,做些符合需求的处理,例如某两个Handler约定,前一个Handler如果置isHandle[0]为true了,则后一个Handler就不必处理该请求了
建议自建一个Handler调试一下,试着改变isHandle[0]的值,看程序执行流程
######谢谢解答...######1:JFinal顶层是一个Handler链条,是责任链模式的一个变种。Handler会拦截到所有请求,包括静态资源请求,如xxx.cs、yyy.js请求
2:通过JFinalConfig.configHandler(Handlersme)的me.add(newXxxHandler())可以配置自义Handler
3:自定义Handler可以自行判断决定是否应该处理当前请求。此外Handler如果不去调用nextHandler.handle(...),则本次请求处理到此为止,不会向下传递。最后Handler中可以设置isHandle[0]的值,如果设置为true,则JFinalFilter中不会将此请求传递给下一个Filter(在web.xml中配置的Filter)
4:Handler链条的末端是ActionHandler,这是专门处理action动态请求的地方,如果当前请求被认定为action动态请求,则isHandle[0]会被立即置为1,即JFinal接管所有action动态请求,JFinalFilter不必传递给下个Filter
5:isHandle[0]这个值主要用来告诉JFinalFilter是否应该将请求传递给下一个Filter,也可以用于在各个Handler之间利用该信息,做些符合需求的处理,例如某两个Handler约定,前一个Handler如果置isHandle[0]为true了,则后一个Handler就不必处理该请求了
建议自建一个Handler调试一下,试着改变isHandle[0]的值,看程序执行流程
借宝地问下:如果用了Nginx、Tengine等,.css.js.html等静态文件就不需要jfinal处理了。。jfinal里该怎么配置呢?通过配置web.xml ,容器将请求全部转给jfinal ,jfinal顶层直接用indexof(".") ,判断链接里有没有点,有点就交给容器处理。没有就继续向下执行。虽说复杂了点,但是性能损失可以忽略不计。
前段nginx如果拦截了带点的静态请求,nginx就直接读硬盘发文件了。后端经都不会经过。
######因为springmvc有类似的设置版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。