package com.dsideal.Base; import cn.hutool.core.io.FileUtil; import com.dsideal.Base.Base.Controller.BaseController; import com.dsideal.Base.Classes.Controller.ClassController; import com.dsideal.Base.Dm.Controller.DmController; import com.dsideal.Base.Global.Controller.GlobalController; import com.dsideal.Base.Handler.XssHandler; import com.dsideal.Base.Index.Controller.IndexController; import com.dsideal.Base.Interceptor.*; import com.dsideal.Base.LoginPerson.Controller.LoginPersonController; import com.dsideal.Base.LoginPerson.Controller.LoginPersonInternalController; import com.dsideal.Base.Menu.Controller.MenuController; import com.dsideal.Base.MetaData.Controller.MetaDataController; import com.dsideal.Base.Organization.Controller.OrganizationController; import com.dsideal.Base.Student.Controller.StudentController; import com.dsideal.Base.StudentYd.Controller.StudentYdController; import com.dsideal.Base.Teacher.Controller.TeacherController; import com.dsideal.Base.TeacherYd.Controller.TeacherYdController; import com.dsideal.Base.Util.LogBackLogFactory; import com.dsideal.Base.Util.PkUtil; import com.dsideal.Config.PropKit; import com.jfinal.config.*; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.dialect.MysqlDialect; import com.jfinal.plugin.druid.DruidPlugin; import com.jfinal.plugin.redis.RedisPlugin; import com.jfinal.server.undertow.UndertowServer; import com.jfinal.template.Engine; import lombok.SneakyThrows; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.util.Objects; public class BaseApplication extends JFinalConfig { private static final Logger logger = LoggerFactory.getLogger(BaseApplication.class); public static void main(String[] args) { UndertowServer.create(BaseApplication.class, "undertow.properties").start(); } /** * 配置常量 */ @Override public void configConstant(Constants me) { me.setLogFactory(new LogBackLogFactory()); } /** * 配置路由 */ @Override public void configRoute(Routes me) { //默认页面 me.add("/", IndexController.class); //登录表 me.add("/loginPerson", LoginPersonController.class); //发布内部登录接口 me.add("/loginPerson/internal", LoginPersonInternalController.class); //全局变量 me.add("/global", GlobalController.class); //数据字典 me.add("/dm", DmController.class); //基础数据 me.add("/base", BaseController.class); //组织机构 me.add("/organization", OrganizationController.class); //班级 me.add("/class", ClassController.class); //教师 me.add("/teacher", TeacherController.class); //教师异动 me.add("/teacherYd", TeacherYdController.class); //学生 me.add("/student", StudentController.class); //学生异动 me.add("/studentYd", StudentYdController.class); //菜单管理 me.add("/menu", MenuController.class); //元数据采集 me.add("/metadata", MetaDataController.class); } @Override public void configEngine(Engine engine) { } /** * 配置插件 */ @Override public void configPlugin(Plugins me) { DruidPlugin druid = new DruidPlugin(PropKit.get("mysql.jdbcUrl"), PropKit.get("mysql.user"), PropKit.get("mysql.password"), PropKit.get("mysql.driverClassName")); me.add(druid); ActiveRecordPlugin arp = new ActiveRecordPlugin(druid); arp.setDialect(new MysqlDialect()); String basePath = Objects.requireNonNull(BaseApplication.class.getClassLoader().getResource(".")).getPath(); File sqlDir = new File(basePath + "/Sql"); for (File sqlFile : Objects.requireNonNull(sqlDir.listFiles())) { if (sqlFile.getName().indexOf(".sql") > 0) { arp.addSqlTemplate("/Sql/" + sqlFile.getName()); } } me.add(arp); //加载Redis插件 RedisPlugin redis = new RedisPlugin("Redis", PropKit.get("redis.ip"), PropKit.getInt("redis.port"), 10000); me.add(redis); } /** * 配置全局拦截器 */ @Override public void configInterceptor(Interceptors me) { //注册参数数字检查器 me.add(new IsNumbericInterceptor()); //注册非空拦截器 me.add(new EmptyInterceptor()); //注册Layui的分页检查器 me.add(new LayUiPageInfoInterceptor()); //注册Ids检查是不是数字的检查器 me.add(new CheckIdsInterceptor()); //注册一个GUID号的检查器 me.add(new IsGuidInterceptor()); //检查是不是系统管理员 me.add(new IsSysAdminInterceptor()); //注册一个检查身份证号的拦截 me.add(new VerifyIDCardInterceptor()); //检查手机号是否正确和是否存在 me.add(new VerifyTelephoneInterceptor()); //检查邮箱是否正确和是否存在 me.add(new VerifyEmailInterceptor()); //注册一个检查输入文本长度的拦截器 me.add(new LengthInterceptor()); } /** * 配置处理器 */ @Override public void configHandler(Handlers me) { //加入统一的XSS处理器 me.add(new XssHandler("/((\\%3C)|<)((\\%2F)|\\/)*[a-z0-9\\%]+((\\%3E)|>)/ix")); } /** * 在JFinal启动完成后马上执行 */ @SneakyThrows @Override public void onStart() { //打印 启动Logo System.out.println(FileUtil.readUtf8String("logo.txt")); //初始化人员主键序列 PkUtil.InitPersonNumPk(); //初始化组织机构主键序列 PkUtil.InitOrgNumPk(); } }