package com.mall.config; import com.alibaba.druid.wall.WallFilter; import com.jfinal.config.*; import com.jfinal.core.JFinal; import com.jfinal.ext.handler.ContextPathHandler; import com.jfinal.ext.interceptor.SessionInViewInterceptor; import com.jfinal.kit.PropKit; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.tx.TxByMethodRegex; import com.jfinal.plugin.druid.DruidPlugin; import com.jfinal.plugin.druid.DruidStatViewHandler; import com.jfinal.plugin.ehcache.EhCachePlugin; import com.jfinal.render.ViewType; import com.jfinal.template.Engine; import com.jfinal.weixin.sdk.api.ApiConfig; import com.jfinal.weixin.sdk.api.ApiConfigKit; import com.mall.controller.act.ActInfoController; import com.mall.controller.common.CommonController; import com.mall.controller.common.IndexController; import com.mall.controller.common.WechatApiController; import com.mall.controller.common.WechatMsgController; import com.mall.controller.merchant.MerchantController; import com.mall.controller.product.*; import com.mall.controller.sys.*; import com.mall.controller.user.*; import com.mall.controller.wx.*; import com.mall.model._MappingKit; import com.mall.model.sys.SysRoleBtn; import com.mall.quartz.QuartzPlugin; import org.apache.log4j.Logger; /** * API引导式配置 */ public class MyConfig extends JFinalConfig { private static Logger logger = Logger.getLogger(MyConfig.class); /** * 配置常量 */ public void configConstant(Constants me) { PropKit.use("config.properties"); // 加载少量必要配置,随后可用PropKit.get(...)获取值 me.setDevMode(PropKit.getBoolean("devMode", false)); me.setViewType(ViewType.JSP);// 2.2中默认的视图为jsp me.setEncoding("utf-8"); me.setError404View("common/404.jsp"); me.setError500View("common/500.jsp"); } /** * 配置路由 * base ==“/”== webcontent目录下 * me.add(第一个参数是请求路径,第二个参数是哪个class响应,第三个参数是响应的web子目录) */ public void configRoute(Routes me) { me.add("/", IndexController.class,"/web"); // 第三个参数为该Controller的视图存放路径 me.add("/common", CommonController.class, "/web");//公共 me.add("/sysUser", SysUserController.class, "/web");// 用户 me.add("/sysDept", SysDeptController.class, "/web");// 部门 me.add("/sysRole", SysRoleController.class, "/web");// 角色 me.add("/sysRoleMenu", SysRoleMenuController.class, "/web");// 角色菜单 me.add("/sysRoleBtn", SysRoleBtnController.class, "/web");// 角色按钮 me.add("/sysUserRole", SysUserRoleController.class, "/web");// 用户角色 me.add("/sysMenu", SysMenuController.class, "/web");// 菜单 me.add("/sysMenuBtn", SysMenuBtnController.class, "/web");// 菜单按钮 me.add("/sysCode", SysCodeController.class, "/web");// 编码 me.add("/sysDictType", SysDictTypeController.class, "/web"); // 字典类型 me.add("/sysDictDetail", SysDictDetailController.class, "/web"); // 数据字典 me.add("/sysControlParam", SysControlParamController.class, "/web"); // 控制参数 me.add("/sysCustom", SysCustomController.class, "/web"); // 客服设置 me.add("/sysAmount", SysAmountController.class, "/web"); // 收款管理 me.add("/sysCompany", SysCompanyController.class, "/web"); // 公司管理 me.add("/product",ProductController.class,"/web");//商品 me.add("/productCard",ProductCardController.class,"/web");//商品抵用券 me.add("/productExchange",ProductExchangeController.class,"/web");//商品 me.add("/productBrand",ProductBrandController.class,"/web");//商品品牌 me.add("/productCategory",ProductCategoryController.class,"/web");//商品分类 me.add("/users",UsersController.class,"/web");//会员 me.add("/userAddress",UserAddressController.class,"/web");//收货地址 me.add("/userCart",UserCartController.class,"/web");//购物车 me.add("/userMsg",UserMsgController.class,"/web");//会员消息 me.add("/userFeedback",UserFeedbackController.class,"/web");//会员反馈 me.add("/userComplain",UserComplainController.class,"/web");//会员反馈 me.add("/userOrderComment",UserOrderCommentController.class,"/web");//订单评价 me.add("/userOrder",UserOrderController.class,"/web");//订单 me.add("/userOrderDetail",UserOrderDetailController.class,"/web");//订单明细 me.add("/userOrderPay",UserOrderPayController.class,"/web");//订单支付日志 me.add("/userCollect",UserCollectController.class,"/web");//商品收藏 me.add("/userIntegral",UserIntegralController.class,"/web");//会员积分 me.add("/userMoney",UserMoneyController.class,"/web");//会员余额 me.add("/userCardOrder",UserCardOrderController.class,"/web");//会员水票订单 me.add("/userCard",UserCardController.class,"/web");//会员水票 me.add("/userViewLog",UserViewLogController.class,"/web");//访问日志 me.add("/userShareLog",UserShareLogController.class,"/web");//分享日志 me.add("/userCoupon",UserCouponController.class,"/web");//优惠券 me.add("/cutInfo", CutInfoController.class,"/web");//砍价信息 me.add("/cutDetail",CutDetailController.class,"/web");//砍价详情 me.add("/wxNav", WxNavController.class, "/web");// 微信首页导航 me.add("/wxMenu", WxMenuController.class, "/web");// 微信菜单 me.add("/wxMsg", WxMsgController.class, "/web");// 微信图文消息 me.add("/wxMsgType", WxMsgTypeController.class, "/web");// 微信图文消息类型 me.add("/wxReply", WxReplyController.class, "/web");// 微信回复消息 me.add("/msg", WechatMsgController.class, "/mobile");// 微信响应 me.add("/wechat", WechatApiController.class, "/mobile");// 微信接口 me.add("/actInfo", ActInfoController.class, "/web");// 活动信息 me.add("/merchant", MerchantController.class, "/web");// 商户信息 } /** * 配置插件 */ public void configPlugin(Plugins me) { logger.info("配置插件开始.."); DruidPlugin dp = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password")); WallFilter wf = new WallFilter(); wf.setDbType("mysql"); dp.addFilter(wf); dp.setConnectionInitSql("set names utf8mb4;"); me.add(dp); // 配置ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin(dp); me.add(arp); // 所有配置在 MappingKit 中搞定 _MappingKit.mapping(arp); QuartzPlugin quartz = new QuartzPlugin(); me.add(quartz); // 配置Ecache插件 me.add(new EhCachePlugin()); logger.info("配置插件结束.."); } /** * 配置全局拦截器 */ public void configInterceptor(Interceptors me) { me.add(new TxByMethodRegex("(.*submit.*|.*save.*|.*update.*|.*delete.*)"));// 2.2改动 me.add(new SessionInViewInterceptor()); } /** * 配置处理器 */ public void configHandler(Handlers me) { logger.info("配置处理器开始.."); me.add(new ContextPathHandler("base")); DruidStatViewHandler dsvh = new DruidStatViewHandler("/druid"); me.add(dsvh); logger.info("配置处理器结束.."); } @Override public void afterJFinalStart() { logger.info("afterJFinalStart开始.."); ApiConfig ac = new ApiConfig(); // 配置微信 API 相关参数 ac.setToken(PropKit.get("token")); ac.setAppId(PropKit.get("appId")); ac.setAppSecret(PropKit.get("appSecret")); /** * 是否对消息进行加密,对应于微信平台的消息加解密方式: * 1:true进行加密且必须配置 encodingAesKey * 2:false采用明文模式,同时也支持混合模式 */ ac.setEncryptMessage(PropKit.getBoolean("encryptMessage", false)); ac.setEncodingAesKey(PropKit.get("encodingAesKey", "setting it in config file")); ApiConfigKit.putApiConfig(ac); // 网站域名 JFinal.me().getServletContext().setAttribute("siteUrl", PropKit.get("siteUrl")); // 网站名称 JFinal.me().getServletContext().setAttribute("siteName", PropKit.get("siteName")); // 版本号 JFinal.me().getServletContext().setAttribute("version", PropKit.get("version")); // 图片服务器地址 JFinal.me().getServletContext().setAttribute("imgUrl", PropKit.get("imgUrl")); // 图片上传路径 JFinal.me().getServletContext().setAttribute("uploadPath", PropKit.get("uploadPath")); // 角色按钮 JFinal.me().getServletContext().setAttribute("roleBtns", SysRoleBtn.dao.findAll()); // 添加定时任务 end logger.info("afterJFinalStart结束.."); } public static void main(String[] args) { JFinal.start("WebRoot", 80, "/chinaservices_app", 5); } @Override public void configEngine(Engine arg0) { } }