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

sprng boot 怎么自定义响应的html页面,第1张

创建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服务。

在开发 SpringBoot 项目的时候,启动项目,启动失败,提示如下,只截取关键部分:

该异常的 Description 只是表面现象,而不是根本原因,要想知道根本原因,就需要查看是否之前就抛出了其他异常。正是更早的异常导致 Spring 不能符合预期的工作。

虽然上面的问题可以根据上面的提示信息:

在 SpringBootApplication 启动类上的,@EnableAsync 或 @EnableCaching 注解中加上 proxyTargetClass=true,来解决,也可以完成启动。

如果想要知道具体问题的原因,需要继续下面的分析。

Spring 在启动的过程中,最重要的过程就是 refresh Context 的过程。

Spring refresh () 方法源码:

如果是 refresh () 方法执行失败了,可能会抛出异常,可以在日志中搜索:

上面日志中的 refresh 异常内容 如下:

可以看到 monitorConsumer 类实例化失败,是因为 dispatcherHandlerService 注入失败,是因为 dispatcherActionOneHandlerService 注入失败,是因为 handleActionOneMonitors 注入失败,是因为 oneMonitor 注入失败,是因为 ZooBiz 注入失败。

此时,应该检查 ZooBiz 具体的错误原因,是不是没有定义接口,而直接使用;或者该类存在其他问题等。

修改完该类的问题后,再次启动项目,看看能否正常启动成功。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11512906.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存