idea环境下SpringBoot Web应用引入JSP
1. 环境
开发环境:idea2019.3
jkd版本:1.8
springboot版本:2.6.2
2. 引入JSP的步骤
2.1 新建工程,引入依赖
这里只是解析jsp,因此只需要引入springboot内嵌的tomcat对jsp的解析包
<!-- 引入依赖:springboot内嵌的tomcat对jsp的解析包-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
这里引入依赖,网上很多教程,培训教材中,引入过多依赖,其实是多余的。仅仅访问jsp,只需要引入内嵌tomcat对jsp的解析包即可。
如果jsp中使用了jstl,则需要引入jstl的包;这里并不需要。
如果使用了servlet相关api,则引入servlet-api,这里并不需要
2.2 建立webapp资源目录

这时,如果在webapp目录下右键新建jsp,发现在新建菜单中,没有jsp选项,解决方法如2.3
2.3 将webapp设置为web资源存放目录
打开项目结构(project structure),选择module,选择该moule的web项,添加资源目录。

这时,webapp目录编程带有绿色小点的图标。如下图所示:

2.3 创建jsp页面
这里新建一个简单的index.jsp文件,内容如下所示:
<%--
Created by IntelliJ IDEA.
User: Think
Date: 2022/1/7
Time: 12:06
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
这是springboot应用中引入的第一个jsp
</body>
</html>
2.4 访问jsp
运行springboot应用,浏览器访问index.jsp,发现无法访问
2.5 访问不到jsp的原因及问题解决
2.5.1 原因分析
分析springboot工程的target目录,没有发现jsp相关的资源,说明webapp下的web资源没有编译到target下的输出目录,因此访问不到。
另外一种情况也值得注意,在调试时候通过设置,即使web资源没有被打包输出到target目录,但是也可以访问。这是下面的第一种情况。但是在部署上线时,仍然需要手动配置将web资源输出到target目录。
2.5.2 问题解决
通过实验,有两种解决方法,可能有标准的解决方法,这里将找到的两种可行的方法总结如下:
方法1:设置工作目录
点击Edit Configuation,设置工作目录,如下图所示:

设置工作目录为 $MODULE_WORKING_DIR$(或者$MODULE_DIR$, idea2019.3中默认没有这个目录,可以用户输入$MODULE_DIR$和$MODULE_WORKING_DIR$效果相同)

