Spring Boot整合模板引擎freemarker以及servlet

spring boot集成freemarker 1. 添加依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> 2. 配置yml: spring: freemarker: template-loader-path: classpath:/te 阅读详情

上回分享了第一个spring boot程序之后,相信大家对spring boot已经有了初步的认识,这次分享下在springboot中使用servlet和模板引擎freemarker


一  依赖的引入

 <dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-freemarker</artifactId>
  </dependency>

二 编写配置文件application.properties

spring.freemarker.allow-request-override=false
spring.freemarker.cache=false
spring.freemarker.check-template-location=true
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=false
#spring.freemarker.prefix=
#spring.freemarker.request-context-attribute=
#spring.freemarker.settings.*=
#spring.freemarker.suffix=.ftl
#spring.freemarker.template-loader-path=classpath:/templates/ #comma-separated list
#spring.freemarker.view-names= # whitelist of view names that can be resolved


默认情况下springboot会去src/main/resources/templates下面找模板页面文件,也可以根据需要进行修改

三 编写测试用的controller和模板文件

package com.debug;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Controller
public class FMController {
  
  
   @RequestMapping("/useFm")
   public String  useFm(HttpServletRequest req,HttpServletResponse res) {
	   
	  String name=req.getParameter("name");
	  
	  req.setAttribute("name", name);
	  
	
	   return "/useFm";
   }
}

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
     <head>	
    
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">	
	  <title>fm测试</title>
	
	</head>
		<body >
		  <div id="fixed_body">
             ${name}
		  </div>
	</body> 
</html>

运行效果如下:



spring boot也提供了一个自己的模板引擎,因为我开发使用freemarker较多所以就用它来写例子,大家可以选择其他的如velocity等


四  在springboot中使用servlet

有时可能由于历史遗留问题老项目中存在很多servlet如验证码、文件上传等,重新写费时费力,这种情况下就可以保留原先的,使用注解就可以解决

1 改装之前的servlet

package com.debug.servlet;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet(urlPatterns="/imageCode.do",name="ImageCodeServlet")
public class ImageCodeServlet extends HttpServlet{
	private static final long serialVersionUID = 1L;
	private static int WIDTH = 100;
    private static int HEIGHT = 44;

    public char[] generateCheckCode() {
        // 定义验证码的字符表
        String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        char[] rands = new char[4];
        for (int i = 0; i < 4; i++) {
            int rand = (int) (Math.random() * 36);
            rands[i] = chars.charAt(rand);
        }
        return rands;
    }

    public void drawRands(Graphics g, char[] rands) {
        g.setColor(Color.DARK_GRAY);
        g.setFont(new Font(null, Font.ITALIC | Font.BOLD, 25));
        // 在不同的高度上输出验证码的每个字符
        g.drawString("" + rands[0], 1, 30);
        g.drawString("" + rands[1], 25, 35);
        g.drawString("" + rands[2], 45, 29);
        g.drawString("" + rands[3], 65, 25);
    }

