前言
在上一章节中,壹哥 跟大家讲过现在项目比较流行的开发模式,稍微大点的项目一般都是采用前后端分离的开发模式。如果我们的项目采用的是前后端不分离的模式,在SpringBoot中推荐我们使用Themeleaf模板来作为页面。
但是咱们都知道,Spring MVC中是支持JSP的,但是在Spring Boot中,其实不建议我们使用JSP。因为SpringBoot自带的嵌入式servlet容器对jsp的解析有使用限制,而且jsp的本质是Servlet,每个页面的加载都需要先进行编译,所以jsp的效率相对于html或Themeleaf都比较低。
但是如果你非要在Spring Boot中使用jsp可不可以呢?还是那句话,既然你有这样另类的需求,那 壹哥 就想办法满足你呗,接下来我们就在SpringBoot中实现对jsp的支持。
一. 搭建jsp运行环境
前面我一直在说,本系列教程的所有项目代码,都会在同一个父项目下创建,所以我们继续在之前的项目中创建一个新的模块,创建过程请参考之前的文章。
1. 创建Maven web module
我们这里直接在之前的project中创建一个新的module。
设置新模块的名称,各位随意即可。
2. 改造项目为Spring Boot项目
在新模块demo06的pom.xml文件中,请添加相关依赖和插件。
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath/><!-- lookup parent from repository --></parent><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
3. 添加web相关依赖
这里我们一定要在pom.xml文件中,添加web和jsp等相关依赖包。
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- servlet 依赖. --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
4. 在application.properties中配置支持jsp
除了添加上述依赖包之外,我们还要在application.properties配置文件中,设置逻辑视图名等配置信息,添加对jsp的支持,配置jsp模板文件的存放路径。
spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp
5. 创建webapp目录
然后在src\main\
目录下,手动创建出一个新的目录webapp\WEB-INF\jsp\
,我们可以在这里存放自己的jsp页面。你可能会问,为什么不把jsp页面直接放到resources目录下呢?这是因为jsp属于动态的页面,而且也不是专门的模板页面,所以我们根据以往的经验,专门创建一个webapp目录进行存放管理。
这里我们自己手动创建出这个目录即可。
二. 进行jsp编码
在上面的章节中,我们把jsp的运行环境编写完毕,接下来就开始编写jsp页面和相关接口。
1. 创建jsp页面
首先我们在上面创建的webapp\WEB-INF\jsp\
目录中,创建一个index.jsp文件。
jsp页面内容代码如下:
<%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@taglibprefix="spring"uri="http://www.springframework.org/tags"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><html><head><metacharset="UTF-8"><title>Boot支持JSP!</title></head><body><h2>Hello ${msg}</h2></body></html>
2. 创建一个Controller类
这里我创建一个Controller接口,并在这里进行页面跳转和传值的设置。
packagecom.yyg.boot.web; importorg.springframework.stereotype.Controller; importorg.springframework.ui.Model; importorg.springframework.web.bind.annotation.GetMapping; /*** Spring Boot中支持jsp功能的实现*/publicclassJspController { "/index") (publicStringindex(Modelmodel) { model.addAttribute("msg","跟一一哥学习SpringBoot中使用JSP功能!"); //要跳转到的页面视图名称return"index"; } }
3. 创建启动类
最后我们在项目的根目录com.yyg.boot
下创建一个启动类。
publicclassJspApplication { //注意:不要直接启动该类,要以spring-boot:run命令方式启动才行,否则404!!!publicstaticvoidmain(String[] args) { SpringApplication.run(JspApplication.class, args); } }
注意:
我们不要直接利用入口类来启动该项目,要以spring-boot:run命令方式启动才行,否则可能会产生404异常!!!
4. 启动项目
不要直接以启动类的方式来启动项目,请用spring-boot:run命令方式启动才行,否则404!!!
spring-boot:run
该命令可以在当前项目模块的Maven Projects\Plugins中找到。
双击上图中的spring-boot:run即可,当然你如果把maven环境变量都配置好了,也可以用命令行来启动。
5. 运行测试
项目启动起来之后,我们来测试一下jsp页面是否可以展示我们的数据。我们在浏览器中直接访问http://localhost:8080/index接口,即可跳转到对应的jsp页面。
注意:
再次强调一下,请以spring-boot:run命令方式启动!!!
6. 整个项目目录结构
下图展示了当前这个项目的完整包结构,请参考创建。
结语
至此,壹哥 就在SpringBoot中引入的jsp,我们发现也没什么难度,就是稍微比Themeleaf或纯html复杂一点点。
今日小作业:
用jsp页面,编写一个学生信息管理功能页面,实现对学生信息的增删改查。