天天看點

Jfinal jsp整合執行個體Demo

  1. 目錄結構
    Jfinal jsp整合執行個體Demo
  2. DemoConfig類
package demo.config;

import com.jfinal.config.*;
import com.jfinal.core.JFinal;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.c3p0.C3p0Plugin;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.render.ViewType;
import com.jfinal.template.Engine;
import demo.pojo.User;
import demo.controller.UserController;

/**
 * @author yuyang
 */
public class DemoConfig  extends JFinalConfig {
    @Override
public void configConstant(Constants me) {

        loadPropertyFile("config.properties");
//    PropKit.use("config.properties");
//    me.setBaseViewPath("/template");
//    me.setDevMode(PropKit.getBoolean("devMode", true));
    me.setViewType(ViewType.JSP);

}
    @Override
    public void configRoute(Routes me) {
        me.add("/", UserController.class);
        me.add("/user", UserController.class);
    }

        public void configEngine(Engine engine) {

    }

    @Override
    public void configPlugin(Plugins me) {
//        DruidPlugin druidPlugin=new DruidPlugin("jdbc:mysql://localhost/jfinal_demo","root","123456","com.mysql.jdbc.Driver");
//        me.add(druidPlugin);
//
//        me.add(getActiveRecordPlugin(druidPlugin));
        /**
         * 配置Mysql支援
         */
        //配置c3p0資料庫連接配接池插件
        C3p0Plugin cp = new C3p0Plugin(getProperty("jdbcUrl"), getProperty("user").trim(), getProperty("password").trim());
        me.add(cp);
        //配置ActiveRecord插件
        ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
        me.add(arp);
        arp.setShowSql(true);
        //映射Blog表到Blog模型
        arp.addMapping("user", User.class);
        /**
         * 配置Oracle支援
         */
//        //配置c3p0資料庫連接配接池插件
//        C3p0Plugin cp = new C3p0Plugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password"),getProperty("jdbcDriver"));
//        /*//配置Oracle驅動
//        cp.setDriverClass(getProperty("jdbcDriver"));*/
//        me.add(cp);
//        //配置ActiveRecord插件
//        ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
//        me.add(arp);
//        //配置Oracle方言
//        arp.setDialect(new OracleDialect());
//        //配置屬性名(字段名)大小寫不敏感容器工廠
//        arp.setContainerFactory(new CaseInsensitiveContainerFactory());
//        //映射test_blog表到Blog模型(我在Oracle資料庫中建的表是這個表名)
//        arp.addMapping("TEST_BLOG","ID", Blog.class);
    }
    private ActiveRecordPlugin getActiveRecordPlugin(DruidPlugin druidPlugin) {
        ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
        //這裡是資料庫表名,主鍵
        arp.addMapping("user","id", User.class);
        return arp;
    }

    @Override
    public void configInterceptor(Interceptors me) {

    }

    @Override
    public void configHandler(Handlers me) {

    }

    public static void main(String[] args) {
        JFinal.start("src/main/webapp",81,"/");
    }
}
           
  1. UserController
package demo.controller;

import com.jfinal.core.Controller;
import demo.pojo.User;

import java.util.List;

/**
 * @author yuyang
 * @version V1.0
 * @Package demo
 * @Description: TODO
 * @date 2019-4-10 8:41
 */
public class UserController extends Controller {
    /**
     * 直接通路user位址進入list.jsp
     */
    public void index(){
        List<User> users = User.userDao.find("select * from user");
        setAttr("users",users);
        System.out.print("得到的資料是"+users.size()+"條");
        render("/list.jsp");
    }
    /**
     * 通路user/form進入from.jsp頁面
     */
    public void form(){
        Integer id = getParaToInt(0);
        if(id!=null&&id>0){
            setAttr("user",User.userDao.findById(id));
        }
        render("form.jsp");

    }
    /**
     * 送出方法
     */
    public  void submit(){
        User user = getModel(User.class,"user");
        user.save();
        redirect("/user");
    }
    /**
     * 編輯方法
     */
    public void edit(){

        form();
    }
    /**
     * 删除方法
     */
    public void del(){
        User.userDao.deleteById(getPara(0));
        redirect("/user");
    }
    /**
     * 更新方法
     */
    public void update(){
        User user = getModel(User.class,"user");
        user.update();
        redirect("/user");
    }
}
           
  1. user類
package demo.pojo;

import com.jfinal.plugin.activerecord.Model;

/**
 * @author yuyang
 * @version V1.0
 * @Package demo
 * @Description: TODO
 * @date 2019-4-10 8:41
 */

