记录一下开始搭建springboot+jsp项目遇到的一个问题

记录一下开始搭建springboot+jsp项目遇到的一个问题

    • 简述自己搭建项目的过程
    • 错误及解决
    • 总结加补充

最近刚开始学习搭建springboot项目,用到的ide工具是idea,前端用的是jsp

简述自己搭建项目的过程

直接上图

  1. 在idea中创建一个springboot项目,选择好自己使用的jdk在这里插入图片描述
  2. 刚创建好的项目目录结构如下图所示。其中,java目录下使我们java代码:像controller,service之类;resources目录下存放的是一些项目相关的静态文件和配置文件:static主要存放js文件、图片和html文件,templates放得是前端页面thymeleaf,application.properties就是springboot配置文件啦
    在这里插入图片描述
  3. 因为我前端用的是jsp,所以在java和resources并列的位置创建了一个webapp,然后在webapp下创建了一个WEB-INF目录用来存放jsp文件
    在这里插入图片描述
  4. 然后在pom文件中加入了支持jsp的依赖jar
	<dependency>
       <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <!-- provided表明该包只在编译和测试的时候用 -->
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
  1. 对springboot配置文件做了简单配置,主要是配置jsp文件访问路径,这个格式是yml格式,只需要把application.properties后缀更改为yml即可,springboot支持yml和properties两种配置格式
server:
  port: 8080
  servlet:
    context-path: /sessionDemo
spring:
  mvc:
    view:
      suffix: .jsp
      prefix: /WEB-INF/page
  1. 后边就是写自己的java代码和jsp页面了,很简单的代码我就补贴了哈哈

错误及解决

一切搞定,兴奋的我赶紧启动项目开始访问,结果却出错了,遇到了如下错误
在这里插入图片描述
遇到错误咱就解决错误,于是我就开始在网上查找资料,发现网上大致都是说出现这种问题有两种可能,第一种就是:启动类放置的位置不对(应该放置在最外层包下,因为项目启动后,springboot会默认扫描启动类同包和子包下的类),另一种就是:项目配置文件中的jsp访问路径有问题,低版本的springboot配置没有view(spring.mvc.view.suffix= .jsp)
但是我检查了发现这两种情况我都不存在。
于是我将controller的方法加上@ResponseBody发现能够输出内容到浏览器,到这一步确定是jsp配置有问题,于是检查项目配置文件发现,jsp配置少写了一个“/”,正确的配置为

server:
  port: 8080
  servlet:
    context-path: /sessionDemo
spring:
  mvc:
    view:
      suffix: .jsp
      prefix: /WEB-INF/page/

还是自己太粗心啊

总结加补充

我在创建项目时有一步没有做

  1. 进入项目设置界面
    在这里插入图片描述
  2. 创建一个web
    在这里插入图片描述
  3. 将Deployment Descriptors下的内容清空,这部分用来配置web.xml路径,清空是因为springboot项目用不到web.xml;将web Resource Directory路径改为webapp路径,用来指示前端页面文件在该目录下
    在这里插入图片描述
  4. 配置完成后项目中的变化是,webapp文件夹上多了一个小圆点
    在这里插入图片描述
    现在在webapp下可以创建jsp文件了,如果不配置,是不能创建的

热门文章

暂无图片
编程学习 ·

718. 最长重复子数组

给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。目录1、题目分析2、解题分析3、代码示例 1:输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出: 3 解释: 长度最长的公共子数组是 [3, 2, 1]。1、题目分析求两个数组公共的子数组的长度,那么可以用较短的那个…
暂无图片
编程学习 ·

Python简介和安装

Python简介 Python是一种跨平台的计算机程序设计语言。是由荷兰著名的“龟叔(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言,是用龟叔喜欢看的一个马戏团来命名。在TIOBE排行榜中Python,C语言和JAVA一直位于前三甲,是非常流行的编程语言…
暂无图片
编程学习 ·

面试题:从 URL 在浏览器被输入到页面展现的过程中发生了什么?

曾经有这么一道面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?要搞懂这个问题,我…
暂无图片
编程学习 ·

基于jupyter notebook的python编程-----Win10通过OpenCv-3.4.1进行人脸口罩数据集的模型训练并进行戴口罩识别检测

基于jupyter notebook的python编程-----Win10通过OpenCv-3.4.1进行人脸口罩数据集的模型训练并进行戴口罩识别检测目录一、OpenCv的下载及安装1、OpenCv的下载2、OpenCv的安装3、查看是否具有模型训练环境二、人脸口罩数据集的下载及处理1、人脸口罩数据集下载2、数据集重命名为…
暂无图片
编程学习 ·

MySql简单入门_第四篇(1)_视图

4、使用视图【将视图用于检索SELECT 而不用于更新INSERT,UPDATE和DELETE】视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。视图提供了一种MySQL的SELECT语句层次的封装,可用来简化数据处理以及重新格式化基础数据或保护基础数据。【视图仅仅是用…
暂无图片
编程学习 ·

MFC调用winhttp实现简易的HTTP服务器程序

Windows提供的winhttp函数库用来快速实现HTTP协议的应用程序,包括客户端和服务器端。服务器开发一般流程是这样的:1.HttpInitialize 初始化WinHTTP函数库;2.HttpCreateHttpHandle 创建一个HTTP队列句柄,用来接收HTTP请求;3.HttpAddUrl 绑定要监听的URL,写为http://*:80/表…
暂无图片
编程学习 ·

ISIS DIS(学习笔记+实验验证)

ISIS DIS原理概述实验一,实验目的二,实验内容(一)实验拓扑(二)配置步骤1,基本配置2,配置IS-IS路由协议3,查看默认选举的DIS4,修改DIS优先级来控制DIS选举结果 原理概述 OSPF协议支持四种网络类型IS-IS只支持两种:广播网络和点到点网络 与OSPF协议相同,IS-IS协议会在…
暂无图片
编程学习 ·

小甲鱼python听课笔记p11-p15

p11 7.1 列表1 = 打了激素的数组列表可以存放不同类型的数,还可以创建空列表append():向列表里面添加数据末尾添加一个元素但是只能一次插入一个数据extend():扩张的方式来扩展列表末尾添加多个元素,但要求已列表的格式添加[x,x,x,x]用一个列表来扩展另一个列表,所以他…
暂无图片
编程学习 ·

selenium+ChromeDriver+java爬虫初探

selenium+ChromeDriver+java爬虫初探seleniumChromeDriver简单的demo selenium 自动化测试工具,可以完全模拟人的行为。我们可以用它来打开浏览器,访问指定URL,并且定位到具体的按钮,点击触发事件等等。ChromeDriver selenium和谷歌浏览器交互,需要这个驱动。下载地址(ht…
暂无图片
编程学习 ·

GitHub更新fork的代码

1、在本地装好github客户端,或者git客户端 2、clone 自己的fork分支到本地,可以直接使用github客户端,clone到本地,如果使用命令行,命令为:git clone https://github.com/liuyanqing1023/WxJava.git3、增加源分支地址到你项目远程分支列表中(此处是关键),先得将原来的仓…
暂无图片
编程学习 ·

mongoDB采坑

mongoDB采坑 安装问题没有权限参考 https://blog.csdn.net/qq_20084101/article/details/82261195
暂无图片
编程学习 ·

json从立地到成佛

文章目录诞生于JavaScript,json的前世今生json含义json诞生搞清json兄弟姐妹,看清区别json VS xml小小翻译官,json的应用前端ajax+json异步传输:跨平台webservice:非关系数据库存储(Nosql)拒绝四不像,json语法有要求json语法规则json名称/值json对象json数组JavaScript对象…
暂无图片
编程学习 ·

pyspark_聚合操作groupby_sum

print(*****************整体变化:) print(DF_temp.groupby().agg({deposit_increase:sum}).collect()) print(***************存款人均变化:) print(DF_temp.groupby().agg({deposit_increase:mean}).collect())
暂无图片
编程学习 ·

数据结构-字典

字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对 哈希表 哈希表由dict.h/dictht结构定义 typedef struct dictht {// 哈希表数组dictEntry **table;// 哈希表大小unsigned long size;// 哈希表大小掩码,用于计算…
暂无图片
编程学习 ·

关于atomic到底安不安全

atomic 实际上相当于一个引用计数器,这个大家很熟悉,如果被标记了atomic,那么被标记了的内存本身就有了一个引用计数器,第一个占用这块内存的线程,会给这个计数器+1,在这个线程操作这块内存期间,其他线程在访问这个内存的时候,如果发现“引用计数器”不为0,则阻塞,实…