##使用idea整合springboo和jsp详细教程 ##
项目开发过程中用到springboot整合jsp,在自己百度了一堆网上的教程之后发现,在整合的过程中还是会出现问题,最主要的问题就是404,经过半天的努力之后,自己终于能够整合成功了,所以写个教程;
ps:楼下有朋友说按照我的步骤一步步走结果也是报404,我不知道你是不是使用的module子模块进行整合jsp,如果在一个项目中有父module子module,在子module中整合jsp时,按照下面的方是找不到jsp的,这里需要添加一个路径的配置,具体请看这边博客:springboot的maven多子模块项目整合jsp报错详解
第一步:使用idea创建一个springboot项目:





具体创建过程比较简单,这里就不多说;
第二步:添加依赖:
我本来的pom.xml是这样的:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
`
现在是这样的:注意在引用依赖的时候,有一个依赖的scope是需要被注释掉的:org.apache.tomcat.embed,她的scope不需要,如果你没有注释的话,后面访问jsp 的时候就会报404;
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- web项目依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<!--注意:spring boot对jsp的支持不是很好,在使用spring boot自带tomcat的同时,还需要引入另外的一个tomcat,以来如下所示,且scope属性需要被注释掉 -->
<!--注掉的原因是:maven默认scope是compile,表示打包时会把此包打入jar包中,而provided表示打包时不会打如jar包中,因为它默认是jar包中会提供,说白了就是你标注了provided就不会被打入jar包中,项目跑起来就肯定会有问题了 2019/12/4 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!--<scope>provided</scope> 注意,这个scope需要被注释掉-->
</dependency>
<!-- jsp标签库 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
第三步:添加controller:新建一个package,名字叫controller,并新建一个Java class,名为testController;

在TestController中的代码如下:
package com.ccx.springboot.jsp.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
@RequestMapping("/index")
public String index(){
return "index";
}
}
需要注意一个地方:controller上的注解为@Controller(表示是一个controller),而不是@RestController(返回json格式数据);
第四步:创建目录和jsp文件,并添加web.xml

如图所示:在main的下级目录,和Java、resources同级目录创建webapp文件夹,并依次创建WEB-INF和jsp,在jsp文件夹中创建index.jsp;在WEB-INF文件夹中创建web.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>
index.jsp文件内容如下(比较简单一个jsp):
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Full Layout - jQuery EasyUI Demo</title>
</head>
<body>
<input type="button" value="点我" />
<input type="text" style="height:100px;width:90%" id="input"/>
</body>
</html>
第五步:在application.properties中添加jsp的前缀和后缀(我的8080端口号被占用,这里修改一下端口号):
#页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
#页面默认后缀目录
spring.mvc.view.suffix=.jsp
#我的8080端口号被占用,改一下端口号
server.port=8092
第六步:启动项目并访问:http://localhost:8092/index
到这里就结束了,如果你的项目还起不来,或者按照我的教程访问不了jsp,或者报404的,你来打我!!!ps欢迎留言

本文详细介绍如何在SpringBoot项目中整合JSP,包括添加依赖、配置控制器、创建JSP文件及配置等步骤,解决常见404问题。
1637





