Spring Boot渲染Web页面

渲染Web页面

在之前的示例中,我们都是通过@RestController来处理请求,所以返回的内容为json对象。那么如果需要渲染html页面的时候,要如何实现呢?
模板引擎
在动态HTML实现上Spring Boot依然可以完美胜任,并且提供了多种模板引擎的默认配置支持,所以在推荐的模板引擎下,我们可以很快的上手开发动态网站。
Spring Boot提供了默认配置的模板引擎主要有以下几种:
• Thymeleaf
• FreeMarker
• Velocity
• Groovy
• Mustache
Spring Boot建议使用这些模板引擎,避免使用JSP,若一定要使用JSP将无法实现Spring Boot的多种特性,具体可见后文:支持JSP的配置
当你使用上述模板引擎中的任何一个,它们默认的模板配置路径为:src/main/resources/templates。当然也可以修改这个路径,具体如何修改,可在后续各模板引擎的配置属性中查询并修改。

使用Freemarker模板引擎渲染web视图

pom文件引入

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-freemarkerartifactId>
        dependency>

后台代码

package com.cc.springboot;

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

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.w3c.dom.ls.LSInput;

@Controller
public class IndexControler {

    @RequestMapping("/index")
    public String index(ModelMap map) {
        map.addAttribute("name", "kevin");
        map.put("sex",1);//0 男 1 女 其他
        List userList=new ArrayList();
        userList.add("hubbert");
        userList.add("cai");
        userList.add("xu");
        map.addAttribute("userList", userList);
        return "index";
    }

}

前台代码

在src/main/resources/创建一个templates文件夹,后缀为*.ftl

index.ftl页面:


<html>
<head lang="en">
<meta charset="UTF-8" />
<title>title>
head>
<body>
      ${name}
      <#if sex==1><#elseif sex==2><#else>
      其他
      #if>

      <#list userList as user>
      ${user}
      #list> 

body> 
html>

访问:http://localhost:8080/index
Spring Boot渲染Web页面_第1张图片

Freemarker配置

新建application.properties文件

########################################################
###FREEMARKER (FreeMarkerAutoConfiguration)
########################################################
spring.freemarker.allow-request-override=false
spring.freemarker.cache=true
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

使用JSP渲染Web视图

建一个打包类型为war类型的maven项目。
Spring Boot渲染Web页面_第2张图片

pom文件引入以下依赖

<parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>1.3.3.RELEASEversion>
    parent>
    <dependencies>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-tomcatartifactId>
        dependency>
        <dependency>
            <groupId>org.apache.tomcat.embedgroupId>
            <artifactId>tomcat-embed-jasperartifactId>
        dependency>
    dependencies>

Spring Boot渲染Web页面_第3张图片

在application.properties创建以下配置

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

然后建一个WEB-INF/jsp/index.jsp
Spring Boot渲染Web页面_第4张图片

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
   this is springboot 
body>
html>

然后运行访问http://127.0.0.1:8080/index:
Spring Boot渲染Web页面_第5张图片

顺便推荐一个写的挺好的博客:Spring Boot干货系列:(五)开发Web应用之JSP篇

你可能感兴趣的:(Spring,Boot)