本人刚学习springboot不久,在整合springboot、jsp、mybatis的过程中,遇到点坎坷,本文章记录springboot和jsp的整合过程,项目只涉及springboot和jsp,用较少的代码体现二者整合后可以正常运行。
以下是该项目的搭建环境
maven version: 3.5.2
springboot version:2.0.4
java version: 1.8.0_181
编译器:IntelliJ IDEA 2017.3.2
启动方式:main方法
一、首先新建项目:
填写项目信息
选择依赖,这里只选web,其他都不选
之后下一步、完成。
项目搭建起来之后,整理一下文档,删除我认为没有用的文件,配置文件我使用application.yml
二、在resources添加配置文件
application.yml
#端口号与网页前缀
server:
port: 8080
servlet:
context-path: /web
spring:
## jsp支持
mvc:
view:
suffix: .jsp
prefix: /WEB-INF/views/
##关闭默认模板引擎
thymeleaf:
cache: false
enable-spring-el-compiler: false
三、添加controller ,先把项目跑一下
IndexController.java
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.ArrayList;
import java.util.List;
/**
* 描述:
*
* @author hewm
* 2018-08-21 14:18:51 14:18
*/
@Controller
@RequestMapping("")
public class IndexController {
@RequestMapping("index")
@ResponseBody
public String index(){
return "index";
}
}
这里就不使用@RestController,因为主要目的是为了后面访问前端页面
然后启动
访问 http://localhost:8080/web/index
页面可以访问。
停止项目,接着开始整合jsp。
四、pom.xml添加依赖
需要加入的依赖只有
<dependencies>
<!-- 对jsp的支持的依赖-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!-- 不要加这个 <scope>provided</scope> -->
</dependency>
<!-- jstl 支持 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependencies>
完整的pom.xml
关于初始设置packing是jar还是war
在此处可以修改,这里的值是jar或者war我都试过都可以使用main启动
<packaging>jar</packaging>
五、添加webapp
在加webapp的时候,我自己失了智把webapp放在resources底下,导致出现404找不到webapp的路径
在main下新建一个文件webapp并加入static、WEB-INF、views
新建完成后的结构。
六、设置web,往配置中加入webapp
打开
选择Modules然后选中Web,如果没有Web点击绿色的加号添加。
先设置webapp
点击下图下面的绿色加号,将webapp路径设为刚刚添加的路径即可。然后点击apply,再配置web.xml
添加web.xml,点击上图中上面的绿色的加号,
直接点OK就可以了,如果web.xml文件在另一个文件里就复制到weapp的WEB-INF里面,再修改配置。
web.xml的内容不需要改动。
最终的配置如下图:
七、添加jsp
在views文件中右键新建jsp文件,如果前面没有设置webapp为web 文件,右键是不能直接建jsp。
加入c标签
和foreach循环
index.jsp
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>index</title>
</head>
<body>
<c:forEach items="${names}" var="name">
${name} <hr>
</c:forEach>
</body>
</html>
八、修改controller
去掉@ResponseBody
IndexController.java
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.ArrayList;
import java.util.List;
/**
* 描述:
*
* @author hewm
* 2018-08-21 14:18:51 14:18
*/
@Controller
@RequestMapping("")
public class IndexController {
@RequestMapping("index")
public String index(Model model){
List<String> names = new ArrayList<>();
names.add("aa");
names.add("bb");
names.add("cc");
model.addAttribute("names", names);
return "index";
}
}
启动项目,访问http://localhost:8080/web/index
可以正常访问jsp界面。
九、获取静态文件
往static中加入一张图片
在index.jsp头部加入
<c:set var="resourceRoot" value="${pageContext.servletContext.contextPath}"/>
在body中加入
<img src="${resourceRoot}/static/biaoqing.png">
加入重启项目,再次访问 http://localhost:8080/web/index
可以看到静态文件中的图片
先写到这里,关于springboot启用web.xml的配置:https://blog.csdn.net/songhaifengshuaige/article/details/54138023
以后再研究。