文档章节

JFinal整合ckeditor+CKFinder

jsspring
 jsspring
发布于 2016/02/03 14:09
字数 317
阅读 69
收藏 3

1.效果图如下:


src目录下新增ckfinder.properties:

debug=false
XMLConfig=/WEB-INF/ckfinder.xml
添加CKFinderHandler:
package com.jfaker.app.ext;


import java.util.Enumeration;
import java.util.Properties;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ckfinder.connector.ConnectorServlet;
import com.jfinal.handler.Handler;
import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;
 
public class CKFinderHandler extends Handler
{
    private String visitPath = "/styles/ckfinder/core/connector/java/connector";
     
    private ConnectorServlet servlet = new ConnectorServlet();
     
    private Properties properties;
     
    public CKFinderHandler() {}
     
    public CKFinderHandler(String cfgPath) 
    {
    	Prop prop = PropKit.use(cfgPath, "UTF-8");
        this.properties = prop.getProperties();
    }
     
    public CKFinderHandler(String visitPath, String cfgPath)
    {
        this.visitPath = visitPath;
        Prop prop = PropKit.use(cfgPath, "UTF-8");
        this.properties = prop.getProperties();
    }
     
    @Override
    public void handle(String target, final HttpServletRequest request, HttpServletResponse response, boolean[] isHandled)
    {
        if (target.startsWith(visitPath)) {
            isHandled[0] = true;
             
            try {
                servlet.init(new ServletConfig()
                {
                    @Override
                    public String getServletName() {return null; }
                     
                    @Override
                    public ServletContext getServletContext() {return request.getSession().getServletContext(); }
                     
                    @SuppressWarnings("rawtypes")
                    @Override
                    public Enumeration getInitParameterNames() {return null; }
                     
                    @Override
                    public String getInitParameter(String name)
                    {
                        return properties.getProperty(name);
                    }
                });
                servlet.service(request, response);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
        else {
            nextHandler.handle(target, request, response, isHandled);
        }
    }
}
AppConfig中配置handler:
me.add(new CKFinderHandler("ckfinder.properties"));
由于不同用户baseUrl不同,所以需要克制FckeditorUserPathBuilder
package com.jfaker.app.ext;

import javax.servlet.http.HttpServletRequest;

import com.ckfinder.connector.configuration.ConfigurationFactory;
import com.ckfinder.connector.configuration.DefaultPathBuilder;
import com.ckfinder.connector.configuration.IConfiguration;
import com.ckfinder.connector.utils.PathUtils;
import com.jfaker.app.shiro.ShiroUtils;

public class FckeditorUserPathBuilder extends DefaultPathBuilder {
	public String getBaseUrl(HttpServletRequest request) {
		String baseURL;
		try {
			IConfiguration conf = ConfigurationFactory.getInstace().getConfiguration();
			baseURL = conf.getBaseURL();
		} catch (Exception e) {
			baseURL = null;
		}
		if ((baseURL == null) || (baseURL.equals(""))) {
			baseURL = super.getBaseUrl(request);
		}
		baseURL= baseURL+"user/"+ShiroUtils.getUserId()+"/";
		return PathUtils.addSlashToBeginning(PathUtils.addSlashToEnd(baseURL));
	}

	public String getBaseDir(HttpServletRequest request) {
		String baseDir;
		try {
			IConfiguration conf = ConfigurationFactory.getInstace().getConfiguration();
			baseDir = conf.getBaseDir();
		} catch (Exception e) {
			baseDir = null;
		}
		if ((baseDir == null) || (baseDir.equals(""))) {
			return super.getBaseDir(request);
		}
		return baseDir;
	}
}
ckfinder.xml中修改basePathBuilderImpl:
<basePathBuilderImpl>com.jfaker.app.ext.FckeditorUserPathBuilder</basePathBuilderImpl>
结束运行看效果。


© 著作权归作者所有

共有 人打赏支持
jsspring
粉丝 1
博文 21
码字总数 4410
作品 0
苏州
程序员
JFinal整合CKFinder

使用JFinal对之前的系统进行重构,老系统使用了CKEditor+CKFinder编辑器,发现在web.xml中配置ConnectorServlet会被JFinalFilter过滤处理,而且使用JFinal之后也不想在web.xml中增加额外的配...

pandyyan
2013/05/13
0
0
JFinal-Beetl-Shiro(JdbcRealm)-例子

JFinal-Shiro-JDBC-Demo http://git.oschina.net/yinjun622/JFinal-Shiro-JDBC-Demo 简单实现@JFinal与Shiro整合例子 1、工程通过Eclipse直接导入,部署到tomcat中; 2、新建jfinalshiro数据......

leon_rock
2014/02/27
0
12
基于JFinal实现的权限管理系统 JFinalUIB

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

littleant
2014/06/03
0
35
JFinal 整合Quartz

项目中要加入调度和计划任务等功能,所以选择Quartz调度插件,原先都是在S2SH上整合的。现在项目用JFinal框架,不得不说JFinal框架的定制性真好,可以自己根据项目要求进行修改,并且很节省时...

超级大富
2014/03/09
0
20
JFinal极速开发实战教程新鲜出炉~

JFinal极速开发实战教程新鲜出炉~ [持续更新中...] JFinal框架让 IT 工程师发挥更大的潜能,实现更大价值,同时也希望 JFinal 工具力量能帮助正在创业的朋友们提升效率、降低成本从而实现创业...

山东-小木
2015/01/07
0
13

没有更多内容

加载失败,请刷新页面

加载更多

【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
9
0
vm GC 日志 配置及查看

-XX:+PrintGCDetails 打印 gc 日志 -XX:+PrintTenuringDistribution 监控晋升分布 -XX:+PrintGCTimeStamps 包含时间戳 -XX:+printGCDateStamps 包含时间 -Xloggc:<filename> 可以将数据保存为......

Canaan_
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部