sprng boot 怎么自定义响应的html页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sprng boot 怎么自定义响应的html页面相关的知识,希望对你有一定的参考价值。

创建PageController,编码如下:
package org.springboot.sample.controller;

import java.util.Date;
import java.util.Map;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class PageController

// 从 application.properties 中读取配置,如取不到默认值为Hello Shanhy
@Value("$application.hell:Hello Shanhy")
private String hello = "Hello Shanhy";

/**
* 默认页<br/>
* @RequestMapping("/") 和 @RequestMapping 是有区别的
* 如果不写参数,则为全局默认页,加入输入404页面,也会自动访问到这个页面。
* 如果加了参数逗/地,则只认为是根页面。
*
* @return
* @author SHANHY
* @create 2016年1月5日
*/
@RequestMapping(value = "/","/index")
public String index(Map<String, Object> model)
// 直接返回字符串,框架默认会去 spring.view.prefix 目录下的 (index拼接spring.view.suffix)页面
// 本例为 /WEB-INF/jsp/index.jsp
model.put("time", new Date());
model.put("message", this.hello);
return "index";


/**
* 响应到JSP页面page1
*
* @return
* @author SHANHY
* @create 2016年1月5日
*/
@RequestMapping("/page1")
public ModelAndView page1()
// 页面位置 /WEB-INF/jsp/page/page.jsp
ModelAndView mav = new ModelAndView("page/page1");
mav.addObject("content", hello);
return mav;


/**
* 响应到JSP页面page1(可以直接使用Model封装内容,直接返回页面字符串)
*
* @return
* @author SHANHY
* @create 2016年1月5日
*/
@RequestMapping("/page2")
public String page2(Model model)
// 页面位置 /WEB-INF/jsp/page/page.jsp
model.addAttribute("content", hello + "(第二种)");
return "page/page1";

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

pom.xml添加依赖:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>123456789

上面说了spring-boot 不推荐JSP,想使用JSP需要配置application.properties。
添加src/main/resources/application.properties内容:
# 页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
# 响应页面默认后缀
spring.mvc.view.suffix=.jsp
# 自定义属性,可以在Controller中读取
application.hello=Hello Shanhy123456

在 src/main 下面创建 webapp/WEB-INF/jsp 目录用来存放我们的jsp页面。
index.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Spring Boot Sample</title>
</head>

<body>
Time: $time
<br>
Message: $message
</body>
</html>12345678910111213

page1.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Spring Boot Sample</title>
</head>

<body>
<h1>$content </h1>
</body>
</html>1234567891011

要想让spring-boot支持JSP,需要将项目打成war包。
我们做最后一点修改,修改pom.xml文件,将 jar 中的 jar 修改为 war
然后启动spring-boot服务。
参考技术A html静态文件放在static下,用@Controller注解,以下第一种方式成功,第二种方式失败。

一、

@Controller
@RequestMapping("/")
public class IndexController
public ModelAndView index()
return new ModelAndView("index");



二、

@Controller
public class IndexController

@RequestMapping("/")
public ModelAndView index()
return new ModelAndView("index");

参考技术B html静态文件放在static下,用@Controller注解,以下第一种方式成功,第二种方式失败。

一、

@Controller
@RequestMapping("/")
public class IndexController
public ModelAndView index()
return new ModelAndView("index");



二、

@Controller
public class IndexController

@RequestMapping("/")
public ModelAndView index()
return new ModelAndView("index");

如何在 Spring Boot 中创建自定义错误页面

【中文标题】如何在 Spring Boot 中创建自定义错误页面【英文标题】:How to create custom error page in spring boot 【发布时间】:2017-10-03 12:42:09 【问题描述】:

我从以下网址阅读了参考资料

Customized 404 error page in spring-boot 及其工作。

在上述文档中,他们使用了 .HTML 页面。但我需要.jsp 页面。

src/
+- main/
   +- java/
   +- resources/
       +- public/
           +- error/
           |   +- 404.html

即。 404.html转404.jsp

有可能吗?

【问题讨论】:

【参考方案1】:

是的,这是可能的。

你只需要配置

InternalViewResolver

与 .jsp 扩展名一样。

编辑:

请检查以下示例代码。

private static final String VIEW_RESOLVER_PREFIX = "your/jsp/location";
private static final String VIEW_RESOLVER_SUFFIX = ".jsp";

@Bean
public ViewResolver viewResolver() 
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setPrefix(VIEW_RESOLVER_PREFIX);
    viewResolver.setSuffix(VIEW_RESOLVER_SUFFIX);
    return viewResolver;

【讨论】:

谢谢。你能告诉我一个示例配置吗? 'application.properties' 有什么变化吗? 我已经在 'application.properites' 中进行了配置。 spring.mvc.view.prefix=/WEB-INF/Views/spring.mvc.view.suffix=.jsp。错误页面可以是静态 JSP docs.spring.io/spring-boot/docs/current/reference/htmlsingle/…【参考方案2】:

您需要首先配置 spring boot 以使用 jsp,因为它不是开箱即用的。在maven pom.xml中,添加如下依赖:

    <!-- Need this to compile JSP -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jdt.core.compiler</groupId>
        <artifactId>ecj</artifactId>
        <version>4.6.1</version>
        <scope>provided</scope>
    </dependency>
    <!-- JSTL for JSP -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>

在 application.properties 中:

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

按照我的配置方式,.jsp 文件需要位于 src/main/webapp/WEB-INF/jsp 文件夹中,因此如果需要,请创建它。 假设我创建了一个文件 src/main/webapp/WEB-INF/jsp/error/404.jsp。要从我的控制器访问它,我只是将其称为

return "error/404";

因为spring boot会自动为我添加视图前缀和后缀。

【讨论】:

以上是关于sprng boot 怎么自定义响应的html页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 中发送 400、401、405、403 和 500 错误的自定义响应?

spring boot security angular6 自定义登录的登录页面怎么配置?有没有大神指点一下?

如何在 Spring Boot 中创建自定义错误页面

spring boot 自定义错误页面

Spring Boot 自定义 http 错误响应?

在 Spring Boot 中使用自定义代码进行响应 [重复]