public class User extends Model<User> {
    //Model的dao方法
    public static final User userDao = new User();
    //靜态常量
    public static final int SEX_MALE = 1;//男
    public static final int SEX_FEMAQL = 2;//女性
}
           
  1. config.properties

    jdbcUrl=jdbc:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=utf8 user=root password = devMode =true showSql = true

  2. log4g.properties
log4j.rootLogger=WARN, stdout, file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n

# Output to the File
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=F/jfinal-demo.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
           
  1. form.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java"  pageEncoding="UTF-8" %>
<link rel="stylesheet" type="text/css" href="/bootstrap/css/bootstrap.css">
<html>
<head>
    <title>使用者注冊</title>
</head>
<body>
<div id="main" class="container">
    <div class="row">
        <div class="col-lg-6 col-sm-6 col-md-6">

            <form action="${user==null?'/user/submit':'/user/update'}" method="post">
                <input type="hidden" name="user.id" value="${user.id}">
                <div class="form-group">
                    <label>使用者名</label>
                    <input type="text" name="user.username"  value="${user.username}" class="form-control" placeholder="請輸入使用者名">
                </div>
                <div class="form-group">
                    <label>年齡</label>
                    <input type="text" name="user.age"value="${user.age}" class="form-control" placeholder="請輸年齡">
                </div>
                <div class="form-group">
                    <label>性别</label>
                    <div class="radio-inline">
                        <input type="radio" name="user.sex"<c:if test="${user.sex!=null && user.sex==1}">checked="checked" </c:if>value="1">男
                    </div>
                    <div class="radio-inline">
                        <input type="radio"name="user.sex"<c:if test="${user.sex!=null && user.sex==2}">checked="checked" </c:if> value="2">女
                    </div>
                </div>
                <div class="form-group">
                    <label>備注</label>
                    <textarea name="user.remark" value="${user.remark}" style="height: 70px" class="form-control"  placeholder="請輸入備注">${user.remark}</textarea>
                </div>
                <div style="text-align: center" >
                    <button type="submit" class="btn btn-primary" style="width: 120px">送出</button>
                </div>
            </form>
        </div>
    </div>
</div>
</body>
</html>

           
  1. list.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>使用者清單</title>
</head>
<link href="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/jquery/2.2.2/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
<body>
<div class="pull-left">
    <a href="/user/form" class="btn bg-primary">新增使用者</a>

</div>
<table class="table table-bordered table-hover">
    <thead>
    <tr>
        <th colspan="5" align="center">使用者資訊表</th>
    </tr>
    <tr>
        <th>使用者ID</th>
        <th>姓名</th>
        <th>性别</th>
        <th>年齡</th>
        <th>使用者描述</th>
        <th>操作</th>
    </tr>
    </thead>
    <tbody>
    <c:forEach items="${users}" var="user">
        <tr>
            <td>${user.id}</td>
            <td>${user.username}</td>
            <td>${user.sex}</td>
            <td>${user.age}</td>
            <td>${user.remark}</td>
            <td><a class="btn btn-primary btn-sm" href="/user/edit/${user.id}">修改</a>  <a class="btn btn-danger btn-sm"
                                                                                          href="/user/del/${user.id}">删除</a>
            </td>
        </tr>
    </c:forEach>
    </tbody>
</table>

</body>
</html>
           
  1. pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <packaging>war</packaging>

  <name>jfinal-test</name>
  <groupId>com.hand</groupId>
  <artifactId>jfinal-test</artifactId>
  <version>1.0-SNAPSHOT</version>

  <build>
    <plugins>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <version>6.1.7</version>
        <configuration>
          <connectors>
            <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
              <port>8888</port>
              <maxIdleTime>30000</maxIdleTime>
            </connector>
          </connectors>
          <webAppSourceDirectory>${project.build.directory}/${pom.artifactId}-${pom.version}</webAppSourceDirectory>
          <contextPath>/</contextPath>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>com.jfinal</groupId>
      <artifactId>jfinal</artifactId>
      <version>3.3</version>
    </dependency>
    <dependency>
      <groupId>com.jfinal</groupId>
      <artifactId>jetty-server</artifactId>
      <version>8.1.8</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taglibs</groupId>
      <artifactId>taglibs-standard-spec</artifactId>
      <version>1.2.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taglibs</groupId>
      <artifactId>taglibs-standard-impl</artifactId>
      <version>1.2.1</version>
    </dependency>
    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.37</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.29</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-jsp</artifactId>
      <version>9.3.0.M1</version>
    </dependency>
  </dependencies>
</project>
           

總結:第一次搭建項目遇見很多錯誤,幾乎都是jar包缺失引起,要明白每個功能對應得jar依賴,不要盲目去抄襲,項目無論怎樣報錯,都是可以解決的,重要的是有耐心,一步一步去調試,不積跬步無以至千裡。緻每個初學者,加油!