SpringBoot集成框架

心已入冬 提交于 2019-11-29 11:58:10

SpringBoot 静态资源目录

SpringBoot 框架默认提供静态资源目
录位置需放置于 classpath 下,目录名应符合如下规则:
⚫ /static
⚫ /public
⚫ /resources
⚫ /META-INF/resources
其中, classpath 指的是项目中 src/main/resources 目录。
四个目录可以在项目中任意创建一个即可,如只创建一个 static 文件夹存放静态资源,它们的功能都是一样
的。

SpringBoot 集成 JSP

集成 JSP 的步骤

具体实现步骤如下:
(1)、 创建项目
在集成 JSP 时,需要在创建 Maven 项目时选择 webapp: File --> New --> Maven Project --> next,接下来输入 webapp --> 选中 maven-archetype-webapp – Next。
(2)、 导入 pom 依赖
在项目的 pom.xml 文件中导入常规依赖之外,需要额外添加 JSP 和 JSTL 两个依赖。

<!-- SpringBoot 支持 JSP 的依赖 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- JSP 页面使用 JSTL 标签 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency

(3)、 配置视图解析
出于安全的考虑, SpringBoot 推荐将 JSP 页面放入项目的 webapp/WEB-INF/view 目录下,需要在
application.properties 配置文件中加入如下内容:

## SpringBoot支持JSP页面的视图解析配置
#视图前缀
spring.mvc.view.prefix=/WEB-INF/view/
#视图后缀
spring.mvc.view.suffix=.jsp

(4)、 案例测试
新建控制器类(UserController.java)处理请求,内容如下:

@Controller
public class UserController {
/**
* http://localhost:8080/jstljsp?name=Tom
* SpringBoot中使用JSP页面中的JSTL标签
* @param view
* @param name
* @return
*/
@RequestMapping("/jstljsp")
public ModelAndView queryAll(ModelAndView view,String name){
System.out.println("成功访问了 jstljsp");
List<String> list= new ArrayList<String>();
list.add(name);
list.add("张三");
list.add("李四");
view.addObject("list",list);
view.setViewName("list");
return view;
}
}

(5)、 在 webapp/WEB-INF/下新建 view 目录,然后新建一个 list.jsp 文件,内容如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://" + request.getServerName() + ":" + request.getServerPort() + path
+"/";
%>
<!DOCTYPE HTML>
<html>
<head>
<base href="<%=basePath%>">
<title>SpringBoot首页</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
This is JSP page:/WEB-INF/view/list.jsp <br>
<s:if test="${not empty list }">
<s:forEach items="${list}" varStatus="sta" var="str">
${sta.count} ---------> ${str} <br/>
</s:forEach>
</s:if>
<s:if test="${empty msg}">
<h5>page,request,session,application四个对象属性中msg都为null空</h5>
</s:if>
</body>
</html>

(6)、 定义主模块

@SpringBootApplication
public class Apllication {
public static void main(String[] args) {
SpringApplication.run(Apllication.class, args);
}
}

(7)、 启动项目,在浏览器中输入’http://localhost:8080/jstljsp?name=Tom’,运行效果如下:
在这里插入图片描述

打 war 包发布项目

打包:右键项目 --> Run as --> Maven build… 输入 clean package 命令
本阶段需要注意的是,需修改 pom.xml 中项目的打包的方式为 war,即war
运行: 在放置 war 包的目录下,按 shift 键,输入 java -jar 包名.war 即可

Freemarker 模板

Freemarker 的作用主要是将动态页面转换成伪静态 html 页面,提高搜索引擎的收录。具体框架的介绍和用
法可参考 http://freemarker.foofun.cn。
模板的默认后缀为.ftl,内容除了静态内容外,其数据模型主要包括标量、指令、方法等。其中标量有 4 种类
型:
⚫ 布尔值
⚫ 数字
⚫ 字符串
⚫ 日期类型(子类型:日期(没有时间部分),时间或者日期-时间)
模板中常见的内容简单介绍如下:
⚫ 插值${…}: FreeMarker 将会输出真实的值来替换大括号内的表达式,这样的表达式被称为
interpolation(插值)。
⚫ 注释: 注释和 HTML 的注释也很相似,但是它们使用<#-- and -->来标识。不像 HTML 注释那样, FTL
注释不会出现在输出中(不出现在访问者的页面中),因为 FreeMarker 会跳过它们。
⚫ FTL 标签(FreeMarker 模板的语言标签): FTL 标签和 HTML 标签有一些相似之处,但是它们是
FreeMarker 的指令,是不会在输出中打印的。这些标签的名字以#开头。 (用户自定义的 FTL 标签
则需要使用@来代替#)

SpringBoot 集成 Freemarker 模版技术

SpringBoot 框架提供了对 Freemarker 框架的集成操作,具体操作如下:

  1. 加入额外的 pom 依赖:
<!-- Spring Boot Freemarker 模板 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
  1. 在 application.properties 配置 freemarker 配置或者使用默认模板位置/src/main/resources/templates/ 及
    默认后缀.ftl。
spring.freemarker.suffix=.ftl
  1. 创建 Controller
@Controller
public class StudentController {
@RequestMapping("/freemarker")
public String freemarker(Map<String, Object> map){
map.put("name", "Joe");
map.put("sex", 1); //sex:性别, 1:男; 0:女;
// 模拟数据
List<Map<String, Object>> friends = new ArrayList<Map<String, Object>>();
Map<String, Object> friend = new HashMap<String, Object>();
friend.put("name", "xbq");
friend.put("age", 22);
friends.add(friend);
friend = new HashMap<String, Object>();
friend.put("name", "July");
friend.put("age", 18);
friends.add(friend);
map.put("friends", friends);
return "freemarker";
}
}
  1. 在 templates 文件夹下创建 freemarker.flt 文件,内容如下:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<title>Hello World!</title>
</head>
<body>
<center>
<p>
welcome ${name} to freemarker!
</p>
<p>性别:
<#if sex==0>
女
<#elseif sex==1>
男
<#else>
保密
</#if>
</p>
<h4>我的好友: </h4>
<#list friends as item>
姓名: ${item.name} , 年龄${item.age}
<br>
</#list>
</center>
</body>
</html>
  1. 在浏览器中输入 localhost:8080/freemarker,运行效果如下:
    在这里插入图片描述
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!