(8)SpringBoot整合JSP

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6




(8)SpringBoot整合JSP_spring

SpringBoot官方不推荐使用JSP来开发web页面,而是推荐如Thymeleaf,FreeMarker等模板引擎来开发,但是绝大部分做java的程序员还是习惯jsp;所以,本文先讲解SpringBoot如何支持jsp开发,后面再讲如何支持Thymeleaf。


整合jsp还是比较简单的,具体实践步骤如下:

1.pom.xml

我们先引入支持jsp的必要依赖:

<!--jsp-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>8.5.28</version>
</dependency>
<!--servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<!--jstl-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>

2.写页面

鉴于大多数学习SpringBoot的程序员都是有spring开发经验的,一般习惯的包结构都是:

  • main
  • webapp
  • WEB-INF
  • jsp
  • index2.jsp

而我们SpringBoot项目结构目前不是这样的,所以我们也在项目下建一个这样的结构(此步骤不是必须的,后面会配视图路径前缀,你建的结构,只要前缀配完可以读到就可以了,这里这么写只是因为大部分人习惯这么写。):

(8)SpringBoot整合JSP_spring_02

然后写一个简单的页面,后面做访问测试用。

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" %>
<div class="sm">
<form method="POST" enctype="multipart/form-data" action="/upload/uploadBlog">
<p>文件:<input type="file" name="file"/></p>
<p><input type="submit" value="上传" /></p>
</form>
</div>

3.配置视图

在application.properties中配置一下视图,如果你的包结构不是上面这样的,那你可以按照自己的结构配置即可,这里配置的是文件的前缀路径和文件后缀。

#jsp视图跳转
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

这样,当我们返回index2时,框架自动会去寻找/WEB-INF/jsp/index2.jsp这个文件的,他会自动组合前缀和后缀。注意:

/WEB-INF/jsp/

这后面是需要斜杠的,不然会组合成:/WEB-INF/jspindex2.jsp,会报错的。

4.写接口

注意,这个类的注解,不要再加@RestController,加完这个类所有的接口返回都自动成了json格式了,我们这里用@Controller就好。

package com.java4all.controller;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
/**
* Author: momo
* Date: 2018/3/30
* Description:
*/
@Controller
@RequestMapping("web")
public class WebController {
private final org.slf4j.Logger logger = LoggerFactory.getLogger("");
@RequestMapping(value = "index",method = RequestMethod.GET)
public String index(MultipartFile file){
return "index2";
}
}

5.ServletInitlalizer

ServletInitlalizer初始化,这个需要我们自己写一下,这样程序启动时会自动启动和加载servlet容器。

package com.java4all;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/**
* Author: momo
* Date: 2018/3/30
* Description:
*/
public class ServletInitlalizer extends SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return super.configure(builder);
}
}

6.访问接口

我们去浏览器访问接口:http://localhost:8088/web/index
会得到如下结果:

(8)SpringBoot整合JSP_github_03


本案例在github地址:https://github.com/lightClouds917/tmall/tree/dev


(8)SpringBoot整合JSP_java_04




阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Spring