文档章节

jfinal 内置的handler功能

冷冷gg
 冷冷gg
发布于 2017/02/13 11:21
字数 534
阅读 128
收藏 3

jfinal内置了以个handler ,其中RoutesHandler ActionHandler 是框架核心依赖的我们不考虑。主要研究下边的5个


image

UrlSkipHandler

排除满足正则的url,跳过的url会被下一个filter处理

/**
 * Skip the excluded url request from browser.
 * The skiped url will be handled by next Filter after JFinalFilter
 * <p>
 * Example: me.add(new UrlSkipHandler(".+\\.\\w{1,4}", false));
 */
public class UrlSkipHandler extends Handler {
	
	private Pattern skipedUrlPattern;
	
	public UrlSkipHandler(String skipedUrlRegx, boolean isCaseSensitive) {
		if (StrKit.isBlank(skipedUrlRegx)) {
			throw new IllegalArgumentException("The para excludedUrlRegx can not be blank.");
		}
		skipedUrlPattern = isCaseSensitive ? Pattern.compile(skipedUrlRegx) : Pattern.compile(skipedUrlRegx, Pattern.CASE_INSENSITIVE);
	}
	
	public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
		if (skipedUrlPattern.matcher(target).matches()) {
			return ;
		} else {
			next.handle(target, request, response, isHandled);
		}
	}
}

DruidStatViewHandler

Druid内置提供了一个StatViewServlet用于展示Druid的统计信息。 这个StatViewServlet的用途包括:

  • 提供监控信息展示的html页面
  • 提供监控信息的JSON API
    注意:使用StatViewServlet,建议使用druid 0.2.6以上版本。
  1. 传统配置web.xml

StatViewServlet是一个标准的javax.servlet.http.HttpServlet,需要配置在你web应用中的WEB-INF/web.xml中。(密码,白名单等都可以在这里配置)

<servlet>
      <servlet-name>DruidStatView</servlet-name>
      <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>DruidStatView</servlet-name>
      <url-pattern>/druid/*</url-pattern>
  </servlet-mapping>

根据配置中的url-pattern来访问内置监控页面,如果是上面的配置,内置监控页面的首页是/druid/index.html

  1. jfinal提供优雅的方式
 /**
 * 配置处理器
 */
public void configHandler(Handlers me) {
    me.add(new DruidStatViewHandler("/druid",new DruidStatViewAuthImpl()));
}
    
public class DruidStatViewAuthImpl implements IDruidStatViewAuth{
    /**
     * 具体的认证逻辑实现
     * @param request
     * @return
     */
    @Override
    public boolean isPermitted(HttpServletRequest request) {
        return false;
    }
}
    

ContextPathHandler

提供全局的上下文路径

/**
 * 配置处理器
 */
public void configHandler(Handlers me) {
    me.add(new ContextPathHandler("ctx"));
}

那么在页面中就可以这么使用了
<img src="${BASE_PATH}/images/logo.png" />

代码实现很简单
public class ContextPathHandler extends Handler {
	
    private String contextPathName;
	
    public ContextPathHandler() {
	    contextPathName = "CONTEXT_PATH";
    }
	
    public ContextPathHandler(String contextPathName) {
    	if (StrKit.isBlank(contextPathName)) {
    		throw new IllegalArgumentException("contextPathName can not be blank.");
	    }
	    this.contextPathName = contextPathName;
    }
	
    public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
    	request.setAttribute(contextPathName, request.getContextPath());
    	next.handle(target, request, response, isHandled);
    }
}


ServerNameRedirect301Handler

301重定向到新服务器名称

/**
 * 配置处理器
 */
public void configHandler(Handlers me) {
    me.add(new ServerNameRedirect301Handler("http://localhost","http://127.0.0.1"));
}

访问:http://localhost/xxx  重定向到http://127.0.0.1/xxx

FakeStaticHandler

伪静态化配置

 /**
 * 配置处理器
 */
public void configHandler(Handlers me) {
    me.add(new FakeStaticHandler(".html"));
}

请求 localhost/xxx.html 实际对应的路由是 xxx

© 著作权归作者所有

共有 人打赏支持
冷冷gg
粉丝 334
博文 110
码字总数 49926
作品 1
潍坊
UI设计师
OSC上关于Jfinal的提问整理(一)

看见Jfinal很火,就手痒痒了,想学一下,无奈入门较慢,没有找到比较全的文档。于是就经常看讨论区大家的提问与解答。后来就忽然萌生了整理下来的想法。其中的问题如果是@Jfinal 回答的,那我...

木川瓦兹
2013/04/23
0
21
基于JFinal实现的权限管理系统 JFinalUIB

项目用到了众多的开源组件,还有一些是网络分享的学习示例代码片段,感谢他们!!! JFinal高级学习交流QQ群:309647612 代码库地址:http://git.oschina.net/dongcb678/JfinalUIB.git 项目背景...

littleant
2014/06/03
0
35
使用Rythm插件轻松实现JFinal应用的国际化

刚看了@eyelee同学的JFinal 国际化的简单实现的文章,我打算分享一下自己为@紫电清霜的JFinal-BBS示例应用添加Rythm模版引擎和国际化功能展示的经验。 在开始之前,大家可以先通过点击这个视...

罗格林
2013/06/05
0
13
OSC上关于Jfinal的提问整理(二)

1.【问】:Db.tx(new IAtom())事务不起作用? 【jfinal答】:1:如果使用的mysql,确保引擎为 InnoDB 2:这行代码改一下Db.save(c3p0Plugin.getDataSource(), "tbtest", "PKID", record);去掉...

木川瓦兹
2013/04/25
0
2
jfinal-admin 3.3 发布,Bug 修复更新

jfinal-admin 3.3 版本正式发布啦。该版本主要进行了一些 Bug 修复,主要更新内容如下: 1、登录加密算法更新,修复DES秘钥初始化的bug; 2、任务管理模块更新,修复任务调度配置时执行类参数...

IT小香猪
07/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

180.mariadb 主从复制

参考:https://blog.csdn.net/chengxuzaza/article/details/62042920 睡觉睡觉,明天写 1.效果 当主库中数据有变化的时候,从库就自动同步 2. 环境要求 至少两台 linux服务器 (教程:https...

Lucky_Me
1分钟前
0
0
erlng file id3v1 id3v1.1

%% ---%% Excerpted from "Programming Erlang",%% published by The Pragmatic Bookshelf.%% Copyrights apply to this code. It may not be used to create training material, %% ......

xueyuse0012
3分钟前
0
0
RabbitMq的安装

环境Centos6.5 32位 JDK 1.7.8 Jdk的卸载 rpm -qa|grep jdk yum –y remove 上边的安装包 JDK的安装 Rpm –ivh jdk安装包 配置环境变量 export JAVA_BIN=/usr/java/jdk1.7.0_80/bin export J......

DemonsI
7分钟前
0
0
http和https协议

HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,中文含义为“超文本传输协议在安全加密字层”,简单来说就是加密数据传输,通俗的说就是安全连接。 HTTPS安全超文本传输...

寰宇01
13分钟前
0
0
vue内引入语音播报功能

在vue项目中引入语音播报,使用的科大讯飞语音接入, 具体思路为每次接收到语音信息后存入一个数组,然后监听这个数组,开始冲第一个索引播放,并且同时根据vuex getter 来动态删减数量 给a...

originDu
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部