让每一名学员高薪就业
返回列表 发新帖

SpringBoot中JSP的配置使用

[复制链接]

183

主题

193

帖子

1816

积分

精英

Rank: 5Rank: 5

积分
1816
发表于 2019-1-30 15:06:03  | 显示全部楼层 | 阅读模式
一、前言
Spring官网指出,当我们在使用内置的Tomcat运行SpringBoot项目的时候,对于JSP的支持有着一定的限制,具体如下:
(1) 当我们运行一个SpringBootweb项目的时候,如果使用JSP,需要将项目打成war包后部署到Tomcat容器中,JSP不能在jar包中受到支持。
(2) 我们需要创建一个自定义的error.jsp来处理错误的信息。
二、步骤
2.1 创建Maven项目
图片1.png
2.2 pom.xml文件
添加以下模块:
(1) 继承spring-boot-starter-parent
(2) 依赖web模块
(3) 添加servletjstl依赖
(4) 依赖spring-boot-starter-tomcat模块
(5) 添加springboot依赖jsptomcat-embed-jasper模块
(6) 配置spring-bootmaven插件
代码清单一:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.     <modelVersion>4.0.0</modelVersion>
  6.     <groupId>cn.itsource</groupId>
  7.     <artifactId>springboot_jsp</artifactId>
  8.     <version>1.0-SNAPSHOT</version>
  9.     <parent>
  10.         <groupId>org.springframework.boot</groupId>
  11.         <artifactId>spring-boot-starter-parent</artifactId>
  12.         <version>2.0.5.RELEASE</version>
  13.     </parent>
  14.     <packaging>war</packaging>
  15.     <dependencies>
  16.         <!--web模块-->
  17.         <dependency>
  18.             <groupId>org.springframework.boot</groupId>
  19.             <artifactId>spring-boot-starter-web</artifactId>
  20.         </dependency>
  21.         <!--servlet依赖-->
  22.         <dependency>
  23.             <groupId>org.springframework.boot</groupId>
  24.             <artifactId>spring-boot-starter-web</artifactId>
  25.         </dependency>
  26.         <dependency>
  27.             <groupId>javax.servlet</groupId>
  28.             <artifactId>jstl</artifactId>
  29.         </dependency>
  30.         <!--外置tomcat支持-->
  31.         <dependency>
  32.             <groupId>org.springframework.boot</groupId>
  33.             <artifactId>spring-boot-starter-tomcat</artifactId>
  34.             <scope>provided</scope>
  35.         </dependency>
  36.         <!--springboot的jsp支持-->
  37.         <dependency>
  38.             <groupId>org.apache.tomcat.embed</groupId>
  39.             <artifactId>tomcat-embed-jasper</artifactId>
  40.             <scope>provided</scope>
  41.         </dependency>
  42.     </dependencies>
  43.     <build>
  44.         <plugins>
  45.             <!--springboot的maven插件-->
  46.             <plugin>
  47.                 <groupId>org.springframework.boot</groupId>
  48.                 <artifactId>spring-boot-maven-plugin</artifactId>
  49.             </plugin>
  50.         </plugins>
  51.     </build>

  52. </project>
复制代码
2.3 application.yml配置
需要在application.yml配置文件中配置视图解析器的前缀与后缀
代码清单二:
  1. spring:
  2.   mvc:
  3.     view:
  4.       prefix: /WEB-INF/jsps/
  5.       suffix: .jsp
复制代码
2.4 入口类
spring-boot入口类必须实现SpringBootServletInitializer接口的configure方法才能让外部容器运行spring-boot项目,而SpringBootServletInitializer接口需要依赖javax.servlet。
代码清单三:
  1. package cn.itsource.springboot;

  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.boot.builder.SpringApplicationBuilder;
  5. import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

  6. @SpringBootApplication
  7. public class SampleJspApplication extends SpringBootServletInitializer{

  8.     @Override
  9.     protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
  10.         return builder.sources(SampleJspApplication.class);
  11.     }

  12.     public static void main(String[] args) {
  13.         SpringApplication.run(SampleJspApplication.class,args);
  14.     }
  15. }
复制代码
2.6 控制器Controller
Controller的写法与SpringMVC中的写法一致,如果使用了RestController注解,需要返回视图的话可以尝试将视图名称放入ModelAndView中返回。
代码清单四:
  1. package cn.itsource.springboot.controller;

  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. import org.springframework.web.servlet.ModelAndView;

  5. @RestController
  6. public class SimpleController {
  7.    
  8.     @RequestMapping("/index")
  9.     public ModelAndView index(ModelAndView mav){
  10.         System.out.println("Request in SimpleController");
  11.         mav.addObject("message","hello jsp");
  12.         mav.setViewName("index");
  13.         return mav;
  14.     }
  15.    
  16. }
复制代码
2.7 jsp页面
/WEB-INF/jsp目录下创建index.jsp页面
代码清单五:
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4.     <title>sample</title>
  5. </head>
  6. <body>

  7.     ${message}

  8. </body>
  9. </html>
复制代码
2.8 部署
将项目部署到外置的Tomcat中,启动项目测试
图片2.png
三、总结
虽然通过某些方式可以实现JSPSpringBoot项目中的使用,但是SpringBoot官方建议使用模板技术Thymeleaf来生成动态网页。

回复

使用道具 举报

0

主题

6

帖子

7

积分

菜鸟

Rank: 1

积分
7
发表于 2019-1-30 15:17:46  | 显示全部楼层
源码的老师都是好样的
回复 支持 反对

使用道具 举报

0

主题

2

帖子

8

积分

菜鸟

Rank: 1

积分
8
发表于 2019-1-30 15:19:37  | 显示全部楼层
往上顶!顶到所有人都看到为止!     
回复 支持 反对

使用道具 举报

1

主题

7

帖子

8

积分

菜鸟

Rank: 1

积分
8
发表于 2019-1-30 15:29:32  | 显示全部楼层
大家都来撩源妹儿!
回复 支持 反对

使用道具 举报

0

主题

21

帖子

10

积分

菜鸟

Rank: 1

积分
10
发表于 2019-1-30 15:30:26  | 显示全部楼层
往上顶!顶到所有人都看到为止!     
回复 支持 反对

使用道具 举报

0

主题

5

帖子

3

积分

菜鸟

Rank: 1

积分
3
发表于 2019-1-30 15:30:29  | 显示全部楼层
先回复一个再慢慢看
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

最新活动

联系我们

Java培训  |   PHP培训  |   UI培训  |   H5培训  |   Python培训  |   大数据培训  |   如何报名  |   视频下载
快速回复 返回顶部 返回列表