同事创建了一个spring boot项目,上传到svn。需要我来写个页面。下载下来后,始终无法实现在Controller方法中配置直接返回jsp页面。

郁闷了一下午,终于搞定了问题。在此记录一下。

目标:在Controller方法中配置直接返回jsp页面

项目中添加src/main/webapp文件夹,没什么好说的。

下面详细介绍@Controller注解和@RestController注解的不同实现方法。

@Controller注解

1. application.properties文件中配置

# 配置jsp文件的位置,默认位置为:src/main/webapp
spring.mvc.view.prefix:/pages/ #指向jsp文件位置:src/main/webapp/pages

# 配置jsp文件的后缀
spring.mvc.view.suffix:.jsp

2. Controller文件中配置

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class ExampleController {

    @RequestMapping(value = "/initpage", method = RequestMethod.GET)
    public String doView() {
        return "index"; // 可访问到:src/main/webapp/pages/index.jsp
    }
}

3. 使用Application [main]方法启动

4. 访问url,访问到jsp页面

http://localhost:8080/initpage

@RestController注解

1. application.properties文件中配置

# 配置jsp文件的位置,默认位置为:src/main/webapp
spring.mvc.view.prefix:/pages/  #指向jsp文件位置:src/main/webapp/pages

# 配置jsp文件的后缀
spring.mvc.view.suffix:.jsp

2. Controller文件中配置,同样可访问到:src/main/webapp/pages/index.jsp

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@RestController
public class OvalAlarmController {

    @RequestMapping(value = "/initpage", method = RequestMethod.GET)
    public ModelAndView doView() {
        ModelAndView mv = new ModelAndView("index");
        return mv;
    }
}

3. 使用Application [main]方法启动

4. 访问url,访问到jsp页面

http://localhost:8080/initpage

一个问题:

  按上面流程配置,还是访问不到页面怎么办?

可以尝试将application.properties的配置做如下修改,原因么,我也不晓得...

# 配置jsp文件的位置,默认位置为:src/main/webapp
spring.view.prefix:/pages/  # 看到区别了么,此处去掉的[.mvc]

# 配置jsp文件的后缀
spring.view.suffix:.jsp  #此处也去掉了[.mvc]

我自己建的spring boot(版本较旧),按上面的配置,运行ok,同事创建的spring boot(版本较新),必须加上[.mvc]才能运行ok.

我的spring boot的pom.xml截图(要配置成:spring.view.prefix):

同事的spring boot的pom.xml截图(要配置成:spring.mvc.view.prefix):

另一个问题:

  spring boot直接返回jsp文件下载怎么解决?

原因:

  jsp文件没有被解析,pom.xml文件中只需添加如下配置。ok,问题解决。

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <version>7.0.59</version>
    </dependency>

