第一次创建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=true

(3)、_JFinalDemoGenerator.java文件(创建Model层)

package com.JfinalTest.tool;

import javax.sql.DataSource;

import com.JfinalTest.config.config;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.generator.Generator;
import com.jfinal.plugin.druid.DruidPlugin;

public class _JFinalDemoGenerator {
	
	public static DataSource getDataSource() {
		PropKit.use("com/JfinalTest/config/jdbc.properties");
		DruidPlugin druidPlugin = config.createDruidPlugin();
		druidPlugin.start();
		return druidPlugin.getDataSource();
	}
	
	public static void main(String[] args) {
		// base model 所使用的包名
		String baseModelPackageName = "com.JfinalTest.Model.base";
		// base model 文件保存路径
		String baseModelOutputDir = PathKit.getWebRootPath() + "/src/main/java/com/JfinalTest/Model/base";
		
		// model 所使用的包名 (MappingKit 默认使用的包名)
		String modelPackageName = "com.JfinalTest.Model";
		// model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
		String modelOutputDir = baseModelOutputDir + "/..";
		
		// 创建生成器
		Generator generator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);
		// 设置是否生成链式 setter 方法
		generator.setGenerateChainSetter(false);
		// 添加不需要生成的表名
		generator.addExcludedTable();
		// 设置是否在 Model 中生成 dao 对象
		generator.setGenerateDaoInModel(true);
		// 设置是否生成链式 setter 方法
		generator.setGenerateChainSetter(true);
		// 设置是否生成字典文件
		generator.setGenerateDataDictionary(false);
		// 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为 "User"而非 OscUser
		generator.setRemovedTableNamePrefixes("t_");
		// 生成
		generator.generate();
	}
}

(4)、start.java文件(启动Jfinal项目)

package com.JfinalTest.tool;

import com.jfinal.core.JFinal;

public class start {

	public static void main(String[] args) {
		//eclipse
		JFinal.start("src/main/webapp",8080,"/",5);
		
/*		//IDEA
		JFinal.start("src/main/webapp",80,"/");*/
	}
}

7、启动项目

在这里插入图片描述
这样表示启动成功:
在这里插入图片描述

我创建的项目文件:
链接:https://pan.baidu.com/s/1Bokf4SOeeTaPHcvQ9RjjUw
提取码:9ch8

猜你喜欢

转载自blog.csdn.net/qq_39736055/article/details/84259257