专栏首页changyandouidea+springboot+freemarker+devtools

idea+springboot+freemarker+devtools

一整套技术栈,四个元素包括:idea、springboot、freemarker、devtools。

idea:开发工具

springboot:开发框架

freemarker:模板引擎

devtools:热部署组件

在使用spring boot创建mvc项目的时候,自然需要明确的是 m、v和c。

那么在view层如何使用controller和template中的模板关联上呢?

controller:

package com.cyd.test;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/test")
public class CJFXController {
    @RequestMapping("/index")
    public ModelAndView index(ModelAndView mv) {
        mv.setViewName("index");
        return mv;
    }
}

view层级关系:

resource
    template 
                index.html

紧接着需要解决的关键点是在index.html中对于css、js、以及图片等文件的引入,需要使用基本路径如下图这样:

配置拦截器:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.Arrays;

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
    @Autowired
    PathInterceptor pathInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {     registry.addInterceptor(pathInterceptor).addPathPatterns("/**");
}
}

PathInterceptor

@Component
public class PathInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        String path = request.getContextPath();
        String scheme = request.getScheme();
        String serverName = request.getServerName();
        int port = request.getServerPort();
        String basePath = scheme + "://" + serverName + ":" + port + path;
        request.setAttribute("basePath", basePath);//通过这种方式的拦截器的配置,才能够在html中使用basePath,否则就会导致模板报错,无法正常进行
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                           ModelAndView modelAndView) throws Exception {
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
    }

上面是从controller到view以及view中的静态文件引入的几个关键点。

但是如果你开始着手做这个流程的时候会发现,每次修改后都需要手动重启调试,这样过于浪费时间。那么我们就想办法配置自动运行的热部署环境。

①配置pom.xml

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <!-- optional=true,依赖不会往下传递,如果有项目依赖本项目,并且想要使用devtools,需要重新引入 -->
    <optional>true</optional>
    <scope>runtime</scope>
</dependency>

②配置自动编译项目

File->Settings->Build,Execution,Deployment->Complier->Build project automatically

③关键是registry的设置,有的同学找不到,下面告诉你这个东西它在哪儿?

设置完成 complier.automake.allow.when.app.running 后可以发现,修改project下的文件,保存后,对应的项目会自启动。

本文分享自微信公众号 - changyandou(changyandou),作者:长烟斗火枪红帽子鹿皮鞋

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《Spring Boot极简教程》第5章 Spring Boot自动配置原理

    我们可以看到有783个java文件。spring-boot核心工程有551个java文件。从上面的java文件数量大致可以看出,SpringBoot技术框架的核...

    一个会写诗的程序员
  • 第5章 Spring Boot自动配置原理

    我们可以看到有783个java文件。spring-boot核心工程有551个java文件。从上面的java文件数量大致可以看出,SpringBoot技术框架的核...

    一个会写诗的程序员
  • 《Spring Boot 实战:从0到1》第4章 Spring Boot自动配置原理第3章 Spring Boot自动配置原理

    我们可以看到有783个java文件。spring-boot核心工程有551个java文件。从上面的java文件数量大致可以看出,SpringBoot技术框架的核...

    一个会写诗的程序员
  • 从零开始搭建个人博客(spring boot)-实现列表,详情,分页功能

    ①settings->Build,Execution,Deployment->compiler,勾上

    AI码师
  • Spring Boot整合模板引擎

    Spring Boot支持FreeMarker模板引擎,它是在Spring MVC基础上加入了自动配置的特性,在使用FreeMarker模板引擎的时候,需要在r...

    itlemon
  • Eclipse手动搭建SpringBoot框架和整合FreeMaker教程详解

    请求路径为Controller类中注解@RequestMapping("/helloIndex")自定义的值

    静谧星空TEL
  • SpringBoot集成FreeMarker

    给大家简单介绍一下springboot 集成FreeMarker 过程很简单,5分钟即可。 首先在项目中增添依赖spring-boot-starter-free...

    dalaoyang
  • 加速 SpringBoot 应用开发,官方热部署神器真带劲!

    SpringBoot官方开发工具,如果你的应用集成了它,即可实现热部署和远程调试。

    macrozheng
  • SpringBoot静态化

    src/main/resources/templates/*.html,默认是从templates文件夹里找html资源。

    南风
  • Spring Boot 开发应用热部署

    spring-boot-devtools 实现热部署 想在Spring Boot中使用该功能非常简单,添加依赖: <!-- 热部署模块 --> <depende...

    斯武丶风晴
  • SpringBoot【实现热部署-devtools】

      本文介绍下在IDEA中项目热部署的两种方式,因为如果每次我们修改下页面的代码都需要重新启动的话那么效率就太低了。

    用户4919348
  • SpringBoot之SpringBoot整合devtools热部署

    勾选compiler.automake.allow.when.app.running

    彼岸舞
  • SpringBoot 集成Freemarker

    更多更详细的请看 springboot的两大常用模版:thymeleaf和freemarker

    多凡
  • SpringBoot集成Thymeleaf

    上一篇给大家介绍了springboot整合freemarker,这一片来继续为大家介绍一种模板thymeleaf。 首先在项目中增添thymeleaf依赖spr...

    dalaoyang
  • SpringBoot2.x系列教程(二十六)Springboot集成freemarker

    FreeMarker是一款模板引擎:即基于模板和数据源生成输出文本(html网页,配置文件,电子邮件,源代码)的通用工具。它是一个java类库。

    程序新视界
  • 【程序源代码】SpringBoot练手项目

    今天给大家讲一讲:SpringBoot练手项目,内容相对比较简单。开发时使用的idea工具,大家按照如下步骤进行操作就可以了。

    程序源代码
  • Spring Boot 五种热部署方式

    在SpringBoot中,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,则刷新页面是得不到修改后的页面的,因此我们可以在application.prop...

    KEN DO EVERTHING
  • SpringBoot一些很实用的功能

    然后这个图案是可以自定义的,在src/main/resource下新建一个banner.txt文件,然后去http://patorjk.com/software...

    lyb-geek
  • SpringBoot系列之IDEA项目中设置热部署教程

    创建一个SpringBoot Initialize项目,详情可以参考我之前博客:SpringBoot系列之快速创建项目教程

    SmileNicky

扫码关注云+社区

领取腾讯云代金券