    public void drawBackground(Graphics g) {
        // 画背景
        g.setColor(new Color(0xDCDCDC));
        g.fillRect(0, 0, WIDTH, HEIGHT);
        // 随机产生120个干扰点
        for (int i = 0; i < 120; i++) {
            int x = (int) (Math.random() * WIDTH);
            int y = (int) (Math.random() * HEIGHT);
            int red = (int) (Math.random() * 255);
            int green = (int) (Math.random() * 255);
            int blue = (int) (Math.random() * 255);
            g.setColor(new Color(red, green, blue));
            g.drawOval(x, y, 1, 0);
        }
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession();
        response.setContentType("image/jpeg");
        ServletOutputStream sos = response.getOutputStream();

        // 设置浏览器不缓存此图片
        response.setHeader("Pragma", "No-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);

        // 创建内存图像并获得其图形上下文
        BufferedImage image = new BufferedImage(WIDTH, HEIGHT,
                BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics();

        // 产生随机的验证码
        char[] rands = generateCheckCode();

        // 产生图像
        drawBackground(g);
        drawRands(g, rands);

        // 结束图像的绘制过程,完成图像
        g.dispose();

        // 将图像输出到客户端
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ImageIO.write(image, "JPEG", bos);
        byte[] buf = bos.toByteArray();
        response.setContentLength(buf.length);
        sos.write(buf);
        bos.close();
        sos.close();

        // 将当前验证码存入到session中
        session.setAttribute("checkCode", new String(rands));
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

就使用注解@WebServlet就行,区别不是很大


2 注册servlet

在App.java加注解@ServletComponentScan即可,如下所示

package com.debug;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

/**
 * Hello world!
 *
 */
@SpringBootApplication
@ServletComponentScan
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
        SpringApplication.run(App.class, args);
    }
}


在浏览器输入servlet的地址看下效果:




下回打算接着分享spring boot整合mybatis,初学者博客可能写的不好,随意看看有问题写评论给我得意

Spring Boot(十七):Spring Boot集成Freemarker Freemarker 简介 这是一个相当老牌的开源的免费的模版引擎。通过 Freemarker 模版,我们可以将数据渲染成 HTML 网页、电子邮件、配置文件以及源代码等。Freemarker 不是面向最终用户的,而是一个 Java 类库,我们可以将之作为一个普通的组件嵌入到我们的产品中。 来看一张来自 Freemarker 官网的图片: 可以看到,Freemarker 可以将模版和数据... 阅读详情

相关推荐

《软件工程——实践者的研究方法》重难点复习笔记(第八章——理解需求)

8项需求工程任务 inception 开始 8.1.1 identify stakeholders 定义:从软件开发中收益 例如:市场人员、销售经理、顾客、顾问、维护团队等(P139) 8.1.2 这个阶段的问题是context-free的。有三套(P140) 8.1.3 提到NFR(nonfunctional requirement)和QFD(quality

whooiif的博客 1814

OA系统六:前期准备四:整合FreeMarker;引入Servlet3.1依赖;顺带设置下logback.xml日志;

因为,在当前工程中,web应用选择Servlet3.1和FreeMarker。

小枯林的博客 1101

DFT ATPG提升coverage的方法

采用更精确的故障模型,如桥接故障模型(用于描述电路中不应连接的节点之间的短路故障)和路径延迟故障模型(考虑信号在电路路径上的传输延迟),可以使ATPG工具生成更有效的测试向量来覆盖这些特殊故障。假设电路中有一个与门的输入引脚存在固定为0的故障(stuck - at - 0),D - 算法会分析与门的其他输入以及与门输出连接的后续电路逻辑,从而确定整个电路的输入值,使得当该故障存在时,电路的输出与无故障时不同。通过增加测试向量的类型,如功能测试向量和结构测试向量的结合,可以提高故障覆盖率。

Loving_enjoy的博客 967

spring boot整合 freemarker 详细教程

spring boot 我们都知道是一个简化配置的服务,省去繁琐的xml配置,以properties和yml还有 注解形式来替代之前的xml配置。 我们首先实现spring boot 对freemarker的支持,引入pom <dependency> <gro...

374

HTML入门(详细教程),前端入门从这里开始

HTML基础教程,网页框架搭建,表单制作,了解HTML标签的基本用法,每个标签具备哪些属性。

wandertp的博客 1283

maxwell 平面变压器仿真(一)

在学习开关电源设计的时候,我们难免要设计变压器,采用有限元仿真软件MAXWELL 可以帮助我们确定变压器的励磁电感,漏感等参数。对于我们的理论分析大有裨益。但是苦于这破软件的教程真的是相当的零散,我相信大家用起来也总是苦于没有系统的教程指导,撰写本文的目的有两个,一个是记录自己使用的一些问题,一个是给大家提供一个可以参考的文档。

qq_45405656的博客 8243

Springboot集成Freemarker|超级详细,建议收藏

上一期,我是带着大家入门了SpringBoot集成Kafka,今天我再来一期Freemarker的零基础教学吧。不知道大家对kafka有多少了解,反正我就是从搭建开始,然后再加一个简单演示,这就算是带着大家了个门哈,剩下的我再后边慢慢出教程给大家说。FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

SuiHao 8800

告别兼容性困扰:在F-Droid中安全部署Termux的完整指南

本文提供了一份在F-Droid中安全部署Termux的完整指南,旨在彻底解决Android设备上的兼容性困扰。文章详细阐述了为何选择F-Droid而非Google Play商店,并逐步指导用户完成从彻底清理旧版本、安装F-Droid客户端、授予权限到最终安装配置Termux的全过程。指南还涵盖了进阶的稳定性配置、数据迁移方法以及常见问题排查,确保用户获得一个稳定、无冲突的命令行工作环境。

weixin_29224309的博客 941

spring boot整合知识(freemarker,原生servlet,filter,listener,拦截器,静态资源加载等)...

本文所有的代码都在此项目中:https://gitee.com/zhangjunqing/spring-boot/tree/master/springboot-sample 1 搭建最简单spring boot web开发框架: 1.1首先引入maven依赖: <project xmlns="http://maven.apache.org/POM/4.0.0" xm...

weixin_30662109的博客 336

西门子S7-200 SMART与施耐德ATV变频器Modbus通讯实战:从接线到稳定运行的完整指南

本文详细介绍了西门子S7-200 SMART PLC与施耐德ATV变频器之间实现稳定Modbus通讯的完整实战指南。内容涵盖从硬件接线、参数配置、PLC程序编写到触摸屏设计的全流程,并分享了提升通讯稳定性的关键技巧和常见故障排查方法,助力工业自动化系统可靠运行。

kkk56的博客 1104

『与善仁』Appium基础 — 19、元素定位工具之UI Automator Viewer

文章目录(一)uiautomatorviewer定位工具1、uiautomatorviewer介绍2、uiautomatorviewer工具打开方式3、uiautomatorviewer布局介绍4、uiautomatorviewer工具的使用 之前我们在做web页面自动化的时候就说过,元素定位是页面自动化的第一步。 同理App自动化测试的第一步,也是元素的定位。 在APP中定位元素的话,需要借助一些元素定位工具。 APP中的元素定位工具大致有三种: uiautomatorviewer Appium Ins

繁华似锦Fighting 1520

java boot_Java之Spring Boot详解(非原创)

文章大纲一、Spring Boot 概述二、Spring Boot 入门案例三、Spring Boot核心功能代码实战四、项目源码与资料下载五、参考文章一、Spring Boot 概述1. 什么是 Spring BootSpring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员...

weixin_36382534的博客 1058

STM32CubeMX之emWin移植

“前面两章介绍了SDRAM和LTDC的使用,本篇文章将介绍emWin移植到STM32。”硬件环境:STM32F429IGT6软件环境:STM32CubeMX v5.5.0...

zhang062061的专栏 2826

Spring Boot 整合 Freemarker

Spring Boot 整合 Freemarker1.Freemarker 简介2.Spring Boot 整合 Freemarker2.1 创建工程2.2 创建类2.3 其他配置 原文地址: 江南一点雨:Spring Boot 整合 Freemarker,50 多行配置是怎么省略掉的? 1.Freemarker 简介 Freemarker介绍及学习:Java模板引擎Freemarker F...

爱是与世界平行 883

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Springboot整合freemarker

FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言,不是像PHP那样成熟的编程语言。那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1226

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spring Boot 整合 Freemarker 模板引擎

Freemarker 简介 这是一个相当老牌的开源的免费的模版引擎。通过 Freemarker 模版,我们可以将数据渲染成 HTML 网页、电子邮件、配置文件以及源代码等。Freemarker 不是面向最终用户的,而是一个 Java 类库,我们可以将之作为一个普通的组件嵌入到我们的产品中。 可以看到,Freemarker 可以将模版和数据渲染成 HTML 。 Freemarker 模版后缀为 .ftl(FreeMarker Template Language)。FTL 是一种简单的、专用的语言,它不是像 J

彭楷淳在 优快云 371

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Spring Boot 整合模板引擎 Freemaker、thymeleaf

1.常用的 Spring Boot 2.x 模板引擎和官方推荐案例 1)JSP(后端渲染,消耗性能) Java Server Pages 动态网页技术,由应用服务器中的 JSP 引擎来编译和执行,再将生成的整个页面返回给客户端。优点是:可以写java代码、支持表达式语言(el、jstl)、内建函数。 但 JSP 本质上是 Servlet,它非常占用 JVM 内存。Java Web ...

weixin_30783629的博客 147

freemarker ftl模板_Spring Boot2 系列教程(十)Spring Boot 整合 Freemarker

今天来聊聊 Spring Boot 整合 Freemarker。Freemarker 简介这是一个相当老牌的开源的免费的模版引擎。通过 Freemarker 模版,我们可以将数据渲染成 HTML 网页、电子邮件、配置文件以及源代码等。Freemarker 不是面向最终用户的,而是一个 Java 类库,我们可以将之作为一个普通的组件嵌入到我们的产品中。来看一张来自 Freemarker 官...

weixin_39716044的博客 187

配置user_Spring Boot 整合 Freemarker,50 多行配置是怎么省略掉的?

Spring Boot2 系列教程接近完工,最近进入修修补补阶段。Freemarker 整合貌似还没和大家聊过,因此今天把这个补充上。已经完工的 Spring Boot2 教程,大家可以参考这里:干货|最新版 Spring Boot2.1.5 教程+案例合集Freemarker 简介这是一个相当老牌的开源的免费的模版引擎。通过 Freemarker 模版,我们可以将数据渲染成 HTML ...

weixin_42210638的博客 97

springboot整合freemarker

freemarker简介 Freemarker 模版后缀为 .ftl(FreeMarker Template Language)。FTL 是一种简单的、专用的语言,它不是像 Java 那样成熟的编程语言。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo

gt1432173469的博客 406

Spring boot整合视图技术(FreeMarker)

FreeMarker是非常古老的引擎,可以用在Web环境或非Web环境下,与Thymeleaf相比,FreeMarker需要经过解析才能够在浏览器中展示出来。FreeMarker不仅可以用来配置HTML页面模板,也可以作为电子邮件模板、配置文件模板及源码模板等。Spring boot整合FreeMarker步骤如下: 1、创建项目,添加依赖 <dependency> <groupId>org.springframework.boot</groupId&

~~~的博客 284

freemarker中的import和include区别案例_Spring Boot + Freemarker 中的弯弯绕!

昨天说手把手教大家整一个代码自动生成工具,用到了 Freemarker,结果有不少小伙伴表示对 Freemarker 不熟悉,这不,松哥赶紧整一个 Spring Boot+Freemarker 的教程出来,和大家分享下 Freemarker 中的常见操作。1. Freemarker 简介2. 整合 Spring Boot2.1 创建工程2.2 创建类2.3 其他配置3. Freemarker 使用...

weixin_42500477的博客 886

Spring Boot 整合 Freemarker,50 多行配置是怎么省略掉的?

Spring Boot2 系列教程接近完工,最近进入修修补补阶段。Freemarker 整合貌似还没和大家聊过,因此今天把这个补充上。 已经完工的 Spring Boot2 教程,大家可以参考这里: 干货|最新版 Spring Boot2.1.5 教程+案例合集 Freemarker 简介 这是一个相当老牌的开源的免费的模版引擎。通过 Freemarker 模版,我们可以将数据渲染成 HTM...

江南一点雨的专栏 1713
上一篇: 微信开发的Http或Https常用工具类
下一篇: Spring Boot整合MyBatis
青蛙小王子
博客等级 码龄16年 239粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值