记录一下开始搭建springboot+jsp项目遇到的一个问题
最近刚开始学习搭建springboot项目,用到的ide工具是idea,前端用的是jsp
简述自己搭建项目的过程
直接上图
- 在idea中创建一个springboot项目,选择好自己使用的jdk
- 刚创建好的项目目录结构如下图所示。其中,java目录下使我们java代码:像controller,service之类;resources目录下存放的是一些项目相关的静态文件和配置文件:static主要存放js文件、图片和html文件,templates放得是前端页面thymeleaf,application.properties就是springboot配置文件啦
- 因为我前端用的是jsp,所以在java和resources并列的位置创建了一个webapp,然后在webapp下创建了一个WEB-INF目录用来存放jsp文件
- 然后在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>
- 对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
- 后边就是写自己的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/
还是自己太粗心啊
总结加补充
我在创建项目时有一步没有做
- 进入项目设置界面
- 创建一个web
- 将Deployment Descriptors下的内容清空,这部分用来配置web.xml路径,清空是因为springboot项目用不到web.xml;将web Resource Directory路径改为webapp路径,用来指示前端页面文件在该目录下
- 配置完成后项目中的变化是,webapp文件夹上多了一个小圆点
现在在webapp下可以创建jsp文件了,如果不配置,是不能创建的