maven整合jfinal(轻量级框架)

前段时间有机会接触了下jfinal这个框架,感觉用来写一些小型的门户网站或者业务简单的功能性网站比较实用,上手简单,开发快。

      首先介绍一下Jfinal,它是一个基于MVC模式的WEB+ORM框架。有以下特点:

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. 体积小仅248K,且无第三方依赖

      

好了,废话不多说,直接开干!

项目结构图

配置web.xml文件

maven整合jfinal(轻量级框架)_第1张图片

1.新建一个maven项目(这个步骤不多说,附:pom.xml依赖)

[html] view plain copy
  1. <dependencies>  
  2.   
  3.     <dependency>  
  4.         <groupId>com.jfinalgroupId>  
  5.         <artifactId>jfinalartifactId>  
  6.         <version>2.2version>  
  7.     dependency>  
  8.     <dependency>  
  9.         <groupId>com.jfinalgroupId>  
  10.         <artifactId>cosartifactId>  
  11.         <version>26Dec2008version>  
  12.     dependency>  
  13.       
  14.     <dependency>  
  15.         <groupId>com.alibabagroupId>  
  16.         <artifactId>druidartifactId>  
  17.         <version>1.0.15version>  
  18.     dependency>  
  19.   
  20.     <dependency>  
  21.         <groupId>mysqlgroupId>  
  22.         <artifactId>mysql-connector-javaartifactId>  
  23.         <version>5.1.20version>  
  24.     dependency>  
  25.   
  26.     <dependency>  
  27.         <groupId>junitgroupId>  
  28.         <artifactId>junitartifactId>  
  29.         <version>4.11version>  
  30.     dependency>  
  31.   
  32.     <dependency>  
  33.         <groupId>javax.servletgroupId>  
  34.         <artifactId>javax.servlet-apiartifactId>  
  35.         <version>3.1.0version>  
  36.     dependency>  
  37. dependencies>  



由此可见使用jfinal的依赖包并不多,核心只有两个


2.配置数据源参数(jdbc.properties )

[plain] view plain copy
  1. #jdbc mysql  
  2. driverClass=com.mysql.jdbc.Driver  
  3. #我的数据库表叫test,根据自己实际情况修改  
  4. jdbcUrl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8  
  5. user=root  
  6. password=root  
  7.   
  8. initialSize=1  
  9. minIdle=1  
  10. maxActivee=20  

3.实体层(不需要写字段映射,只要继承Model)

[java] view plain copy
  1. package com.jfinal.dao;  
  2.   
  3. import com.jfinal.plugin.activerecord.Model;  
  4.   
  5. /** 
  6.  * 实体层 
  7.  * 
  8.  * @author lpf 
  9.  */  
  10.   
  11. public class News extends Model{  
  12. }  


