Boot 内嵌的tomcat 是不支持jsp 的, jetty 也是。

虽然boot也是有默认配置一个InternalResourceViewResolver ,但是它并不像我们在springmvc 中熟悉的那样, 它没有解析 jsp 的功能。  其实InternalResourceViewResolver 的含义只是 内部资源的 视图解析器, 更准确的说, 它是直接把 资源试图的解析交给了 j2ee 容器。 在传统的 springmvc + tomcat 项目中, 很明显就是 tomcat, 具体的工作是我们熟悉的org.apache.jasper.servlet.JspServlet 完成的。但是在内嵌的tomcat环境中, 并没有提供一个默认的jsp 解析器。因为, JspServlet 是 jasper. jar 的 内容。 如果我们想在boot 中使用jsp 的话, 我们需要引入类似的这么一个jar: tomcat-embed-jasper-xxx.jar , 对应的maven 是:

        <dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>

这里,我们同时引入了 jstl,standard 两个jar ,因为他们常常是一起使用的。

boot提供了两个mvc配置, 跟jsp 解析也有直接关系,他们默认是:

spring.mvc.view.prefix=
spring.mvc.view.suffix=

WebMvcAutoConfiguration 的配置是这样的:

        @Bean
@ConditionalOnMissingBean
public InternalResourceViewResolver defaultViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix(this.mvcProperties.getView().getPrefix());
resolver.setSuffix(this.mvcProperties.getView().getSuffix());
return resolver;
}

可见,很坑爹, 两个都是空。 就是说,默认我们根本访问不到 jsp !

因此, 我们至少需要把suffix 改一下吧:

spring.mvc.view.suffix=.jsp

But !这样做, 我还是不能访问到 jsp, public,static, resources各个目录都放了相同文件,但都访问不到。, 真是郁闷了。后面我发现这是boot 的一个坑, 貌似只有把 jsp 页面 放到META-INF.resources 目录下, 才能访问。 也就是说,boot 只会 去META-INF.resources 目录下查找jsp。 不知道为什么, 有谁知道了, 请告诉我。 除了META-INF.resources目录, 传统的 src/main/webapp/WEB-INF目录 也是可以的。但不知道为什么一定要在WEB-INF 目录下。

除了 修改application.properties 的mvc 配置项, 我们还可以手动的注册一个InternalResourceViewResolver :

    @Bean
public InternalResourceViewResolver internalResourceViewResolver() {
System.out.println("InternalResourceViewResolver 222.");
InternalResourceViewResolver resourceViewResolver = new InternalResourceViewResolver();
resourceViewResolver.setSuffix(".jsp");
// resourceViewResolver.setPrefix("/");
resourceViewResolver.setViewClass(JstlView.class);
return resourceViewResolver;
}

效果是一样的。 不同的是, 我们可以设置 viewclass :resourceViewResolver.setViewClass(JstlView.class);  默认它是空。



SpringBoot 之jsp的更多相关文章

  1. SpringBoot集成jsp

    一.springBoot集成jsp: 1.修改pom文件 <!--集成jsp所需jar包--> <!--jsp页面使用jstl标签--> <dependency> ...

  2. SpringBoot整合Jsp和Thymeleaf (附工程)

    前言 本篇文章主要讲述SpringBoot整合Jsp以及SpringBoot整合Thymeleaf,实现一个简单的用户增删改查示例工程.事先说明,有三个项目,两个是单独整合的,一个是将它们整合在一起的 ...

  3. SpringBoot使用Jsp

    本文是简单总结一下SpringBoot使用Jsp的Demo. 前言 在早期做项目的时候,JSP是我们经常使用的java服务器页面,其实就是一个简化servlet的设计,在本文开始之前,回顾一下jsp的 ...

  4. 03-01:springboot 整合jsp

    1.修改pom文件,添加坐标 <!-- jstl -->        <dependency>            <groupId>javax.servlet ...

  5. springboot整合jsp模板

    springboot整合jsp模板 在使用springboot框架里使用jsp的时候,页面模板使用jsp在pom.xnl中需要引入相关的依赖,否则在controller中无法返回到指定页面 〇.搭建s ...

  6. 详解SpringBoot集成jsp(附源码)+遇到的坑

    本文介绍了SpringBoot集成jsp(附源码)+遇到的坑 ,分享给大家 1.大体步骤 (1)创建Maven web project: (2)在pom.xml文件添加依赖: (3)配置applica ...

  7. springboot结合jsp页面详解

    第一次写博客,其实就是为了约束我自己,写的不一定对,互相借鉴吧!有不对的地方请多多指正,谢谢! 今天我们来看一下springboot结合jsp页面的具体操作: 1.首先我们先看一下目录结构 由上面我们 ...

  8. SpringBoot整合jsp技术

    1.修改pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...

  9. Idea中SpringBoot整合JSP

    最近在学习SpringBoot,看到SpringBoot整合jsp,顺带记录一下. 1.创建一个SpringBoot项目 点击Next 注意:packaging选中War,点击Next Webà选中W ...

  10. Springboot(二)springboot之jsp支持

    参考恒宇少年的博客:https://www.jianshu.com/p/90a84c814d0c springboot内部对jsp的支持并不是特别理想,而springboot推荐的视图是Thymele ...

随机推荐

  1. js--------1.时间

    //获取当前时间 yyyy-MM-dd function getNowFormatDate() { var date = new Date(); var seperator1 = "-&qu ...

  2. keil安装

    安装准备: 一个keil安装程序,一个注册机 安装步骤.... 软件安装: 打开C51V901.EXE 安装程序 点击Next, 同意上述证书协议 重复点击Next,知道出现finish停下. 3个多 ...

  3. Java学习笔记34(sql基础 :增删改查1)

    create database qy97;/*创建数据库*/ use qy97; /*使用数据库 use 数据库名*/ show tables; /*查看所有的表*/ select database( ...

  4. 吴恩达机器学习-octave笔记

    隐藏前缀提示符:PS1('>>') 不显示打印内容:;结尾 字符串:a=’hi’ 屏幕输出:disp(sprint(‘2 decimals:%0.2f’,a)) 生成集合(矩阵):V=1: ...

  5. Cannot find ./catalina.sh The file is absent or does not have execute permission This file is nee

    从tomcat官网上下载了apache-tomcat-5.5.36.zip,在window xp系统里面解压以后,直接放在了linux服务器上. 进入tomcat/bin目录,执行启动的时候出现如下错 ...

  6. ieee trans pami latex模板

    https://www.computer.org/cms/Computer.org/transactions/templates/ https://www.computer.org/web/tpami ...

  7. js 点击下载文件

    下载的文件类型如果浏览器不能打开会直接下载,能打开的需要后台在响应头部进行设定. Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的 ...

  8. 软间隔分类——SVM

    引入:1. 数据线性不可分:2. 映射到高维依然不是线性可分3. 出现噪声.如图: 对原始问题变形得到#2: 进行拉格朗日转换: 其中α和r是拉格朗日因子,均有不小于0的约束.按照之前的对偶问题的推导 ...

  9. PAT 乙级 1089 狼人杀 && 1090 危险品装箱 (我的时间最短哦)

    1 1089的点在注释里面,核心就是遍历任意两个人说谎,看结果是否满足题目要求 2  1090 是一道好题目, 考虑到了时间复杂度 通常想法是看清单中每一个物品 是否存在与其不能存放的物品  那么复杂 ...

  10. python select解析 socket高效通信服务器 自己写的socketserver

    import select import socket import queue server = socket.socket()#创建服务器端 server.bind(('localhost',99 ...