JFinal 了解

JFinal 简介

JFinal 是基于Java语言的极速 WEB + ORM 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。

JFinal框架是基于Java语言的开源Web框架,由中国著名的Java开发者陈梁发起并持续开发维护。它借鉴了Struts、Hibernate等框架的优点,采用了极简的API设计,使得开发者能够更加便捷地进行Web应用的开发工作。JFinal框架在国内外都有着广泛的应用,尤其在企业级应用和中小型项目中备受青睐。

特点

 1.MVC 架构,设计精巧,使用简单
 2.遵循 COC 原则,零配置,无 xml
 3.独创 Db + Record 模式,灵活便利
 4.ActiveRecord 支持,使数据库开发极致快速
 5.自动加载修改后的 java 文件,开发过程中无需重启 web server
 6.AOP 支持,拦截器配置灵活,功能强大
 7.Plugin 体系结构,扩展性强
 8.多视图支持,支持 FreeMarker、JSP、Velocity
 9.强大的 Validator 后端校验功能
10.功能齐全,拥有 struts2 绝大部分核心功能
11.体积小仅 303K,且无第三方依赖

对比

JFinal ORM和Hibernate简要对比

JFinal采用ActiveRecord实现数据库操作支持,较Hibernate开发效率提升六到十倍。

JFinal ActiveRecord较Hibernate学习成本低,一小时内能上手开发。

JFinal零配置,对数据库支持五个无特点:无xml、无annotation、无getter、无setter、无attribute,极大降低了代码量,统计证实代码量节省70%到95%。

JFinal数据库操作完全采用原生sql,相对Hibernate采用的HQL学习成本低,功能更强大,性能更高,稳定性好。

JFinal 和SpringBoot简要对比

主要区别在于它们的设计理念、功能集成方式和目标用户群体。

设计理念、功能集成方式:

JFinal 是一个轻量级的MVC+ORM集成框架,设计目标是快速开发、代码量少、学习简单。它遵循“约定优于配置”的原则,支持零配置,无需XML配置文件,使得开发过程更加简洁和高效。
Spring Boot 则是一个自动化集成配置工具,旨在简化Spring程序的创建和开发过程。它通过提供大量的默认配置和开箱即用的特性,如内嵌的Servlet容器和自动配置Spring容器,使得开发者能够快速搭建和部署应用程序。Spring Boot还支持将Spring的各种框架(springframework, spring-mvc, spring-security等)集成起来进行自动化配置,适合需要集成多种Spring框架的企业级应用。

目标用户群体:

JFinal适合小型项目或快速开发需求,因为它提供了轻量级和快速的解决方案。
Spring Boot则更适合大型企业级应用,因为它提供了全面的生产就绪型功能和强大的服务体系,如嵌入式服务器、安全、性能指标、健康检查等。

JFinal创建项目

Maven项目

创建 Maven 项目时选择 "Create a simple project" 和不选有所不同。选择 "Create a simple project" 时,Maven 会创建一个没有任何特定构建配置的简单项目,通常用于快速开始一个没有复杂依赖和配置的项目。不选的话,Maven 会创建一个标准的 Maven 项目,包含标准的项目结构和 pom.xml 文件,你可以根据需要添加更多配置和依赖。

    <dependency>   
	 <groupId>com.jfinal</groupId>   
	 <artifactId>jfinal-undertow</artifactId>   
	 <version>1.9</version>
	</dependency> 
	<dependency>   
	 <groupId>com.jfinal</groupId>   
	 <artifactId>jfinal</artifactId>   
	 <version>5.1.0</version>
	</dependency>

public class Config extends JFinalConfig {
	 @Override
	 public void configConstant(Constants me) {
		 //是否开启开发模式
		 me.setDevMode(true);
	 }
	 @Override
	 public void configRoute(Routes me) {
		 
		// 路由扫描,jfinal 4.9.03 新增功能。参数 "com.xxx." 表示扫描被限定的包名
		// 扫描仅会在该包以及该包的子包下进行
		 me.scan("com.w.contrller");
	 }
	 @Override
	 public void configEngine(Engine me) {
		 
	 }
	 @Override
	 public void configPlugin(Plugins me) {
		 
	 }
	 @Override
	 public void configInterceptor(Interceptors me) {
		 
	 }
	 @Override
	 public void configHandler(Handlers me) {
		 
	 }

}

新建Config文件需要继承JFinalConfig 并重写方法 

configConstant(Constants me): 配置常量

configRoute(Routes me): 配置路由

configEngine(Engine me): 配置模板引擎

configPlugin(Plugins me): 配置插件

configInterceptor(Interceptors me): 配置拦截器

configHandler(Handlers me): 配置 Handler

新建com.w.controller再创建demoController01继承Controller

@Path("/test")
public class demoController01 extends Controller {
	
    //控制器的默认访问方法,相当于Struts的execute
	public void index(){
		renderText("test");
	}
	//普通方法
	public void test01(){
		renderText("test01");
	}

	//单独访问方法
	@ActionKey("/test001")
	public void test001(){
		renderText("test001");
		
	}
}

访问localhost/test 默认调用index()方法,localhost/test/test01 调用test01()方法,

localhost/test001 调用test001()方法

新建com.w.run下创建Run类里面创建demoRun方法:

public class demoRun {
	
	public static void main(String[] args) {
		
		//加载的类 端口号 是否支持热加载
		UndertowServer.start(Config.class,80,true);
	}
}

运行程序 demoRun页面 Run As Java Application

传统非Maven项目

1.1 创建项目

此处的 Default out folder 必须要与 WebRoot\WEB-INF\classes 目录完全一致才可 以使用 JFinal 集成的 Jetty 来启动项目。

1.2 放入jar包

 将 jfinal-xxx.jar  与jetty-server-8.1.8.jar 拷贝至项目 WEB-INF\lib  下

1.3 修改web.xml

添加内容到 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>demo.DemoConfig</param-value>

	</init-param>

  </filter>

  <filter-mapping>

	<filter-name>jfinal</filter-name>

	<url-pattern>/*</url-pattern>

  </filter-mapping>

1.4 创建配置文件及控制器

在项目 src 目录下创建 demo 包,并在 demo 包下创建 DemoConfig 文件

DemoConfig.java 文件所在的包以及自身文件名必须与 web.xml 中的 param-value 标 签内的配置相一致(在本例中该配置为 demo.DemoConfig)。

public class DemoConfig extends JFinalConfig  {
	public void configConstant(Constants me)

	 {
		me.setDevMode(true);

	 }

	public void configRoute(Routes me) 

	{ me.add("/hello",

	 HelloController.class);

	}

	public void configPlugin(Plugins me) {}

	public void configInterceptor(Interceptors me) {}

	public void configHandler(Handlers me) {}

}

在 demo 包下创建 HelloController 类文件

public class HelloController extends Controller {

	public void index() 

		{ renderText("Hello JFinal 

		World.");

	}

1.5 启动项目

在 Main class 输入框中填入com.jfinal.core.JFinal 并点击 Debug 按钮启动项目

浏览器输入 localhost/hello,输出内容为 Hello JFinal World 即启动成功

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值