jfinal学习(1)环境搭建
jfinal:
JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python等动态语言的开发效率。
jfinal官网:https://www.jfinal.com/doc (有需要的搭建可以去官网看看)
idea搭建jfinal项目实战
第一步:创建一个maven的web项目:jfinal_demo_web
到这就搭建好一个maven的web项目了,不过此maven项目还缺少点东西,需要自己去填充:
新生产的maven项目如下图左侧所示:我们需要把java,resources资源文件夹补充上,由于现在采用jsp使用较少,所以我会吧jsp也去除,,修改后如下图右侧所示
注意,到这还需要把新创建的文件夹资源化:如下图所示
到这初始化maven的web项目已经搭建成功了,大家如果感觉麻烦的话,可以参考我之前的自定义maven骨架的教程,那样辛苦一次就可以复用了,我在这就不详细说自定义骨架这块了
第二步:初始化jfinal配置
引入jfinal jar 默认是jetty服务器,在此项目中我会对比三种服务器的形式启动: undertow | jetty | tomcat
<?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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.huhy</groupId> <artifactId>jfinal_demo_web</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>jfinal_demo_web Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!-- 三种服务器的启动对比: 注意:都要引用对应依赖 undertow: 1:启动类方式:UndertowServer.start(DemoConfig.class, 8088, true); jetty: jetty-server 依赖的 scope 为 provided,仅用于开发阶段,部署时不需要,打包时也会自动跳过。 这里特别注意一下:如果是使用 IDEA 开发,scope 仍然得设置成为 compile, 否则提示缺少 jar 包,在打包的时候记得要改回 provided,避免打进一些不需要的 jar 包 1:启动类方式: JFinal.start("jfinal_demo_web/src/main/webapp", 7000, "/", 5); tomcat: <packaging>war</packaging> 1:启动类方式: JFinal.start("jfinal_demo_web/src/main/webapp", 7000, "/", 5); --> <!--<dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal-undertow</artifactId> <version>1.4</version> </dependency>--> <!--jetty jetty-server 依赖的 scope 为 provided,仅用于开发阶段,部署时不需要,打包时也会自动跳过。 这里特别注意一下:如果是使用 IDEA 开发,scope 仍然得设置成为 compile, 否则提示缺少 jar 包,在打包的时候记得要改回 provided,避免打进一些不需要的 jar 包 演示采用jetty服务器进行操作 --> <dependency> <groupId>com.jfinal</groupId> <artifactId>jetty-server</artifactId> <version>2018.11</version> <!--<scope>provided</scope>--> <scope>compile</scope> </dependency> <dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal</artifactId> <version>3.5</version> </dependency> </dependencies> <build> <finalName>jfinal_demo_web</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.2</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>../distribution/proxy-client-${project.version}/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
第三步:配置全局类 demoConfig 和web.xml
web.xml
democonfig:
第四步:启动测试: http://localhost:7000/hello
undertow | jetty | tomcat 服务器对比:
请参考:https://www.cnblogs.com/maybo/p/7784687.html
关于怎么是jfinal和上述三个服务器的整合步骤请继续往下看:
undertow整合步骤:
第一步:引入jar包:
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal-undertow</artifactId>
<version>1.4</version>
</dependency>
第二步:启动类上启动方式:
UndertowServer.start(DemoConfig.class, 8088, true);
第三步:启动测试:
看到控制台打印出这句代表是undertow服务器启动的项目
jetty启动:
第一步,引入jar包
<!--jetty jetty-server 依赖的 scope 为 provided,仅用于开发阶段,部署时不需要,打包时也会自动跳过。 这里特别注意一下:如果是使用 IDEA 开发,scope 仍然得设置成为 compile, 否则提示缺少 jar 包,在打包的时候记得要改回 provided,避免打进一些不需要的 jar 包 演示采用jetty服务器进行操作 --> <dependency> <groupId>com.jfinal</groupId> <artifactId>jetty-server</artifactId> <version>2018.11</version> <!--<scope>provided</scope>--> <scope>compile</scope> </dependency>
第二步:启动类设置
JFinal.start("jfinal_demo_web/src/main/webapp", 7000, "/", 5);
第三步:测试
tomcat更简单:
去除依赖jar的影响,jetty, undertow这两个相关依赖去除,
打包方式改为war
<packaging>war</packaging>
执行mvn clean package 把生成的war包放入tomcat即可