jfinal java_java jfinal框架: hello world

本文介绍了如何使用JFinal框架创建一个简单的Hello World应用,包括IDEA创建工程、配置web.xml、编写Controller和启动类。JFinal是一个轻量级、高效的Java Web开发框架,适合个人和中小企业使用。
摘要由CSDN通过智能技术生成

前言

f076da342f85e0de958818f597a1efae.png

这个框架的优势是: 开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友。

可以看成了java里的php语言。适合个人创业者,中小企业使用。还好就是由于是国人开人的,文档都是中文,容易阅读。

这是一个开源web开发框架 ,只用于web方面,spring则是一个大而全的框架,不单单可以用在web开发,其它领域也可以使用。

IDEA创建工程

由于是是web应用,必须使用旗舰版的IDEA,不能使用社区版的。

File -->New-->Project

c9d0ef765d813787ae3b987d6497530d.png

工程类型:Maven-->Create from archetype-->org.apache.maven.archetypes:maven-archetype-webapp

247b4be5d5b201939da1b4c3fd369dc5.png

填写名称路径,以及项目GroupId 和ArtifactId

注意:GroupId 和ArtifactId 要点开 Aritiface Coordinates前面的三角符号才能配置,使用默认的也行,不过是一个名字罢了。

088c24bae3dce3d51ac561384a248ac7.png

设置Maven的参数,这次先使用默认配置吧,如下:

de2fc0c92690fd2d72da8258e60e232a.png

工程刚建好的时候,会自动开始使用pom导入jar包,本质上就是通过 pom.xml的描述,从网上代码仓库里下载jar包,如下:

3f88f83651acc50140748010a00ff8fa.png

耐心等待pom导入完毕,整个基本工程就算建立完毕啦。

首次可能会用时比较久(30分钟),下载过一次,后面就会直接使用本地的了,就不会有这个下载的过程啦。

导入完成后的工程文件如下:

加入配置及代码

加入java目录及相关子目录(文件),如下:

a8d24ab560d360c2151c006ee1d67d95.png

这里,可能会遇到一个问题:IDEA包右键没有新建Java class 的解决方法

解决方法见附件。

这4个文件的内容:

1:DemoConfig.java

创建自定义的JFinalConfig,自己配置文件一定要集成JFinalConfig

可能会遇到问题 "无法创建类 auto-detect file type by content",  解决方法见附录。

DemoConfig.java 内容如下:

package com.hui.demo.config;

import com.hui.demo.controller.HelloController;

import com.jfinal.config.*;

import com.jfinal.template.Engine;

/**

* @program: JFinalFreemarkerDemo

* @description: JFinal配置中心

* @author: LuNanTing

* @create: 2020-07-24 15:35

**/

public class DemoConfig extends JFinalConfig {

@Override

public void configConstant(Constants constants) {

//开启开发模式

constants.setDevMode(true);

}

@Override

public void configRoute(Routes routes) {

routes.add("/hello", HelloController.class);

}

@Override

public void configEngine(Engine engine) {

}

@Override

public void configPlugin(Plugins plugins) {

}

@Override

public void configInterceptor(Interceptors interceptors) {

}

@Override

public void configHandler(Handlers handlers) {

}

}

2:HelloController.java

因为只是最基础测试搭建,一些配置文件并未配置,需要配置可以通过上边的官方文档查看和配置,

接下来创建一个基础的视图管理Controller类(需要继承jfinal包中的Controller):

package com.hui.demo.controller;

import com.jfinal.core.Controller;

/**

* @program: JFinalFreemarkerDemo

* @description:

* @author: LuNanTing

* @create: 2020-07-24 15:13

**/

public class HelloController extends Controller {

public void index(){

renderText("Hello World! jFinal");

}

}

3:web.xml

这时候打开web.xml进行配置:

/p>

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd" >

Archetype Created Web Application

jfinal

com.jfinal.core.JFinalFilter

configClass

com.hui.demo.config.DemoConfig

jfinal

/*

4:StartMain.java

最后设置一个启动类,类似于SpringBoot内置Tomcat那样,需要一个main方法:

package com.hui.demo;

import com.jfinal.core.JFinal;

/**

* @program: JFinalFreemarkerDemo

* @description: 启动类

* @author: LuNanTing

* @create: 2020-07-24 15:40

**/

public class StartMain {

public static void main(String[] args) {

JFinal.start("src/main/webapp",8081,"/", 5);

}

}