[Spring boot] web应用返回jsp页面的更多相关文章

  1. Spring Boot 2.0 返回JSP页面实战

    1. 模板引擎JSP的限制 在开始之前呢,我觉得我们有必要先去了解下 Spring Boot 2.0 官方文档中提到的如下内容: 模板引擎 除了REST Web服务之外,还可以使用Spring MVC ...

  2. Spring Boot Web项目整合jsp页面访问

    这个内容就是实操过程中各种访问不了jsp页面,各种尝试后的解决方案吧.可能不是最优的,但是目前能解决项目中的一些问题.之前觉得没有什么问题直接可以操作的,没想到在这部分还是耗时了. 开发工具idea2 ...

  3. (6)Spring Boot web开发 --- 错误处理页面

    文章目录 处理时间(`Date`)类型 thymeleaf 页面拼接字符串 映射路径占位符 使用 put.delete 方法 错误处理机制 处理时间(Date)类型 Spring Boot 进行参数绑 ...

  4. Spring Boot Web 自定义返回值(通用)

    在项目下新建common.entity包,包中包含两个文件Result数据类,ResultCode接口文件 Result.class @Data @NoArgsConstructor public c ...

  5. 转-spring boot web相关配置

    spring boot web相关配置 80436 spring boot集成了servlet容器,当我们在pom文件中增加spring-boot-starter-web的maven依赖时,不做任何w ...

  6. Springboot 系列(七)Spring Boot web 开发之异常错误处理机制剖析

    前言 相信大家在刚开始体验 Springboot 的时候一定会经常碰到这个页面,也就是访问一个不存在的页面的默认返回页面. 如果是其他客户端请求,如接口测试工具,会默认返回JSON数据. { &quo ...

  7. Springboot 系列(五)Spring Boot web 开发之静态资源和模版引擎

    前言 Spring Boot 天生的适合 web 应用开发,它可以快速的嵌入 Tomcat, Jetty 或 Netty 用于包含一个 HTTP 服务器.且开发十分简单,只需要引入 web 开发所需的 ...

  8. spring boot 解决后台返回 json 到前台中文乱码之后出现返回json数据报错 500:no convertter for return value of type

    问题描述 spring Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson spring boot 新增配置解决后台返回 json 到前台中文乱码之后,出现返回json ...

  9. 在 Spring Boot 2 中致敬 JSP

    新冠病毒

随机推荐

  1. shell编程笔记(1)

    shell编程: 编译器,解释器 编程语言:机器语言.汇编语言.高级语言 静态语言:编译型语言    强类型(变量)    事先转换成可执行格式    C.C++.JAVA.C#           ...

  2. [转载]Linux网络编程IPv4和IPv6的inet_addr、inet_aton、inet_pton等函数小结

    转载:http://blog.csdn.net/ithomer/article/details/6100734 知识背景: 210.25.132.181属于IP地址的ASCII表示法,也就是字符串形式 ...

  3. 【转】linux 关机命令总结

    linux下常用的关机命令有:shutdown.halt.poweroff.init:重启命令有:reboot.下面本文就主要介绍一些常用的关机命令以及各种关机命令之间的区别和具体用法. 首先来看一下 ...

  4. Qt creator自定义编译运行步骤

    一直用Qt creator开发.无它,只是因为linux下C++ IDE选择不多.同时因为我抛弃了MFC,平时写个小工具还得靠Qt,正好一举两用. 用Qt creator开发一般的工程,是不用修改编译 ...

  5. android recover 系统代码分析 -- 选择进入

    最近做Recovery的规范及操作指导文档,花了一些时间将流程搞清. Android利用Recovery模式,进行恢复出厂设置,OTA升级,patch升级及firmware升级.而在进入Recover ...

  6. HTTP协议之 简易浏览器(3)--转载

    简单的说,今天的全部工作就是 我的目的只有两个 1.加深对http协议的理解   2.深化对B/S结构的认识. 代码 1 /* 2 这个程序把主机地址写死了, 3 想更像的话,可以在加个输入.然后根据 ...

  7. HTML5新增的拖放API---(一)

    HTML5新增了关于拖放的API,通过API可以让HTML页面的任意元素都变成可拖动的,通过使用拖放机制可以开发出更友好的人机交互的界面. 拖放操作可以分为两个动作:在某个元素上按下鼠标移动鼠标(没有 ...

  8. Android 使用开源xUtils来实现多线程下载(非原创)

    1.程序员自己也是可以实现多线程下载的,只是代码量比较大,而且,其中有许多细节需要考虑到,在GitHub上有人写好的代码,我们可以拿过来使用下,节省了我们开发程序的时间 2.导包:xUtils-2.6 ...

  9. ios属性和成员变量写在.h文件和.m文件中 区别?

    1  其实是一样的.在.m文件上只能.m文件内部的才能访问的这个变量,如果在.h文件中,其他的文件也可以访问到这个变量. 2  写.h文件里边可以和其他的类进行交互,写.m里边只是在本类中使用! 3 ...

  10. Office 2010

    1.Office Professional Plus 2010: 6QFDX-PYH2G-PPYFD-C7RJM-BBKQ8 BDD3G-XM7FB-BD2HM-YK63V-VQFDK 2.Offic ...