package cn.jfinalbbs.common;
import cn.jfinalbbs.api.ReplyApi;
import cn.jfinalbbs.api.SectionApi;
import cn.jfinalbbs.api.TopicApi;
import cn.jfinalbbs.collect.Collect;
import cn.jfinalbbs.collect.CollectClientController;
import cn.jfinalbbs.collect.CollectController;
import cn.jfinalbbs.handler.HtmlHandler;
import cn.jfinalbbs.index.IndexAdminController;
import cn.jfinalbbs.index.IndexClientController;
import cn.jfinalbbs.index.IndexController;
import cn.jfinalbbs.interceptor.CommonInterceptor;
import cn.jfinalbbs.label.Label;
import cn.jfinalbbs.label.LabelAdminController;
import cn.jfinalbbs.label.LabelController;
import cn.jfinalbbs.label.LabelTopicId;
import cn.jfinalbbs.link.Link;
import cn.jfinalbbs.link.LinkAdminController;
import cn.jfinalbbs.mission.Mission;
import cn.jfinalbbs.mission.MissionAdminController;
import cn.jfinalbbs.mission.MissionClientController;
import cn.jfinalbbs.mission.MissionController;
import cn.jfinalbbs.notification.Notification;
import cn.jfinalbbs.notification.NotificationClientController;
import cn.jfinalbbs.notification.NotificationController;
import cn.jfinalbbs.reply.Reply;
import cn.jfinalbbs.reply.ReplyAdminController;
import cn.jfinalbbs.reply.ReplyClientController;
import cn.jfinalbbs.reply.ReplyController;
import cn.jfinalbbs.section.Section;
import cn.jfinalbbs.section.SectionAdminController;
import cn.jfinalbbs.section.SectionClientController;
import cn.jfinalbbs.topic.Topic;
import cn.jfinalbbs.topic.TopicAdminController;
import cn.jfinalbbs.topic.TopicClientController;
import cn.jfinalbbs.topic.TopicController;
import cn.jfinalbbs.user.*;
import cn.jfinalbbs.valicode.ValiCode;
import com.jfinal.config.Constants;
import com.jfinal.config.*;
import com.jfinal.core.JFinal;
import com.jfinal.ext.interceptor.SessionInViewInterceptor;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.plugin.druid.DruidStatViewHandler;
import com.jfinal.plugin.ehcache.EhCachePlugin;
/**
* API引导式配置
*/
public class JFinalBBSConfig extends JFinalConfig {
/**
* 配置常量
*/
public void configConstant(Constants me) {
// 加载少量必要配置,随后可用getProperty(...)获取值
loadPropertyFile("config.properties");
me.setDevMode(getPropertyToBoolean("devMode", false));
me.setUploadedFileSaveDirectory(cn.jfinalbbs.common.Constants.UPLOAD_DIR);
me.setMaxPostSize(2048000);
}
/**
* 配置路由
*/
public void configRoute(Routes me) {
me.add("/", IndexController.class, "ftl"); // 第三个参数为该Controller的视图存放路径
me.add("/topic", TopicController.class, "ftl");
me.add("/user", UserController.class, "ftl");
me.add("/mission", MissionController.class, "ftl");
me.add("/reply", ReplyController.class, "ftl");
me.add("/collect", CollectController.class, "ftl");
me.add("/notification", NotificationController.class, "ftl");
me.add("/label", LabelController.class, "ftl");
//添加后台路由
adminRoute(me);
//添加客户端路由
clientRoute(me);
}
//后台路由配置
public void adminRoute(Routes me) {
me.add("/admin", IndexAdminController.class, "ftl/admin");
me.add("/admin/topic", TopicAdminController.class, "ftl/admin/topic");
me.add("/admin/reply", ReplyAdminController.class, "ftl/admin/reply");
me.add("/admin/user", UserAdminController.class, "ftl/admin/user");
me.add("/admin/section", SectionAdminController.class, "ftl/admin/section");
me.add("/admin/link", LinkAdminController.class, "ftl/admin/link");
me.add("/admin/mission", MissionAdminController.class, "ftl/admin/mission");
me.add("/admin/label", LabelAdminController.class, "ftl/admin/label");
}
public void clientRoute(Routes me) {
me.add("/api/index", IndexClientController.class);
// me.add("/api/topic", TopicClientController.class);
// me.add("/api/reply", ReplyClientController.class);
me.add("/api/user", UserClientController.class);
me.add("/api/notification", NotificationClientController.class);
// me.add("/api/section", SectionClientController.class);
me.add("/api/collect", CollectClientController.class);
me.add("/api/mission", MissionClientController.class);
me.add("/api/section", SectionApi.class);
me.add("/api/topic", TopicApi.class);
me.add("/api/reply", ReplyApi.class);
}
/**
* 配置插件
*/
public void configPlugin(Plugins me) {
// 配置C3p0数据库连接池插件
// C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password").trim());
DruidPlugin druidPlugin = new DruidPlugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password").trim());
druidPlugin.setFilters("stat,wall");
// me.add(c3p0Plugin);
me.add(druidPlugin);
me.add(new EhCachePlugin());
// 配置ActiveRecord插件
// ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
arp.setShowSql(getPropertyToBoolean("showSql", false));
me.add(arp);
arp.addMapping("topic", Topic.class); // 映射blog 表到 Blog模型
arp.addMapping("reply", Reply.class);
arp.addMapping("user", User.class);
arp.addMapping("mission", Mission.class);
arp.addMapping("collect", Collect.class);
arp.addMapping("notification", Notification.class);
arp.addMapping("admin_user", AdminUser.class);
arp.addMapping("section", Section.class);
arp.addMapping("link", Link.class);
arp.addMapping("valicode", ValiCode.class);
arp.addMapping("label", Label.class);
arp.addMapping("label_topic_id", LabelTopicId.class);
}
/**
* 配置全局拦截器
*/
public void configInterceptor(Interceptors me) {
me.add(new SessionInViewInterceptor());
me.add(new CommonInterceptor());
}
/**
* 配置处理器
*/
public void configHandler(Handlers me) {
//配置druid的监听,可以在浏览器里输入http://localhost:8080/druid 查看druid监听的数据
me.add(new DruidStatViewHandler("/druid"));
me.add(new HtmlHandler());
}
/**
* 建议使用 JFinal 手册推荐的方式启动项目
* 运行此 main 方法可以启动项目,此main方法可以放置在任意的Class类定义中,不一定要放于此
*/
public static void main(String[] args) {
JFinal.start("src/main/webapp", 8080, "/", 5);
}
}