zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    前台开发——处理用户密码登录的修改功能
    前台开发——处理用户收货信息的修改
    Max Sum -- hdu -- 1003
    (深搜)Oil Deposits -- hdu -- 1241
    (博弈 sg入门2)
    (博弈 sg入门)kiki's game -- hdu -- 2147
    (巴什博弈 sg函数入门1) Brave Game -- hdu -- 1846
    (全排列)Ignatius and the Princess II -- HDU -- 1027
    (模拟)Arithmetic Sequence -- HDU -- 5400
    (字符串 键盘转换)Convert QWERTY to Dvorak -- zoj -- 5526
  • 原文地址:https://www.cnblogs.com/hzcjd/p/12147567.html
Copyright © 2011-2022 走看看