方法2:配置web资源编译后的输出目录
在pom文件的节点中设置web资源编译后的输出目录
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<!-- 下面的目录可以自己设置 -->
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
<includes>
<!-- **匹配任意目录,*匹配任意字符 -->
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>
3. 总结
Q&A
问:pom中的路径/代表什么,src/main/java代表什么
答:对于maven工程,pom文件位于module的根目录,因此/代表的是module的根目录,src/main/java则代表模块下的src/main/java目录
问:application.properties中的/代表什么,spring.mvc.view.prefix=/中的/代表什么
答:
application.properties是src/main/resource中的配置文件,在springboot的maven工程中,src/main/java、src/main/resources,以及用户自己添加的src/main/webapp资源目录中的内容,在编译后都会被部署到target/classes下,因此/有如下对应关系:
/代表了target/classes目录,由于src/main/java、src/main/resource、src/main/webapp中内容编译后会输出到target/classes,因此/也代表了这些目录。
开发人员更关注的是src/main中的内容,因此,对于在application.properties中的/,记住下面的映射关系
/ 对应于 src/main/java
src/main/resources
src/main/webapp
当然,你也可以使用方法2中在pom中添加配置,修改src下的目录和target下目录的默认映射关系。
idea环境下SpringBoot Web应用引入JSP的更多相关文章
- ASP.NET 多环境下配置文件web.config的灵活配置
调试,发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等.如果常常有调试,发布的需求,就需要常常修改web.config文件,这往往 ...
- ASP.NET 多环境下配置文件web.config的灵活配置---转
注意:本功能在.Net Core中已经不可用,暂时需手动修改web.config中的信息,或者将其设置在appsettings.XXX.json中,然后再使用web.config中的环境变量来制定使用 ...
- 使用DOSGi在OSGi环境下发布Web Services
前言 Apache CXF是一个开源的服务框架项目,而Distributed OSGi子项目提供了基于OSGi远程服务规范的分布式组件实现.它使用Web Services,HTTP上的SOAP手段实现 ...
- .NET Framework 项目多环境下配置文件web.config
解决jenkins自动构建发布的问题,统一从git/svn库中获取项目文件,根据不同配置编译发布到多个运行环境中. 转自:https://www.cnblogs.com/hugogoos/p/6426 ...
- centos6.5环境下的web项目mysql编码方式导致的中文乱码问题
最近在centos6.5下部署web项目时网页出现中文乱码的问题,在排除掉php之后,把问题锁定在mysql的编码方式上. 解决方法如下: 首先进入mysql命令行,输入命令:SHOW VARIABL ...
- 用Python+Django在Eclipse环境下开发web网站【转】
一.创建一个项目如果这是你第一次使用Django,那么你必须进行一些初始设置.也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集,包含了数据库配置.Django详细选项设 ...
- 【转载】django在eclipse环境下建web网站
一.创建一个项目如果这是你第一次使用Django,那么你必须进行一些初始设置.也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集,包含了数据库配置.Django详细选项设 ...
- Windows环境下springboot集成redis的安装与使用
一,redis安装 首先我们需要下载Windows版本的redis压缩包地址如下: https://github.com/MicrosoftArchive/redis/releases 连接打开后如下 ...
- 用Python+Django在Eclipse环境下开发web网站
一.创建一个项目如果这是你第一次使用Django,那么你必须进行一些初始设置.也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集,包含了数据库配置.Django详细选项设 ...
随机推荐
- 小迪安全 Web安全 基础入门 - 第十天 - 信息打点-APP&小程序篇&抓包封包&XP框架&反编译&资产提取
一.本节知识点思维导图 二.APP-外在资产收集 1.将APP安装在模拟器中,修改模拟器代理设置,使用Fiddler.Burpsuite.Charles等抓包工具抓取APP访问的http协议数据包,抓 ...
- ffmpeg 系列博客
https://www.ffmpeg.org/download.html#build-macffmpeg 系列博文https://me.csdn.net/blog/leixiaohua1020http ...
- Hystrix 监控可视化页面——Dashboard 流监控
1.什么是Dashboard Hystrix-dashboard 是一款针对 Hystrix 进行实时监控的工具页面,通过 Hystrix Dashboard 我们可以在直观地看到各 Hystrix ...
- java web 404错误页面配置
java web 404错误页面配置:注意红框的地方,在工程的web.xml文件里的最开头加入如下的内容便可,但是也有问题,针对以.action后缀名和.jsp后缀名不起作用, 因为后面配置了一些拦截 ...
- git pull 拉取报错:fatal: refusing to merge unrelated histories
fatal: refusing to merge unrelated histories(拒绝合并不相关的历史) 使用 git pull origin master --allow-unrelated ...
- 使用iframe实现上下窗口结构及登录页全窗口展示Demo
iframe.html 首页 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> < ...
- Mac下好用的“visio”之 OmniGraffle Pro
!!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!! 作者:mohist 1.官方网站:https://www.omnigroup.com/omnigraffle/ ...
- 【LeetCode】344. Reverse String 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 新构建字符串 原地翻转 日期 题目地址:https://lee ...
- 【九度OJ】题目1024:畅通工程 解题报告
[九度OJ]题目1024:畅通工程 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅 ...
- 【LeetCode】779. K-th Symbol in Grammar 解题报告(Python)
[LeetCode]779. K-th Symbol in Grammar 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingz ...