如何使用JFinal開發javaweb

介紹開始:

 

編輯器:MyEclipse;

 

數據庫:MySQL;

 

服務器:tomcat;

 

1 首先新建web項目

要強調的是Target runtime必須選擇爲None。而後點擊兩次Next,選中建立web.xml。finish~~~css

2 導入支撐項目的jar包(包括JFinal、Mysql、JDBC)

必須導入這四個jar包。其中:(1) c3p0是支撐JDBC的;(2)jfina是支撐jfinal的,jfinal默認使用freemarker做爲MVC的View,因此也要導入;(3)mysql-conncetor是支撐Mysql鏈接的html

3 寫java代碼

在src文件夾中建立四個package,分別爲config,controller, model,service。其中config包裏是全局配置文件,controller對應的就是MVC中的Control,model與service組成MVC的Model。Control就是控制先後臺的交互,model對應數據庫的各個表以及派生model類,service就是寫sql語句的地方微笑java

config中有三個方法最重要configConstant、configPlugin、configRoutemysql

(1)configConstant:此方法用來配置 JFinal 常量值web

(2)configPlugin:此方法用來配置 JFinal 的 Plugin,好比配置 C3p0 數據庫鏈接池插件與 ActiveRecord數據庫訪問插件sql

(3)configRoute:此方法用來配置 JFinal 訪問路由,好比將」/hello」映射到 HelloController 這個控制器數據庫

說完這些咱們來看代碼tomcat

↓此爲BaseConfig.java服務器

[java]  view plain  copy
 
  1. package config;  
  2.   
  3. import model.User;  
  4.   
  5. import com.jfinal.config.Constants;  
  6. import com.jfinal.config.Handlers;  
  7. import com.jfinal.config.Interceptors;  
  8. import com.jfinal.config.JFinalConfig;  
  9. import com.jfinal.config.Plugins;  
  10. import com.jfinal.config.Routes;  
  11. import com.jfinal.kit.PropKit;  
  12. import com.jfinal.plugin.activerecord.ActiveRecordPlugin;  
  13. import com.jfinal.plugin.c3p0.C3p0Plugin;  
  14.   
  15. import controller.HelloController;  
  16.   
  17. public class BaseConfig extends JFinalConfig {  
  18.       
  19.     @Override  
  20.     public void configConstant(Constants me) {  
  21.         // TODO Auto-generated method stub  
  22.         PropKit.use("demo_config.txt");  
  23.         me.setDevMode(PropKit.getBoolean("devMode", false));  
  24.     }  
  25.     @Override  
  26.     public void configHandler(Handlers me) {  
  27.         // TODO Auto-generated method stub  
  28.           
  29.     }  
  30.     @Override  
  31.     public void configInterceptor(Interceptors me) {  
  32.         // TODO Auto-generated method stub  
  33.           
  34.     }  
  35.     @Override  
  36.     public void configPlugin(Plugins me) {  
  37.         // TODO Auto-generated method stub  
  38.         C3p0Plugin c3p0Plugin = new C3p0Plugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());  
  39.         me.add(c3p0Plugin);  
  40.           
  41.         ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);  
  42.         me.add(arp);  
  43.           
  44.         arp.addMapping("user", User.class);  
  45.     }  
  46.     @Override  
  47.     public void configRoute(Routes me) {  
  48.         // TODO Auto-generated method stub  
  49.         me.add("/hello", HelloController.class);  
  50.     }  
  51. }  

↓此是HelloController.javaapp

 

 

[java]  view plain  copy
 
  1. package controller;  
  2.   
  3. import model.User;  
  4. import service.UserService;  
  5.   
  6. import com.jfinal.core.Controller;  
  7.   
  8. public class HelloController extends Controller {  
  9.   
  10.     UserService userService = new UserService();  
  11.       
  12.     public void index()  
  13.     {  
  14.         String name = getPara("name");  
  15.         String password = getPara("password");  
  16.         User user = new User();  
  17.         user = null;  
  18.           
  19.         user = userService.findUser(name, password);  
  20.           
  21.         if(user != null)  
  22.             render("/html/hello.html");  
  23.           
  24.           
  25.     }  
  26. }  

↓此是User.java

 

 

[java]  view plain  copy
 
  1. package model;  
  2.   
  3. import com.jfinal.plugin.activerecord.Model;  
  4.   
  5. public class User extends Model<User> {  
  6.     public static final User dao = new User();  
  7. }  


