1. 程式人生 > >第一次建立Jfinal框架

第一次建立Jfinal框架

第一次建立Jfinal框架

這裡是記錄一下我的電腦上eclipse建立Jfinal專案時要注意的一些問題。

1、首先建立Maven專案

在這裡插入圖片描述
直接點選下一步
我們需要的是web專案,所以選擇webapp這一項
在這裡插入圖片描述
在這裡插入圖片描述

2、建立pom.xml檔案,下載相關jar包

在整個專案上右鍵點選,選擇.xml檔案。這是我用的pom.xml檔案的程式碼,來自於以前第一次做的專案裡面,基本能滿足需要。

<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> <groupId>com.dormitory</groupId> <artifactId>dormitory</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version>
<name>dormitory Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> <!-- log4j日誌檔案管理包版本 --
> <slf4j.version>1.7.0</slf4j.version> <log4j.version>1.2.14</log4j.version> </properties> <!-- 使用阿里 maven 庫 --> <repositories> <repository> <id>ali-maven</id> <url>http://maven.aliyun.com/nexus/content/groups/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> </repository> </repositories> <!-- 新增快照版本庫,updatePolicy: always、daily、interval、never --> <!-- repositories> <repository> <id>sonatype-nexus-snapshots</id> <name>Sonatype Nexus Snapshots</name> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> </snapshots> </repository> </repositories --> <dependencies> <!-- 簡訊驗證 --> <dependency> <groupId>com.github.qcloudsms</groupId> <artifactId>sms</artifactId> <version>0.9.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.jfinal</groupId> <artifactId>jetty-server</artifactId> <version>8.1.8</version> <!-- 此處的 scope 值為 compile 僅為支援 IDEA 下啟動專案 打 war 包時需要改成 provided,以免將一些無用的 jar 打進去 --> <scope>compile</scope> </dependency> <dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal-java8</artifactId> <version>3.3</version> </dependency> <dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal</artifactId> <version>3.3</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.44</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.29</version> </dependency> <dependency> <groupId>com.jfinal</groupId> <artifactId>cos</artifactId> <version>2017.5</version> </dependency> <!-- json --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.24</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> <!-- 匯出excel表格相關依賴 --> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17-beta1</version> </dependency> <!-- 日誌檔案管理包 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> </dependencies> <build> //finalName要記得修改 <finalName>專案的名稱</finalName> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.1.8.v20121106</version> <configuration> <stopKey>stop</stopKey> <stopPort>5599</stopPort> <webAppConfig> <contextPath>/</contextPath> </webAppConfig> <scanIntervalSeconds>5</scanIntervalSeconds> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>80</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> </configuration> </plugin> </plugins> </build> </project>

3、修改web.xml檔案

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

    <filter>
    	<filter-name>jfinal</filter-name>
    	<filter-class>com.jfinal.core.JFinalFilter</filter-class>
    	<init-param>
   			 <param-name>configClass</param-name>
   			 //記得修改這裡
   			 <param-value>com.專案名稱.config.config</param-value>
   		 </init-param>
	</filter>


	<filter-mapping>
		<filter-name>jfinal</filter-name>
		<url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

4、建立lo4j.properties檔案

在這裡插入圖片描述
程式碼如下:

log4j.rootLogger=INFO, stdout, file
log4j.appender.stdout.Target=System.out
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=./myapp.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

# Druid
log4j.logger.druid.sql=warn,stdout
log4j.logger.druid.sql.DataSource=warn,stdout
log4j.logger.druid.sql.Connection=warn,stdout
log4j.logger.druid.sql.Statement=debug,stdout
log4j.logger.druid.sql.ResultSet=warn,stdout

5、建包之前的錯誤處理

剛建立好的maven專案結構是這樣的:
在這裡插入圖片描述
開啟Build Path發現有錯誤,此時我們把這兩個missing的資料夾Remove掉(resource資料夾也可以remove掉),然後Add Folder新增上第一個資料夾/src/mian/java:
在這裡插入圖片描述
在這裡插入圖片描述在這裡插入圖片描述
在這裡插入圖片描述
之後就可以得到我們想要的結構,建立兩個包:tool包和config包
在這裡插入圖片描述

6、config包和tool包

在這裡插入圖片描述

(1)、config.java程式碼(基本配置檔案)

package com.JfinalTest.config;

import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.json.JacksonFactory;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.PropKit;
import com.jfinal.log.Log4jLogFactory;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.template.Engine;



public class config extends JFinalConfig{
	
	//基礎設定
	public void configConstant(Constants me)
	{
		//PropKit 讀取工具
	    PropKit.use("com/JfinalTest/config/jdbc.properties");
	    me.setDevMode(PropKit.getBoolean("devMode"));
	    me.setEncoding("UTF-8");
	    me.setJsonFactory(new JacksonFactory());
	    me.setJsonDatePattern("yyyy-MM-dd");
	    
	    me.setLogFactory(new Log4jLogFactory());
	}
	
	
	
	

	//路由分包
    public void configRoute(Routes me) {

    }
    
    //排至前端模板引擎
    public void configEngine(Engine me) { 	
    	
    }

    
	public static DruidPlugin createDruidPlugin() {
		return new DruidPlugin(PropKit.get("jdbc_url"), PropKit.get("jdbc_username"), PropKit.get("jdbc_password").trim());
	}
    

    public void configPlugin(Plugins me) {  	

/*    	DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbc_url"), PropKit.get("jdbc_username"), PropKit.get("jdbc_password").trim());
        me.add(druidPlugin);
    			
        ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
        
        arp.setBaseSqlTemplatePath(PathKit.getRootClassPath());
    	arp.addSqlTemplate("Tool.sql");
    	arp.setShowSql(true);
        
     
       _MappingKit.mapping(arp);
        me.add(arp);
       */
       
    }
    

    //攔截器,配置檔案裡的為全域性攔截器
    public void configInterceptor(Interceptors interceptors) {
    
    }
    

   
    public void configHandler(Handlers me) {
    
    	//me.add(new ResourceHandler());
    }
    
    
    public void afterJFinalStart() {
    }
     
 
    public void beforeJFinalStop() {
    }
    
}

(2)、jdbc.properties檔案

jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/資料庫名稱?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
jdbc_username=root
jdbc_password=
devMode