前言:
随着时代的发展,springboot这一新兴技术受到越来越多的人们的追捧与使用,一般的开发都是基于vue+springboot之类的前后端分离开发,未经配置的原生springboot是不支持jsp文件的解析的,本文我们来介绍一下如何配置springboot来支持jsp文件的解析
虽然jsp技术已经因为落后被淘汰掉了,但是对于初学者而言,都是应该熟悉并且掌握的基本知识,我可以不用,但你不能不会
非前后端分离项目,搭建能运行jsp的SSM项目
1. 通过springboot创建新项目
选择Java8版本,打包方式为war包 (这点要注意,jsp项目包含了jsp网页文件,需要打成war包才能被支持)
这边我们用的是阿里云的spring initializr ,勾选需要的模块
这边勾选需要的模块即可,spring Web为必选项
2. 配置pom依赖:
配置mysql数据库连接(笔者使用的是MySQL8)
分别添加下面的依赖文件
<!--配置支持jsp-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
以此支持jsp
添加build文件,将jsp打包进war包
代码如下:
<resources>
<!-- 作用是打包时将jsp文件拷贝到META-INF目录下-->
<resource>
<!-- 指定处理哪个目录下的资源文件 -->
<directory>src/main/webapp</directory>
<!-- 注意此次必须要放在此目录下才能被访问到因为此路径是spring boot静态资源默认访问路径可以通过 -->
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
</resource>
</resources>
刷新maven 之后配置webapp文件夹
3. 添加webapp文件夹
首先在main目录下新建webapp文件夹(配置过pom文件夹后会提示)直接选择即可
之后打开模块设置
右击打开module设置
选择facets,配置web.xml文件 (截图的爆红是因为没有发现该目录下有webapp文件夹)
点击加号,新建web.xml文件
注意修改位置目录,添加src\main\webappweb.xml版本号随意(默认就行)
修改后多了web.xml文件
自行修改application.properties 配置正确的数据库配置(如果不使用数据库对jsp并没有影响,但是配置错误会导致http 500 服务器内部错误)
仅供参考
spring:
application:
name: petManager
# 数据库:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/petDB?serverTimezone=UTC
name: petDB
username: root
password: root
# spring mvc逻辑视图映射
mvc:
view:
prefix: /WEB-INF/
suffix: .jsp
# 静态资源文件映射
static-path-pattern: /static/**
web:
resources:
# 配置静态资源所在路径
static-locations: classpath:/static/
# 配置mybatis
mybatis:
#指定Mybatis的Mapper文件
mapper-locations: classpath:/mappers/*.xml
#指定Mybatis的实体目录
type-aliases-package: com.yanqi.petmanager.pojo
# 指定端口
server:
port: 8080
重点部分为mvc和web部分,配置MVC逻辑试图映射
spring:
mvc:
view:
prefix: /WEB-INF/
suffix: .jsp
# 静态资源文件映射
static-path-pattern: /static/**
web:
resources:
# 配置静态资源所在路径
static-locations: classpath:/static/
4. 编写测试类
新建controller测试类测试页面,位置在main/java/用户定义的文件主目录 下
写测试类……
同时在我们application.yml中指定的目录位置新建test.jsp(位置在webapp/WEB-INF/ 下)
test.jsp代码展示
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>测试</title>
</head>
<body>
<h1>测试!</h1>
</body>
</html>
controller代码展示
package com.yanqi.petmanager.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
@RequestMapping("/test")
public String Test(){
System.out.println("访问了test页面……");
return "test";
}
}
注意!这边的return "test"; 如果报错,那就是你jsp存放的位置没有被MVC框架检查到,确认一下自己存放的位置
访问页面
这样就是成功了,可以访问到jsp资源,控制台也出现了预设的输出内容
项目框架:
欢迎访问 个人博客:编程日记 | Yiki-Blog
内容还在陆续完善,欢迎交流探讨