JFinal学习--04Handler
来源:互联网 发布:淘宝助理csv文件制作 编辑:程序博客网 时间:2024/05/18 14:27
JFinal中,所有请求统一通过JFinalFilter这个过滤器处理,当然我们也可以写自己的过滤器,但是必须放在 JFinalFilter之前,否则,有可能不会执行。这是因为,在JFinalFilter中,会判断 Handler是否执行完,执行完的话,会直接跳出过滤器,而不执行之后的过滤器。代码如下:
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)req; HttpServletResponse response = (HttpServletResponse)res; request.setCharacterEncoding(encoding); String target = request.getRequestURI(); if (contextPathLength != 0) target = target.substring(contextPathLength); boolean[] isHandled = {false}; try { handler.handle(target, request, response, isHandled); } catch (Exception e) { if (log.isErrorEnabled()) { String qs = request.getQueryString(); log.error(qs == null ? target : target + "?" + qs, e); } } if (isHandled[0] == false) chain.doFilter(request, response); }
其实JFinal中没有必要定义过滤器,可以使用JFinal中的Handler。
JFinal中的Handler使用了责任链模式,一个handler持有下一个handler,形成一个链条,链条的最后一个则是ActionHandler,用来处理 AOP、Action方法执行以及页面生成。
Handler 是一个抽象类,它包含一个属性 next(持有的下一个Handler),以及一个抽象方法handle, 我们自定义Handler可以通过实现这个方法,来做一些个性化处理,比如访问权限。
在过滤器中,我们可以通过
next.handle(target, request, response, isHandled);
来实现类似过滤器中
chain.doFilter(request, response);
的效果。
0 0
- JFinal学习--04Handler
- jfinal学习
- jFinal学习
- JFinal学习
- JFinal的Interceptor和Handler
- JFinal学习笔记
- jfinal学习笔记一
- jfinal学习笔记一
- JFinal学习笔记一
- JFinal学习笔记二
- Jfinal学习笔记
- JFinal框架学习debug
- JFinal学习笔记
- Jfinal学习笔记一
- jfinal学习1
- jfinal 学习笔记
- JFinal学习--01日志
- JFinal学习--02Constants
- Context.getExternalFilesDir()和Context.getExternalCacheDir()方法
- C++PRIMER 学习笔记
- 关于makefile
- GDI+双缓冲
- Android实现读取相机(相册)图片并进行剪裁
- JFinal学习--04Handler
- css3之渐变
- Qt 解析网络数据出现ssl错误
- Linux 安装 mysql
- iOS UITableCell复用
- 关于mysql使用mysqlbinlog恢复被删除的数据的问题
- gulp详细入门教程
- Extreme Learning Machine的Java源码配置
- 修改innerHTML属性的问题