IDEA手动创建JFinal项目(404问题处理)

Stella981
• 阅读 770

IDEA手动创建JFinal项目(404问题处理)

公司项目使用jfinal有一段时间了,也有自己手动搭建过项目,但是没有使用demo中jetty方式启动过项目。这几天决定参考jfinal文档更好的学习下jfinal框架,其实挺简单,但是碰到了一个jetty报错404的问题,查询了论坛分享和网上一些创建方式也没也没解决,折腾了一段时间,这里做个记录希望同样碰到的人可以少折腾会儿。

创建项目

首先创建一个maven项目(使用模板)
IDEA手动创建JFinal项目(404问题处理) IDEA手动创建JFinal项目(404问题处理) 这里使用了我自己的maven配置文件 IDEA手动创建JFinal项目(404问题处理) 由于使用idea创建项目,这里我一般项目目录(Project location)和模块目录(Module file location)会分开。这样的话再新建模块的时候所有模块的目录层级更清晰点。
而这也是为后面的出404问题埋下了伏笔
IDEA手动创建JFinal项目(404问题处理)
结束完成项目创建。

修改项目配置

  1. 增加maven依赖

    <dependency>
        <groupId>com.jfinal</groupId>
        <artifactId>jfinal</artifactId>
        <version>3.3</version>
        </dependency>
    
        <dependency>
        <groupId>com.jfinal</groupId>
        <artifactId>jetty-server</artifactId>
        <version>8.1.8</version>
        <!-- <scope>provided</scope>-->
    </dependency>
    
  2. 修改maven项目结构配置
    IDEA手动创建JFinal项目(404问题处理) IDEA手动创建JFinal项目(404问题处理)

简单代码编写

  1. 创建控制类
    TestController.java

    package com.yihengliu.test.controller;
    
    import com.jfinal.core.Controller;
    
    /**
    * 测试控制类
    *
    * @author liucheng
    * @version 0.1
    * @since 0.1 2018-01-30 下午2:31
    **/
    public class TestController extends Controller {
        public void index() {
        renderText("Hello, JFinal!");
        }
    }
    
  2. 创建配置类
    DemoConfig.java

    package com.yihengliu.test;
    
    import com.jfinal.config.*;
    import com.jfinal.template.Engine;
    import com.yihengliu.test.controller.TestController;
    
    /**
    * jfinal配置类
    *
    * @author liucheng
    * @version 0.1
    * @since 0.1 2018-01-30 下午2:30
    **/
    public class DemoConfig extends JFinalConfig{
        @Override
        public void configConstant(Constants me) {
    
        }
    
        @Override
        public void configRoute(Routes me) {
            me.add("/", TestController.class);
        }
    
        @Override
        public void configEngine(Engine me) {
    
        }
    
        @Override
        public void configPlugin(Plugins me) {
    
        }
    
        @Override
        public void configInterceptor(Interceptors me) {
    
        }
    
        @Override
        public void configHandler(Handlers me) {
    
        }
    
        public static void main(String[] args) {
            JFinal.start("src/main/webapp", 9091, "/");
        }
    }
    
  3. web.xml文件配置

    <filter>
        <filter-name>jfinal</filter-name>
        <filter-class>com.jfinal.core.JFinalFilter</filter-class>
        <init-param>
            <param-name>configClass</param-name>
            <param-value>com.yihengliu.test.DemoConfig</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>jfinal</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

测试问题处理

DemoConfig类中运行main函数
IDEA手动创建JFinal项目(404问题处理)

然后问题来了,页面怎么访问都是404,错误如图:
IDEA手动创建JFinal项目(404问题处理)

而不是jfinal报错(这种报错就肯定时jfinal路由配置的问题了): IDEA手动创建JFinal项目(404问题处理)

其实很容易就能看出是因为没有读取web.xml配置,导致项目没有启动jfinal。论坛里面也有提到这种情况的,但是由于自己没有什么jetty使用经验,所以后面还是通过debug代码才发问题的原因。
原因就是前面建立项目提到的,在建立项目的时候project目录和module目录不在同一个目录,所以启动的地方需要修改相对目录,加上module目录。
JFinal.start("jfinal_test/src/main/webapp", 9091, "/");

最终,重启项目,顺利运行。
IDEA手动创建JFinal项目(404问题处理)

总结

不得不说下jfinal使用确实很简单、方便,而自己搭建项目碰到问题没有快速定位也说明自己确实还有很多的东西需要学习。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这