SpringBoot 之jsp
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的更多相关文章
- SpringBoot集成jsp
一.springBoot集成jsp: 1.修改pom文件 <!--集成jsp所需jar包--> <!--jsp页面使用jstl标签--> <dependency> ...
- SpringBoot整合Jsp和Thymeleaf (附工程)
前言 本篇文章主要讲述SpringBoot整合Jsp以及SpringBoot整合Thymeleaf,实现一个简单的用户增删改查示例工程.事先说明,有三个项目,两个是单独整合的,一个是将它们整合在一起的 ...
- SpringBoot使用Jsp
本文是简单总结一下SpringBoot使用Jsp的Demo. 前言 在早期做项目的时候,JSP是我们经常使用的java服务器页面,其实就是一个简化servlet的设计,在本文开始之前,回顾一下jsp的 ...
- 03-01:springboot 整合jsp
1.修改pom文件,添加坐标 <!-- jstl --> <dependency> <groupId>javax.servlet ...
- springboot整合jsp模板
springboot整合jsp模板 在使用springboot框架里使用jsp的时候,页面模板使用jsp在pom.xnl中需要引入相关的依赖,否则在controller中无法返回到指定页面 〇.搭建s ...
- 详解SpringBoot集成jsp(附源码)+遇到的坑
本文介绍了SpringBoot集成jsp(附源码)+遇到的坑 ,分享给大家 1.大体步骤 (1)创建Maven web project: (2)在pom.xml文件添加依赖: (3)配置applica ...
- springboot结合jsp页面详解
第一次写博客,其实就是为了约束我自己,写的不一定对,互相借鉴吧!有不对的地方请多多指正,谢谢! 今天我们来看一下springboot结合jsp页面的具体操作: 1.首先我们先看一下目录结构 由上面我们 ...
- SpringBoot整合jsp技术
1.修改pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...
- Idea中SpringBoot整合JSP
最近在学习SpringBoot,看到SpringBoot整合jsp,顺带记录一下. 1.创建一个SpringBoot项目 点击Next 注意:packaging选中War,点击Next Webà选中W ...
- Springboot(二)springboot之jsp支持
参考恒宇少年的博客:https://www.jianshu.com/p/90a84c814d0c springboot内部对jsp的支持并不是特别理想,而springboot推荐的视图是Thymele ...
随机推荐
- match和search的区别
正则表达式帮助你方便的检查一个字符串是否与某种模式匹配. re模块使Python语言拥有全部的正则表达式功能. re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,mat ...
- Qt中的Q_D宏和d指针
_ZTS7QObject 一.Q_D的在文件中的提法 Q_D的设置意在方便地获取私有类指针,文件为qglobal.h.下面的##是宏定义的连字符.假设类名是A,那么A##Private翻译过来就是AP ...
- 《从Lucene到Elasticsearch:全文检索实战》学习笔记二
今天我给大家讲讲分词算法 分词算法概述:词是语义的最小单位.分词对搜索引擎的作用很大,可以促进搜索引擎程序自动识别语句的含义,可以提高搜索结果的匹配度,分析的质量也将直接影响了搜索结果的精确度.分词存 ...
- CentOS6.5安装mysql5.7
CentOS6.5安装mysql5.7 查看mysql的安装路径: [root@bogon ~]# whereis mysql mysql: /usr/bin/mysql /usr/lib/mysql ...
- [转] Linux运维常见故障排查和处理的技巧汇总
作为linux运维,多多少少会碰见这样那样的问题或故障,从中总结经验,查找问题,汇总并分析故障的原因,这是一个Linux运维工程师良好的习惯.每一次技术的突破,都经历着苦闷,伴随着快乐,可我们还是执着 ...
- 使外部主机可访问Django服务
欲让外部主机可访问Django的服务器,需使用如下命令开启服务 python manage.py runserver 0.0.0.0:8000
- 浅析rune数据类型
学习golang基础的时候,发现有个叫rune的的数据类型,当时不理解这个类型的意义. 查询,官方的解释如下: // rune is an alias for int32 and is equival ...
- 初识nginx反向代理和缓存机制
实现的需求图: 环境: nginx缓存和反向代理服务器:192.168.0.224 实际存储数据机器:192.168.0.37 一.实现反向代理 1.安装nginx,两台服务器都需要安装 1)安装 ...
- 汉语言处理工具pyhanlp的简繁转换
繁简转换 HanLP几乎实现了所有我们需要的繁简转换方式,并且已经封装到了HanLP中,使得我们可以轻松的使用,而分词器中已经默认支持多种繁简格式或者混合.这里我们不再做过多描述. 说明: ·Ha ...
- DHCP的搭建
挂载光盘 yum –y install dhcp cat /etc/dhcp/dhcpd.conf 配置文件到 /usr/share/doc/dhcp*/dhcpd.conf.sample 这是dhc ...