文档章节

jfinal 内置的handler功能

冷冷gg
 冷冷gg
发布于 2017/02/13 11:21
字数 534
阅读 135
收藏 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
粉丝 386
博文 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
基于 Spring Cloud 的微服务基础开发平台 - Aooms

Aooms —— 极速微服务开发,像JFinal一样简单 一、Aooms 基于SpringCloud的微服务基础开发平台,旨在降低SpringCloud的复杂度,像使用JFinal一样简单(本人是JFinal用户,从1.9版本开始现在...

风象南
02/05
0
16
使用Rythm插件轻松实现JFinal应用的国际化

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

罗格林
2013/06/05
0
13
Aooms 极速微服务开发,像 JFinal 一样简单 1.0.0-alpha

Aooms 极速微服务开发,像JFinal一样简单 一、Aooms 一款基于SpringCloud的微服务基础开发平台,旨在降低SpringCloud的复杂度,像使用JFinal一样简单(本人是JFinal用户,从1.9版本开始现在也...

风象南
09/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android适配相关

Android 6.0、7.0、8.0、9.0适配 关于android适配的好文章 Android权限申请库 AndPermission 国产,有中文文档,链式调用,用起来简单 easypermissions 谷歌官方出品 PermissionsDispatcher ...

Skqing
18分钟前
1
0
Google推出了以隐私和安全为中心的变更

作为Google Play开发者政策更新的一部分,Google推出了以隐私和安全为中心的变更。 在旨在保护敏感数据的行动中,有针对请求短信和呼叫记录权限的应用程序的新规则。 即日起,只有配置为默认...

问题终结者
21分钟前
0
0
Kotlin个人理解入门篇

了解kotlin并开始使用其做开发,是从最近之前做的项目开始之初,用的是kotlin,发现kotlin是一个特简洁,很多语法糖提供使用,可以提高开发效率的语言。谷歌在2017年谷歌大会正式宣布支持and...

DannyCoder
26分钟前
0
0
springboot+rabbitmq整合

1.安装好rabbitmq 2.新建一个springBoot项目:rabbitmq_demo 3.添加pom依赖: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifact......

狼王黄师傅
33分钟前
0
0
使用JDK自带的jmap和jhat监控处于运行状态的Java进程

对于处于运行状态中的Java进程,JDK自带了很多工具,允许Java开发人员监控运行进程中的各种状态,比如该进程内部创建了多少个对象实例,消耗了多少内存,等等。 本文基于JDK1.8而写成。 我下...

JerryWang_SAP
43分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部