idea部署springboot项目到外部tomcat
Posted PacosonSWJTU
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了idea部署springboot项目到外部tomcat相关的知识,希望对你有一定的参考价值。
【README】
本文旨在记录idea部署springboot项目到外部tomcat的步骤;
第一次部署会踩很多坑儿,多查google,多重试;
第一次部署,不建议手动录入依赖,因为有可能遗漏;而且网络上资料很多但也很乱,很容易出错和掉坑儿里;
【1】创建项目
【2】 引入 spring web相关依赖
1)选择依赖
点击finish
2)项目pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cmc</groupId>
<artifactId>springbt-04-web-jsp2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>springbt-04-web-jsp2</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
使用外部tomcat,而不是内嵌tomcat的方式有两种, 官方文档推荐的就是上面这一种 provided;
官方文档参见 “How-to” Guides
3)整体目录结构
【3】创建web.xml,设置根路径
1)进入 项目结构页面的module页面 (快捷键 ctrl+alt+shift+s)
2) 创建web根目录 src\\main\\webapp
双击创建;
3) 创建web.xml文件
根目录(D:\\workbench_idea\\spring-bucket\\springboot\\springbt-04-web-jsp2\\src\\main\\webapp)下WEB-INF下创建web.xml 文件
注意: 路径不要写错了 ;
4)创建完成后的效果
【4】配置外部tomcat(这个简单)
1)进入配置页面
2)添加tomcat
【5】部署springboot项目到外部tomcat
1)进入部署页面
2)选择 exploded web制品库
【6】编写web页面和controller
1)编写web页面
hello.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>hello</title>
</head>
<body>
<h1>hello world.</h1>
</body>
</html>
2)启动tomcat,查看访问效果
3)添加 controller
3.1)MyController
package com.cmc.springbt.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MyController {
@GetMapping("/aaa")
public String hello(Model model) {
System.out.println("hello aaa");
model.addAttribute("msg", "hello aaa");
return "success";
}
}
3.2)修改hello.jsp
<body>
<h1>hello world.</h1>
<a href="aaa">aaa</a>
</body>
3.3)添加 WEB-INF\\success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>success</title>
</head>
<body>
<h1>SUCCESS</h1>
<h1>${msg}</h1>
</body>
</html>
添加视图前后缀
application.properties
# 设置视图路径前后缀
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
# 设置应用访问根路径
server.servlet.context-path=/springbt_04_web_jsp2
3.4)目录结构
3.5)访问效果
4)springboot启动主程序
Springbt04WebJsp2Application
public class Springbt04WebJsp2Application {
public static void main(String[] args) {
SpringApplication.run(Springbt04WebJsp2Application.class, args);
}
}
ServletInitializer
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Springbt04WebJsp2Application.class);
}
}
【7】小结
step1)必须创建一个 war项目;
step2)将嵌入式的tomcat设置为provided,表示 不打入 war包;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
step3)必须编写一个 SpringBootServletInitializer 实现类; 目的调用 configure方法;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
// 传入springboot应用主程序
return application.sources(Springbt04WebJsp2Application.class);
}
}
step4)启动tomcat即可
以上是关于idea部署springboot项目到外部tomcat的主要内容,如果未能解决你的问题,请参考以下文章
[原创]-在Idea中使用Alibaba Cloud Toolkit将SpringBoot项目部署到ECS服务器