zoukankan      html  css  js  c++  java
  • 如何使用JFinal开发javaweb

    介绍开始:

    编辑器:MyEclipse;

    数据库:MySQL;

    服务器:tomcat;

    1 首先新建web项目

    要强调的是Target runtime必须选择为None。然后点击两次Next,选中创建web.xml。finish~~~

    2 导入支撑项目的jar包(包括JFinal、Mysql、JDBC)

    必须导入这四个jar包。其中:(1) c3p0是支撑JDBC的;(2)jfina是支撑jfinal的,jfinal默认使用freemarker作为MVC的View,所以也要导入;(3)mysql-conncetor是支撑Mysql连接的

    3 写java代码

    在src文件夹中创建四个package,分别为config,controller, model,service。其中config包里是全局配置文件,controller对应的就是MVC中的Control,model与service组成MVC的Model。Control就是控制前后台的交互,model对应数据库的各个表以及派生model类,service就是写sql语句的地方微笑

    config中有三个方法最重要configConstant、configPlugin、configRoute

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

    (2)configPlugin:此方法用来配置 JFinal 的 Plugin,比如配置 C3p0 数据库连接池插件与 ActiveRecord数据库访问插件

    (3)configRoute:此方法用来配置 JFinal 访问路由,比如将”/hello”映射到 HelloController 这个控制器

    说完这些我们来看代码

    ↓此为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.java

    [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的使用感悟。

  • 相关阅读:
    (转)50道JavaScript基础面试题(附答案)
    (转)44 道 JavaScript 难题
    web本地存储(localStorage、sessionStorage)
    (转)在 vue-cli 脚手架中引用 jQuery、bootstrap 以及使用 sass、less 编写 css [vue-cli配置入门]
    (转)Vue 爬坑之路(四)—— 与 Vuex 的第一次接触
    vue 路由传参 params 与 query两种方式的区别
    (转)Vue 爬坑之路(三)—— 使用 vue-router 跳转页面
    【半原创】将js和css文件装入localStorage加速程序执行
    SqlAgent备份脚本
    读<css世界>笔记之img标签
  • 原文地址:https://www.cnblogs.com/yang82/p/7806228.html
Copyright © 2011-2022 走看看