4.jfinal配置文件(非常重要,注释都已写好,需要更深层次的功能自己查阅资料,这里只配置基本的)
[java] view plain copy
  1. package com.jfinal.config;  
  2.   
  3. import com.jfinal.controller.IndexController;  
  4. import com.jfinal.controller.NewsController;  
  5. import com.jfinal.dao.News;  
  6. import com.jfinal.kit.PropKit;  
  7. import com.jfinal.plugin.activerecord.ActiveRecordPlugin;  
  8. import com.jfinal.plugin.druid.DruidPlugin;  
  9. import com.jfinal.render.ViewType;  
  10.   
  11. /** 
  12.  * jfinal配置文件 
  13.  * 
  14.  * @author lpf 
  15.  */  
  16. public class WebConfig extends JFinalConfig{  
  17.   
  18.     @Override  
  19.     public void configConstant(Constants constants) {  
  20.         //设置编码格式  
  21.         constants.setEncoding("UTF-8");  
  22.         //设置为开发模式(如果为fals,jfinal会缓存页面,导致开发时修改页面后不能立即呈现)  
  23.         constants.setDevMode(true);  
  24.         //jfinal支持很多类型的页面,这里设置为jsp,FreeMarker也支持)  
  25.         constants.setViewType(ViewType.JSP);  
  26.     }  
  27.   
  28.     @Override  
  29.     public void configRoute(Routes routes) {  
  30.         //统一设置映射访问路径  类似于spring mvc的@RequestMapping  
  31.         routes.add("/", IndexController.class);  
  32.         routes.add("/news", NewsController.class);  
  33.     }  
  34.   
  35.     @Override  
  36.     public void configPlugin(Plugins plugins) {  
  37.         //这里启用Jfinal插件  读取jdbc配置  
  38.         PropKit.use("jdbc.properties");  
  39.         final String URL =PropKit.get("jdbcUrl");  
  40.         final String USERNAME = PropKit.get("user");  
  41.         final String PASSWORD =PropKit.get("password");  
  42.         final Integer INITIALSIZE = PropKit.getInt("initialSize");  
  43.         final Integer MIDIDLE = PropKit.getInt("minIdle");  
  44.         final Integer MAXACTIVEE = PropKit.getInt("maxActivee");  
  45.   
  46.         DruidPlugin druidPlugin = new DruidPlugin(URL,USERNAME,PASSWORD);  
  47.         druidPlugin.set(INITIALSIZE,MIDIDLE,MAXACTIVEE);  
  48.         druidPlugin.setFilters("stat,wall");  
  49.         plugins.add(druidPlugin);  
  50.   
  51.         //实体映射  
  52.         ActiveRecordPlugin activeRecordPlugin = new ActiveRecordPlugin(druidPlugin);  
  53.         activeRecordPlugin.addMapping("news","id", News.class);  
  54.         plugins.add(activeRecordPlugin);  
  55.   
  56.     }  
  57.   
  58.     @Override  
  59.     public void configInterceptor(Interceptors me) {  
  60.         // TODO Auto-generated method stub  
  61.   
  62.     }  
  63.   
  64.     @Override  
  65.     public void configHandler(Handlers me) {  
  66.         // TODO Auto-generated method stub  
  67.   
  68.     }  
  69. }  


5. service业务层(jfinal支持事务处理,这里只是简单的插入一条数据)
[java] view plain copy
  1. package com.jfinal.service;  
  2.   
  3. import com.jfinal.plugin.activerecord.Db;  
  4. import com.jfinal.plugin.activerecord.Record;  
  5.   
  6. public class NewsService {  
  7.   
  8.     public void add(String newstitle){  
  9.             Record news = new Record().set("newstitle", newstitle);  
  10.             Db.save("news", news);  
  11.     }  
  12. }  


6.controller控制层

新闻控制层

[java] view plain copy
  1. package com.jfinal.controller;  
  2.   
  3.   
  4. import com.jfinal.core.Controller;  
  5. import com.jfinal.service.NewsService;  
  6.   
  7.   
  8. public class NewsController extends Controller{  
  9.   
  10.   
  11.     private NewsService newsService = new NewsService();  
  12.   
  13.   
  14.     public void index(){  
  15.     "white-space:pre">  test();  
  16.     "white-space:pre">  renderJsp("/news/news.jsp");"white-space:pre">     
  17.     }  
  18.   
  19.   
  20.     public void test(){  
  21.        System.out.println("进入...");  
  22.        newsService.add("测试值");  
  23.        System.out.println("执行成功...");  
  24.         
  25.     }  
  26. }  


项目根路径访问
[java] view plain copy
  1. package com.jfinal.controller;  
  2.   
  3. import com.jfinal.core.Controller;  
  4.   
  5. /** 
  6.  * jfinal默认调用方法 
  7.  * 
  8.  * @author lpf 
  9.  */  
  10.   
  11. public class IndexController extends Controller{  
  12.   
  13.     public void index(){  
  14.         renderJsp("index.jsp");  
  15.     }  

你可能感兴趣的:(maven整合jfinal(轻量级框架))