5.添加依赖

pom.xml 文件:

最新的jfinal框架官方推荐使用 jfinal-undertow,而不是jetty,这个helloworld工程就暂时沿用旧的做法吧,新工程就不要这样写了。

注意:要先装Jetty Server,否则会有红色高亮警告,详请见附录。

这里特别注意一下:如果是使用 IDEA 开发,scope 仍然得设置成为 compile,否则提示缺少 jar 包,在打包的时候记得要改回 provided,避免打进一些不需要的 jar 包

com.jfinal

jetty-server

2019.3

compile

运行

点击绿三角,即可运行。

368b841de0bbe8d8bfa0b7f9689a5883.png

点击运行。

问题1,可能会出现了以下问题:

Exception in thread "main" java.lang.NoClassDefFoundError: com/jfinal/core/JFinal

99bafc926671e26a0dc0e7b93e332fb1.png

解决方法:

添加依赖:

com.jfinal

jetty-server

2018.11

compile

但是红色的,

fde5a6b5c7c9238d330b8048a348d36c.png

这是因为 Jetty Server没有安装。安装方法见附录。

问题2:IncompatibleClassChangeError 错误

a566d60484537bf0f1593a13a0f2372f.png

原因: 是因为加了两个或两个以上版本的库,比如我这里的问题是加了两个版本的 jfinal库,删掉一个低版本的就好。

下图是删掉多余库之后的截图。

f6416ab1be7bbc25c8b74c0c711f92de.png

运行成功后的提示信息是这样的:

5d1b12661f5c3889092e3fccba609107.png

在浏览器就输入地址,就可以访问啦,如下:

118a8f03f3885236aee7c6cdd6cf3d96.png

附录1:关于IDEA包右键没有新建Java class 的解决方法

现象为:

a9e5a82fa4f9033db680f90e4637564b.png

解决方法:右键-->New-->Mark Directory as --> Sources Root

abc65cefdbd209e2e67636bc9f53d449.png

附录2: 问题:无法创建类 auto-detect file type by content

会提示无法创建类,即使强行创建一个 DemoConfig.java 文件, IDEA也不会识别成 *.java文件。

51ae4672887436c3b8ed203b35bd1aa8.png

原因:  你添加了一个特定样子的文件类型,IDE记住了,导致你这个文件都是按模板指定的文件类型。

解决方法:办法就是,打开设置,找到File Types(可以通过左上边的搜索快速找打,然后,找到签名添加的auto-detect file type by content类型,你会发下在右下边有你添加的文件安静的躺在那,快快把他删除了。

8e1f42fd66d643d26387666113eae306.png

附录3:  Jetty Server 安装与使用

最新的jfinal框架官方推荐使用 jfinal-undertow,而不是jetty,这个helloworld工程就暂时沿用旧的做法吧,新工程就不要这样写了。

Jetty更轻量级。这是相对Tomcat而言的。功能类似,Tomcat和Jetty都是一种Servlet引擎。

还有一点不同的是,Jetty是一种嵌入式服务器,Tomcat要单独运行,但Jetty可以直接集成到代码里。安装方法也相对简单,通过maven就行。如下图所示,

Project Structure --> Libraries --> "+"号 --> 输入"com.jfinal" --> 点击输入框右侧的搜索图标,就会显示好几个版本。

选中一个版本,添加到库里即可。

2f1182c6b41c0d248fead1a5a342e710.png

然后就会出现一个提示框,等待其完成即可。

f4159718c6d1157a1227cab4dc83907a.png

添加成功后,就可以看到Libraries里多了一个选项:

1db79e4af14cd79a3770313e80b7dcc6.png

接着在pom.xml文件里添加依赖:

com.jfinal

jetty-server

2019.3

compile

groupId, artifactId,version 必须和上一步下载的一模一样,否则,会有红色高亮提示。

fde5a6b5c7c9238d330b8048a348d36c.png

扩展:

如果缺少其它库,也可以同样的方便把库添加进来,比如:

0699c2212c754d40523a4f1debe54b5f.png

解决方法:

5df1f2ba6c109ede396ffdd6eefdf636.png

下载完这个库后,颜色就正常了:

0237754e7814f3132d7da884837b98f9.png

附录4:  jfinal-undertow 简介

jfinal-undertow 功能和 tomcat、jetty 类似,可以相互替代。和jetty一样,是嵌入式服务器。是jfinal全家桶之一。优势是轻量快速和热部署。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值