Jfianl学习笔记

JFinal 是基于 Java 语言的极速 WEB + ORM 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有 Java 语言所有优势的同时 再拥有 ruby、python、php 等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋 友 :)
JFinal 有如下主要特点:
 MVC 架构,设计精巧,使用简单
 遵循 COC 原则,零配置,无 xml
 独创 Db + Record 模式,灵活便利
 ActiveRecord 支持,使数据库开发极致快速
 自动加载修改后的 java 文件,开发过程中无需重启 web server
 AOP 支持,拦截器配置灵活,功能强大
 Plugin 体系结构,扩展性强
 多视图支持,支持 FreeMarker、JSP、Velocity
 强大的 Validator 后端校验功能
 功能齐全,拥有 struts2 绝大部分核心功能
 体积小仅 303K,且无第三方依赖

以上介绍是官方原话

最近几天根据官方文档搭建了jfinal,发现jfinal无需编写xml,操作数据库及其简单,下面就介绍我使用maven+jfinal搭建的花卉录入与查询功能。

点击“提交”进行数据保存。

访问指定url地址显示录入内容

本人的开发工具是Eclipse,数据库为mysql。先放个项目结构图

1.开发第一步新建个maven项目

我这里项目取名叫jfinal-02mvc

2.导jar包

打开pom.xml。添入如下代码:

com.jfinal是jfinal库文件

c3p0用于连接数据库

其他包见注释

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.bjsxt</groupId>
    <artifactId>jfinal-02mvc</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <properties>
        <servlet-version>3.0.1</servlet-version>
        <jsp-version>2.2</jsp-version>
        <jstl-version>1.2</jstl-version>
        <spring-version>4.1.6.RELEASE</spring-version>
        <aspectjweaver-version>1.8.6</aspectjweaver-version>
        <mybatis-version>3.2.7</mybatis-version>
        <mybatis-spring-version>1.2.3</mybatis-spring-version>
        <log4j-version>1.2.17</log4j-version>
        <mysql-connector-java-version>5.1.38</mysql-connector-java-version>
        <jackson-version>2.4.1</jackson-version>
        <commons-fileupload-version>1.3.1</commons-fileupload-version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${servlet-version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>${jsp-version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl-version}</version>
        </dependency>
        <!-- log4j 日志 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j-version}</version>
        </dependency>
        <!-- mysql 驱动类 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector-java-version}</version>
        </dependency>
        <!--jfinal依赖 -->
        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>jfinal</artifactId>
            <version>3.2</version>
        </dependency>
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.8.4.5</version>
        </dependency>
        <!--
        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>cos</artifactId>
            <version>2017.5</version>
        </dependency> -->
        


    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <!-- 控制tomcat端口号 -->
                    <port>8080</port>
                    <!-- 项目发布到tomcat后的名称 -->
                    <!-- / 相当于把项目发布名称为ROOT -->
                    <!-- /abc -->
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>



</project>

 

3.配置JFinal 

基于 JFinal 的  web 项目需要创建一个继承自  JFinalConfig 类的子类,该类用于对整个  web 项目进行配置

这里我新建了名为DemoConfig.java 继承JFinalConfig,用于配置jfinal

代码说明:

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

将”/hello”映射到 HelloController 这个控制器

通 过 访问 http://localhost/hello/index 将 访 问 HelloController.index() 方法

public class DemoConfig extends JFinalConfig {
    public void configConstant(Constants me) {
        me.setDevMode(true);//开发者模式,这里必须为true
        me.setViewType(ViewType.JSP);//默认视图jsp
    }

    public void configRoute(Routes me) {
        me.add("/hello", HelloController.class);
    }

    public void configPlugin(Plugins me) {
        C3p0Plugin cp = new C3p0Plugin("jdbc:mysql://localhost/student?useSSL=false", "root", "");//建立数据库连接,这里我使用的mysql数据库
        me.add(cp); //固定写法
        ActiveRecordPlugin arp = new ActiveRecordPlugin(cp); //固定写法
        me.add(arp);//固定写法
    }

    public void configInterceptor(Interceptors me) {
    }

    public void configHandler(Handlers me) {
    }

    @Override
    public void configEngine(Engine arg0) {
        // TODO Auto-generated method stub
        
    }
}

4. 定义实体类

代码中的Flower 通过继承  Model,便立即拥有的众多方便的操作数据库的方法

public class Flower  extends Model<Flower>{
    public static final Flower dao    = new Flower();

}

5.编写新增查询controller

代码说明:

Db 类可实现对数据库的连接。如果需要查询,只需 Db.find("select * from flower") ;如果新增只需Db.save("flower", flower);第1个flower表示需保存的表名;第2个flower是实体类

Record 类可实现对实体类的定义。如Record flower = new Record();

public class HelloController extends Controller{
    
    //新增
    public  void add(){
        String url="";
        Record flower = new Record();
        flower.set("name", getPara("name")); 
        flower.set("price", getPara("price")); 
        flower.set("production", getPara("production"));
        Boolean flag=Db.save("flower", flower);
        if(flag){//保存成功
         url="/success.jsp";
        }else{
          url="/fail.jsp";
        }
        render(url); 
    }
    
    //查询
    public void find(){
        List<Record> list=Db.find("select * from flower");
        setAttr("list", list);
        render("/find.jsp");
    }
}

6.登记页面和新增页面

页面在这里算重点,直接放代码

新增页面add.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="/hello/add" method="post">
    <table width="780" border="0">
  <tr>
    <td width="82">花名</td>
    <td><input name="name" type="text" id="name"></td>
  </tr>
   <tr>
    <td>价格</td>
    <td><input name="price" type="text" id="price"></td>
  </tr>
  <tr>
    <td>成品说明</td>
    <td><input name="production" type="text" id="production" size="40"></td>
  </tr>
 
</table>
    <input type="submit" value="提交"/>
</form>

</body>
</html>

 

查询页面find.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Utf-8">
<title>Insert title here</title>
</head>
<body>
<table border="1">
 <tr>
  <td>花名</td>
   <td>价格</td>
    <td>描述</td>
 </tr>
 <c:forEach items="${list}" var="list">
  <tr>
  <td>${list.name}</td>
   <td>${list.price}</td>
    <td>${list.production}</td>
 </tr>
 </c:forEach>
 
</table>

</body>
</html>

 

7.maven build运行

8.页面访问

打开浏览器

访问http://localhost:8080/hello/add.jsp 

 

http://localhost:8080/hello/find

posted @ 2020-01-03 23:58  咔咔kk  阅读(297)  评论(0编辑  收藏  举报