A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 上海分校-小影 于 2018-4-3 18:01 编辑


摘要

JFinal 是国产的、基于 Java 语言的极速 WEB MVC + ORM 框架,由 Handler、Interceptor、Controller、Render、Plugin 五大部分组成。其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。

在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!

JFinal架构原理图



JFinal架构以Action为参照,Handler处在扩展的外围,Interceptor处在更贴近Action的范围,Controller承载Action处在扩展的中心,Render处于Action后端,Plugin处于Action右侧。

JFinal有如下主要特点:

它是国产的MVC架构,设计精巧,使用简单;

惯例优于配置原则,支持零配置,无XML;

独创Db + Record模式,灵活便利;

ActiveRecord支持,使数据库开发极致快速;

极简、高性能Template Engine,十分钟内掌握基本用法;

自动加载修改后的java文件,开发过程中无需重启web server;

AOP支持,拦截器配置灵活,功能强大;

Plugin体系结构,扩展性强;

多视图支持,支持FreeMarker、JSP、Velocity;

强大的Validator后端校验功能;

功能齐全,拥有struts2绝大部分核心;

体积小仅538K;

开发原理

简单总结为:零配置、代码量少、开发体验连续、无第三方依赖、概念最少化。

快速上手

- 第一步:创建项目
  以最常用的Eclipse为例,推荐使用Eclipse IDE for Java EE Developers版本。
  
  以此创建工程,缺少web.xml文件,需要选择项目右键执行JavaEE Tools-->Generate Deployment Descriptor Stub:
  
- 第二步:导入maven的坐标

         
[AppleScript] 纯文本查看 复制代码
  <dependencies>
            <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.9</version>
            </dependency>
            <dependency>
                    <groupId>com.jfinal</groupId>
                    <artifactId>jetty-server</artifactId>
                    <version>8.1.8</version>
                    <scope>provided</scope>
            </dependency>
            <dependency>
                    <groupId>com.jfinal</groupId>
                    <artifactId>jfinal</artifactId>
                    <version>3.0</version>
            </dependency>
            <dependency>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                    <version>1.2.16</version>
            </dependency>
            <dependency>
                    <groupId>com.alibaba</groupId>
                    <artifactId>druid</artifactId>
                    <version>1.0.9</version>
            </dependency>
            <dependency>
                    <groupId>com.jfinal</groupId>
                    <artifactId>cos</artifactId>
                    <version>26Dec2008</version>
            </dependency>
            </dependencies>

这里如果不使用maven导入jar包,需要将jfinal-xxx.jar与jetty-server-8.1.8.jar拷至项目WEB-INF\lib下。

jetty-server-8.1.8.jar是发布使用的运行环境,jfinal默认使用jetty服务器。

- 第三步:创建类MyConfig.java
  创建包cn.itcast.jfinal.common,创建类MyConfig.java,继承JFinalConfig

     
[AppleScript] 纯文本查看 复制代码
   public class MyConfig extends JFinalConfig{
        
                @Override
                public void configConstant(Constants arg0) {
                        
                }
        
                @Override
                public void configEngine(Engine arg0) {
                        
                }
        
                @Override
                public void configHandler(Handlers arg0) {
                        
                }
        
                @Override
                public void configInterceptor(Interceptors arg0) {
                        
                }
        
                @Override
                public void configPlugin(Plugins arg0) {
                        
                }
        
                @Override
                public void configRoute(Routes routes) {
                        routes.add("/",IndexController.class);
                }
        
                /**
                 * 运行此main方法可以启动项目,此main方法可以放置在任意的class类定义中
                 * 
                 * 使用本方法启动过一次以后,会在开发工具的debug、run、config中自动生成一条启动配置
                 */
                public static void main(String[] args) {
                        /**
                         * 特别注意:Eclipse之下建议的启动方式
                         */
                        JFinal.start("src/main/webapp", 8080, "/", 5);
                }
        }

main方法表示的是:在创建Java Application启动项时,其中src/main/webapp 8080 / 5参数,用来指定web项目的根目录。

- 第四步:在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>cn.itcast.jfinal.common.MyConfig</param-value>
                             </init-param>
                     </filter>
                     <filter-mapping>
                             <filter-name>jfinal</filter-name>
                            <url-pattern>/*</url-pattern>
                     </filter-mapping>

注意: MyConfig.java 文件所在的包以及自身名必须与web.xml中的param-value标签内的配置相一致。

- 第五步:定义控制器
  创建包:cn.itcast.jfinal.controller,创建类IndexController.java,继承Controller
           
[AppleScript] 纯文本查看 复制代码
   public class IndexController extends Controller{
              
                      public void index(){
                              setAttr("msg","传智播客.黑马程序员");
                              renderTemplate("index.html");
                      }
              }


setAttr表示设置变量msg。

renderTemplate表示jfinal默认的模板引擎,用来跳转index.html。

- 第六步:定义index.html
   
[AppleScript] 纯文本查看 复制代码
  <html>
      <head>
      <meta charset="UTF-8">
      <title>Insert title here</title>
      </head>
      <body>
              你好!   #(msg)
      </body>
      </html>

- 第七步:运行MyConfig.java的main方法,启动jetty服务,在浏览器中输入:http://localhost:8080/index


7 个回复

倒序浏览
{:5_229:
回复 使用道具 举报
厉害厉害
回复 使用道具 举报
奈斯
回复 使用道具 举报
回复 使用道具 举报
奈斯
回复 使用道具 举报
回复 使用道具 举报
优秀,奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马