一般而言,springboot是使用自己内嵌的servlet容器,比如tomcat等等,而且默认的模板引擎是thymeleaf,那么如何让springboot使用外部的servlet容器并支持对jsp的使用呢?

接下来,我们使用编辑器idea来看一下。

1、新建一个springboot项目时选择war

加入启动器web

点击next,然后点击finish。

此时目录结构如下:

并没有之前的web项目的/webapp/WEB-INF/

2、创建web项目对应的目录结构

点击idea中右上角的这个按钮:

我们可以看到:

我们双击红色文字:弹出

点击OK即可。

我们同时注意到上面的:

选择web.xml,弹出

我们将路径修改为自己:项目下src\main\webapp\WEB-INF\web.xml,点击OK即可。最后点击OK。

此时就会生成web项目相关文件:

接下来,我们点击:

选择:

我们给该服务起个名:tmcat8,同时引入自己本地的文件,选择Configure

之前添加了tomcat7,这次我们选择tomcat8

点击OK,我们再将注意力转到Deployment:选择

选择要部署的war包:

点击OK。最后点击Apply,点击OK。

然后我们就可以启动我们刚刚配置的tomcat8了。

我们在浏览器中 :

说明是成功的了。

3、下面我们再编写页面测试一下:

我们在webapp下新建一个hello.jsp,并在浏览器中输入localhost:8080/hello.jsp

<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2020/2/5
Time: 13:40
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>hello</h1>
</body>
</html>

成功得到相应界面。

我们再在hello.jsp中添加跳转的:

<a href="/test">test</a>

在application.properties配置文件中配置视图解析器

spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp

在WEB-INF下新建一个views文件夹,向文件夹里面新建一个success.jsp

<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2020/2/5
Time: 13:47
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>success</h1>
<h4>${username}</h4>
</body>
</html>

在com.gong.springboot下新建一个controller包,在该包下新建一个TestController.java

package com.gong.springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
public class TestController {
@RequestMapping("/test")
public String test(Model model){
model.addAttribute("username","tom");
return "views/success";
}
}

最后我们看下目录结构:

启动服务器:

点击test:

跳转到success.jsp ,成功取得相应信息。

至此在springboot中使用外部servlet容器以及对jsp的支持就完成了。

关键说明:

(1)必须新建一个war项目

(2)pom.xml中将嵌入式的tomcat指定为provided,说明目标环境已经有了。引用外部tomcat时系统会为我们自动导入。

        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>

(2)必须有编写一个SpringBootServletInitializer的实现类,并调用configure方法:创建项目时已经有了。

package com.gong.springboot;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class ServletInitializer extends SpringBootServletInitializer { @Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(ServletJspApplication.class);
} }

