使用 jfinal 遇到问题

使用 jfinal 主启动类启动时后台管理页面没有问题,登陆成功直接跳转到后台管理页面,
打包 war 之后启动登陆后, 不跳转页面请求不到

jfinal1.png

CmsConfig是主启动类,在idea中使用内置jetty启动项目,在登陆调用登陆后台接口时登陆成功直接跳转WEB-INF、admin视图

jfinal3.png

当我将此项目打成war包部署在tomcat时,在登陆时就跳转不到后台管理页面了

jfinal5.png

按照这个方法试过了,部署时将项目部署在tomcat ,webapp外 ,也行不通 https://my.oschina.net/jfinal/blog/353062

启动类代码

public class CmsConfig extends JFinalConfig{
        
    public static void main(String[] args) {
//       JFinal.start("src/main/webapp", 80, "/", 5);
         JFinal.start("src/main/webapp", 80, "/");
    }


   @Override
   public void configConstant(Constants me) {
      // TODO Auto-generated method stub
       PropKit.use(CommonAttribute.CONFIG_PROPERTIES);
      /** 开发者模式 */
      me.setDevMode(PropKit.getBoolean("system.devMode", false));
      /** 配置页面 */
      me.setViewType(ViewType.FREE_MARKER);
      me.setViewExtension(CommonAttribute.VIEW_EXTENSION);
      me.setError404View(CommonAttribute.FRONT_RESOURCE_NOT_FOUND_VIEW);
      me.setError500View(CommonAttribute.FRONT_ERROR_VIEW);
      /** 编码配置 */
      me.setEncoding(CommonAttribute.UTF_8);
      /** 上传文件目录 */
      me.setBaseUploadPath(CommonAttribute.BASE_UPLOAD_PATH);
      /** 设置参数分隔符 */
      me.setUrlParaSeparator(CommonAttribute.URL_PARA_SEPARATOR);
      /** 设置JSON */
      me.setJsonFactory(new FastJsonFactory());
      me.setJsonDatePattern(CommonAttribute.JSON_DATE_PATTERN);
      me.setLogFactory(new Log4jLogFactory());
   }

   @Override
   public void configRoute(Routes me) {
      // TODO Auto-generated method stub
      List<Class<Controller>> controllerClassList = ClassScaner.scanSubClass(Controller.class,true,false);
      if (controllerClassList != null) {
         for (Class<?> clazz : controllerClassList) {
            RouteMapping urlMapping = clazz.getAnnotation(RouteMapping.class);
            if (null != urlMapping && StrKit.notBlank(urlMapping.url())) {
               me.add(urlMapping.url(), (Class<? extends Controller>) clazz);
            }
         }
      }
   }

   @Override
   public void configPlugin(Plugins me) {
      // TODO Auto-generated method stub
      /** 数据库配置 */
        DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbc.url"), PropKit.get("jdbc.username"), PropKit.get("jdbc.password"),PropKit.get("jdbc.driver"));
        me.add(druidPlugin);
      ActiveRecordPlugin activeRecordPlugin = new ActiveRecordPlugin(druidPlugin);
      /** 打印sql */
      activeRecordPlugin.setShowSql(true);
      me.add(activeRecordPlugin);
      /** 表对应的实体配置 */
      _MappingKit.mapping(activeRecordPlugin);
      /** 定时任务 */
      me.add(new Cron4jPlugin(CommonAttribute.JOB_PROPERTIES));
      /** 缓存 */
      me.add(new EhCachePlugin());

   }

   
   /**
    * 配置全局拦截器
    */
   @Override
   public void configInterceptor(Interceptors me) {
      // TODO Auto-generated method stub
      /** session */
      me.add(new SessionInViewInterceptor());
      /** 事物 */
      me.add(new TxByMethods("save","update"));
   }

   /**
    * 配置Handler
    */
   @Override
   public void configHandler(Handlers me) {
      // TODO Auto-generated method stub
      me.add(new ContextPathHandler("base"));      
      me.add(new ResourcesHandler());
   }

   /**
    * 程序启动后
    */
   @Override
   public void afterJFinalStart() {
      // TODO Auto-generated method stub
      /** freemarker */
      TemplateVariableUtils.setCommonConfig();
      TemplateVariableUtils.setBaseVariable();
      TemplateVariableUtils.setDirectiveVariable();
      TemplateVariableUtils.setMethodVariable();
      super.afterJFinalStart();
   }

   /**
    * 程序停止前
    */
   @Override
   public void beforeJFinalStop() {
      // TODO Auto-generated method stub
      super.beforeJFinalStop();
   }

   /**
    * 标签配置
    */
   @Override
   public void configEngine(Engine me) {
      // TODO Auto-generated method stub
   }


下面内容为解决之后更新

最终因为一句Return

但是使用jetty主启动类没return没问题

jfinal6.png

评论区

JFinal

2019-06-10 23:02

根据当前信息量,并不知道这个过程是怎样的,具体出了什么问题也不知道

开发工程师

2019-06-11 12:34

您抽空看下

JFinal

2019-06-11 12:45

问题很可能出在 ClassScaner 之中,这个不是 jfinal 官方提供的,可能有很多问题

建议改成 jfinal 官方的路由用法,很多好处,例如 Routes 级的 view path 以及 Interceptor 非常有用

开发工程师

2019-06-11 13:47

@JFinal 明白,波总,不是jfinal的问题,是容器的问题,目前已有解决思路

开发工程师

2019-06-11 13:50

https://blog.csdn.net/hanchao_h/article/details/69277780

开发工程师

2019-06-11 13:50

https://segmentfault.com/q/1010000009793471?

开发工程师

2019-06-11 13:51

在火狐下就没问题的。chrome是有问题,根据这两个博客有思路了

zm

2019-06-11 17:20

我也是在用jfinalCms更新为jfinal4.2的时候出现这种情况,麻烦问下怎么解决的

JFinal

2019-06-11 17:24

@开发工程师 解决后一定要回来分享

这个问题在我这是从来没有的,这类问题解决后分享出来,为后来碰到问题的人节省时间

开发工程师

2019-06-11 18:26

开发工程师

2019-06-11 18:26

@zm 我解决会把链接发在这里

热门反馈

扫码入社