Perfree的个人博客-JFinal-IDEA下Maven+Tomcat开发入门(二)

JFinal-IDEA下Maven+Tomcat开发入门(二)

perfree
2019-02-24 / 0 评论 / 1268 阅读

由于 jfinal 热加载是通过监控 class 文件是否被更新而触发的,但 IDEA 默认不支持自动编译,所以其 class 文件在开发过程中不会被更新,所以 IDEA 之下默认并不支持热加载,可以在网上找一找开启 IDEA 自动编译的配置来支持


也可以使用Shift + F9的快捷键启动,在修改代码后,再使用Ctrl + F5的方式重启,此方式比用传统的 maven jetty plugin要快速,注意使用 Ctrl + F5重启前需要使用Alt + 5 将焦点转向debug窗。IDEA下开发尽量使用快捷键,避免使用鼠标,将极大提升开发率。
摘至官方文档IDEA下开发

创建项目

本项目代码地址:jfinal-demo-02-idea-maven
新建maven项目,下一步

这一步没什么好说的,直接下一步:

Finish:

完成之后选中项目目录右键,点击open module settings.
选中module,选中我们新建的项目,点击添加:

选择web:

将路径修改一下,ok,如图:

这个时候项目目录结构如下:

引入依赖

在pom文件引入必要依赖:

<dependency>
	<groupId>com.jfinal</groupId>
	<artifactId>jfinal</artifactId>
	<version>3.5</version>
</dependency>

<build>
	<finalName>jfinal-web-demo-provider</finalName>
	<plugins>
		<plugin>
			<!--maven对应的tomcat插件,启动tomcat的时候使用-->
			<groupId>org.apache.tomcat.maven</groupId>
			<artifactId>tomcat7-maven-plugin</artifactId>
			<version>2.2</version>
			<configuration>
				<port>8081</port>
				<path>/</path>
				<uriEncoding>utf-8</uriEncoding>
			</configuration>
		</plugin>
	</plugins>
</build>

完整pom文件一览:

<?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.perfree</groupId>
    <artifactId>jfinal-demo02-idea-maven</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <dependencies>
        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>jfinal</artifactId>
            <version>3.5</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>jfinal-web-demo-provider</finalName>
        <plugins>
            <plugin>
                <!--maven对应的tomcat插件,启动tomcat的时候使用-->
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8081</port>
                    <path>/</path>
                    <uriEncoding>utf-8</uriEncoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

web.xml配置

这里配置demo.DemoConfig,意思是所有的请求都要拦截经过demo包下的DemoConfig类,这个要和你具体创建的config类对应

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <filter>
        <filter-name>jfinal</filter-name>
        <filter-class>com.jfinal.core.JFinalFilter</filter-class>
        <init-param>
            <param-name>configClass</param-name>
            <param-value>demo.DemoConfig</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>jfinal</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

DemoConfig

新建demo包,在demo包下新建DemoConfig继承JFinalConfig并实现其中的方法:

package demo;

import com.jfinal.config.*;
import com.jfinal.template.Engine;

/**
 * @ClassName DemoConfig
 * @Description TODO(DemoConfig配置,继承JFinalConfig)
 * @Author Perfree
 * @Date 2018/10/16 12:32
 * @Version 1.0
 */
public class DemoConfig extends JFinalConfig {
    public void configConstant(Constants constants) {
        
    }

    public void configRoute(Routes routes) {

    }

    public void configEngine(Engine engine) {

    }

    public void configPlugin(Plugins plugins) {

    }

    public void configInterceptor(Interceptors interceptors) {

    }

    public void configHandler(Handlers handlers) {

    }
}

在configConstant方法里开启开发模式,注意开发模式只能参照文章开头提到的方式运行,因为idea并不自动编译:

public void configConstant(Constants constants) {
        //开启开发模式
        constants.setDevMode(true);
    }

在configRoute方法里配置路由:

public void configRoute(Routes routes) {
        //配置路由,/hello默认访问HelloController的index()方法,如果是/hello/sayHello,将访问HelloController的sayHello方法
        routes.add("/hello",HelloController.class);
    }

HelloController

在demo包下创建HelloController继承Controller:

package demo;

import com.jfinal.core.Controller;

/**
 * @ClassName HelloController
 * @Description TODO(HelloController继承Controller)
 * @Author Perfree
 * @Date 2018/10/16 12:37
 * @Version 1.0
 */
public class HelloController extends Controller {
}

在HelloController中书写inde()方法:

public void index(){
        renderText("Hello JFinal By Idea+Maven");
    }

启动测试

点击maven projects,tomcat7:run 如下图:

出现如下内容,启动成功:

接着访问项目,路径http://127.0.0.1:8081/hello

ok,访问成功~

上一篇 下一篇
评论
说点什么吧?
OωO 取消
  • |´・ω・)ノ
  • ヾ(≧∇≦*)ゝ
  • (☆ω☆)
  • (╯‵□′)
  •  ̄﹃ ̄
  • (/ω\)
  • →_→
  • (ノ°ο°)ノ
  • ⌇●﹏●⌇
  • (ฅ´ω`ฅ)
  • φ( ̄∇ ̄o)
  • ヾ(´・ ・`。)ノ"
  • (ó﹏ò。)
  • Σ(っ °Д °;)っ
  • ( ,,´・ω・)ノ
  • ╮(╯▽╰)╭
  • (。•ˇ‸ˇ•。)
  • >﹏<
  • ( ๑´•ω•)
  • "(´っω・`。)
  • "(ㆆᴗㆆ)

微信

支付宝

来首音乐
每日一句
正在加载...
最新回复