↓此是UserService.java

 

 

[java]  view plain  copy
 
  1. import model.User;  
  2.   
  3. public class UserService {  
  4.       
  5.     public User findUser(String name,String password)  
  6.     {  
  7.         User user = new User();  
  8.         user = null;  
  9.           
  10.         String sql = "select * from user where name='"+name+"' and password='"+password+"';";  
  11.           
  12.         user = User.dao.findFirst(sql);  
  13.           
  14.         System.out.printf("sql:"+sql);  
  15.           
  16.         return user;  
  17.     }  
  18. }  

 

 

4 千萬不能忘了Propkit要引用的txt文件

Propkit是JFinal自帶的工具類。Propkit能夠用來加載一個或多個配置文件。在該Demo中PropKit用在BaseConfig的configConstant方法中。

須要強調的是,加載的配置文件必需要放在src下。緣由是:友情連接http://www.oschina.net/question/2461549_2148022?fromerr=ceMjBkEb

↓此是demo_config.txt

 

[plain]  view plain  copy
 
  1. jdbcUrl = jdbc:mysql://127.0.0.1/jfinal_test?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull  
  2. user = root  
  3. password = root  
  4. devMode = true  

 

5 寫前臺界面

WebRoot下建立文件夾html,在html文件夾下建立hello.html與login.html。其中hello.html裏什麼都不用添加,login.html設計一個表單提交。

↓此是login.html

 

[html]  view plain  copy
 
  1. <!DOCTYPE html>  
  2. <html>  
  3.   <head>  
  4.     <title>login.html</title>  
  5.       
  6.     <meta name="keywords" content="keyword1,keyword2,keyword3">  
  7.     <meta name="description" content="this is my page">  
  8.     <meta name="content-type" content="text/html; charset=UTF-8">  
  9.       
  10.     <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->  
  11.   
  12.   </head>  
  13.     
  14.   <body>  
  15.     <form action="../hello" method="post">  
  16.         <table>  
  17.             <tr>  
  18.                 <td>name:</td>  
  19.                 <td><input type="text" name="name"></td>  
  20.             </tr>  
  21.             <tr>  
  22.                 <td>password:</td>  
  23.                 <td><input type="password" name="password"></td>  
  24.             </tr>  
  25.             <tr>  
  26.                 <td></td>  
  27.                 <td><input type="submit" value="Login"></td>  
  28.             </tr>  
  29.         </table>  
  30.     </form>  
  31.   </body>  
  32. </html>  

 

 

6 修改web.xml文件

web.xml在WebRoot/WEB-INF文件夾下

↓此是web.xml

 

[html]  view plain  copy
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  
  3.   <display-name>JFinalDemo</display-name>  
  4.   <filter>  
  5.       <filter-name>JFinalDemo</filter-name>  
  6.       <filter-class>com.jfinal.core.JFinalFilter</filter-class>  
  7.       <init-param>  
  8.           <param-name>configClass</param-name>  
  9.           <param-value>config.BaseConfig</param-value>  
  10.       </init-param>  
  11.   </filter>  
  12.   <filter-mapping>  
  13.       <filter-name>JFinalDemo</filter-name>  
  14.       <url-pattern>/*</url-pattern>  
  15.   </filter-mapping>  
  16. </web-app>  

 

7 數據庫

建立數據庫的語句與插入的測試數據。

 

[plain]  view plain  copy
 
  1. CREATE DATABASE IF NOT EXISTS jfinal_test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;  
  2. CREATE TABLE user (id INT NOT NULL AUTO_INCREMENT,name CHAR(10) NOT NULL,password CHAR(10) NOT NULL,PRIMARY KEY(id));  
  3. insert into user(name,password) values('test','test');  



 

8 執行

帳戶密碼都是test,點擊login後,跳轉成功

總結

因爲本人並無structs經驗,MVC也只是入門級,因此剛開始閱讀JFinal的文檔時徹底不會配置,可是認真梳理一下,從頭開始一步步的導入支撐的文件,並結合本身的MVC體會,算是會用JFinal了。在後面的一段時間內,我會常常與JFinal打交道,因此之後還會寫一些對JFinal的使用感悟。

相關文章
相關標籤/搜索