springboot开发之使用外部servlet容器及对jsp的支持的更多相关文章

  1. 19. SpringBoot_web开发-使用外部Servlet容器&JSP支持

    還沒有web.xml,生  配置tomcat 嵌入式Servlet容器:应用打成可执行的jar 优点:简单.便携: 缺点:默认不支持JSP.优化定制比较复杂 使用定制器[ServerPropertie ...

  2. 尚硅谷springboot学习27-使用外置servlet容器

    嵌入式Servlet容器:应用打成可执行的jar ​ 优点:简单.便携: ​ 缺点:默认不支持JSP.优化定制比较复杂(使用定制器[ServerProperties.自定义EmbeddedServle ...

  3. 尚硅谷springboot学习26-嵌入式servlet容器自动配置、启动原理

    EmbeddedServletContainerAutoConfiguration:嵌入式的Servlet容器自动配置 @AutoConfigureOrder(Ordered.HIGHEST_PREC ...

  4. 尚硅谷springboot学习25-嵌入式Servlet容器

    SpringBoot默认使用Tomcat作为嵌入式的Servlet容器:

  5. SpringBoot起飞系列-配置嵌入式Servlet容器(八)

    一.前言 springboot中默认使用的是tomcat容器,也叫做嵌入式的servlet容器.因为它和我们平常使用的tomcat容器不一样,这个tomcat直接嵌入到的springboot,平常我们 ...

  6. Jfinal极速开发微信系列教程(三)--------------对JSP的支持以及部署Tomcat运行异常问题

    本文章主要解决以下问题: 1.Jfianl对JSP的支持2.Jfianl Maven项目部署到Tomcat,启动项目异常问题解决 第一个问题重现截图解决方案:1.在configConstant中添加视 ...

  7. 使用外部容器运行spring-boot项目:不使用spring-boot内置容器让spring-boot项目运行在外部tomcat容器中

    前言:本项目基于maven构建 spring-boot项目可以快速构建web应用,其内置的tomcat容器也十分方便我们的测试运行: spring-boot项目需要部署在外部容器中的时候,spring ...

  8. spring-boot开发:使用内嵌容器进行快速开发及测试

    一.简述一下spring-boot微框架 1.spring-boot微框架是什么? 大家都知道,在使用spring框架进行应用开发时需要很多*.xml的初始化配置文件,而springBoot就是用来简 ...

  9. java框架之SpringBoot(8)-嵌入式Servlet容器

    前言 SpringBoot 默认使用的嵌入式 Servlet 容器为 Tomcat,通过依赖关系就可以看到: 问题: 如何定制和修改 Servlet 容器相关配置? SpringBoot 能否支持其它 ...

随机推荐

  1. CentOS遇到Qt编译问题(error: cannot find -lGL)

    1.安装Qt,进入CentOS系统的终端,依次执行以下命令 chmod +x qt-opensource-Linux-x64-5.5.1.run ./qt-opensource-linux-x64-5 ...

  2. torch or numpy

    黄色:重点 粉色:不懂 Torch 自称为神经网络界的 Numpy, 因为他能将 torch 产生的 tensor 放在 GPU 中加速运算 (前提是你有合适的 GPU), 就像 Numpy 会把 a ...

  3. 利用OGG进行数据库表的初始化

    OGG初始化 1.停止目标端re1进程 2.配置ei进程(若目标端有ei进程之前投递的文件则先清空) GGSCI (localhost) 1>add extract ei1, sourceist ...

  4. 洛谷$P2469\ [SDOI2010]$ 星际竞速 网络流

    正解:网络流 解题报告: 传送门$QwQ$ 题目好长昂,,,大概概括下就说有$m$条单向边,$n$个点,每条边有一条边权,每个点有一个点权,然后问每个点都要到达一遍的最小代价是多少$QwQ$? 发现有 ...

  5. Spring Boot 配置文件中使用变量、使用随机数

    参数引用 在application.properties中的各个参数之间可以直接通过是使用placeHolder的方式进行引用,如: book.author=Clark book.name=C++ b ...

  6. delphi7 如何描述窗体上的全部控件

    在delphi开发中,经常需要用到窗体中控件的name名来进行对象方法或属性的调用,所以如何对delphi窗体进行简洁,清楚,完整的描述就很重要.最好能不看界面也能进行界面编码,具体如下表所示: xx ...

  7. docker故障排查

    代理服务器设置 代理服务器可以在启动并运行后阻止与Web应用程序的连接.如果您位于代理服务器后面,请使用以下ENV命令将以下行添加到Dockerfile中,以指定代理服务器的主机和端口: # Set ...

  8. 原生js中call、apply、bind的区别和相同点

    结论: 相同点: 1.都是js原生方法,改变函数中的this指向 2.都可以传递参数,第一个参数为 把this指向到哪里去,即目标元素 不同点: 1.call和apply都是主动触发,绑定后自动执行, ...

  9. infer 代码静态分析

    infer 代码静态分析 静态代码分析工具,主要是为了提高我们的代码质量. 通常,我们提高代码质量的方式是通过CodeReview,但是这个过程耗费的人工和时间往往较大.并且随着代码量的增加人肉检测起 ...

  10. try catch 自定义捕获异常

    当我们完成一个程序时,如果没有异常捕获的话,用户使用时会出现许多bug.而加入异常捕获之后便会提醒用户使用时避免产生不必要的错误.具体操作实现如下: 首先创造一个MyException类,继承自Exc ...