In this tutorial, I show you how we can deploy a Spring Boot application using JSP to external Tomcat server. First we create a simple Spring boot web application with JSP then we will create a WAR file of it and finally we deploy the WAR file in the external tomcat server.
Learn Spring boot at https://www.javaguides.net/p/spring-boot-tutorial.html.
Learn Hibernate at https://www.javaguides.net/p/hibernate-tutorial.html
Development Steps
- Create Spring Boot Application
- Add maven dependencies
- Configure InternalResourceViewResolver for JSPs in application.properties file
- Create JSP page
- Create WAR file
- Deploy to Tomcat
1. Create a Spring Boot Application
There are many ways to create a Spring Boot application. You can refer below articles to create a Spring Boot application.
2. Add maven dependencies
<?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.1.0.RELEASE</version>
<relativePath />
<!-- lookup parent from repository -->
</parent>
<groupId>net.javaguides</groupId>
<artifactId>spring-data-war</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>spring-data-war</name>
<description>Demo project for Spring Boot Restful web services</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Need this to compile JSP -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</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>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<finalName>springboot-jsp-web</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3. Create HelloWorldController
Let's create a simple HelloWorldController class which exposes a "/test" request mapping:
package net.javaguides.springboot;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloWorldController {
@RequestMapping("/test")
public String sayHello() {
return "hello";
}
}
3. Configure InternalResourceViewResolver for JSPs in application.properties file
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
4. Create JSP page
Create JSP view pages under src/main/webapp/WEB-INF/view directory ( If the directory does not exist then create directory structure):
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<p>
Hello World! Time is <%= new java.util.Date() %>
</p>
<p>
We are running on <%= application.getServerInfo() %>!!!
</p>
</body>
</html>
5. Create WAR file
To create a WAR file, perform the following steps.
1. Update main Spring Boot application
In your main Spring Boot application, you need to extend the SpringBootServletInitializer and override the configure(...) method:
package net.javaguides.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class SpringDataWarApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringDataWarApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(SpringDataWarApplication.class, args);
}
}
3. Update Maven POM file
- Update your POM.xml to use WAR packaging
<packaging>war</packaging>
- In POM.xml, add dependency to be able to compile JSPs
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
- Make sure the Tomcat embedded does not interfere with the external Tomcat server.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
- Create the WAR file with the command:
mvn clean install
This will generate a WAR file in your project directory: target/springboot-jsp-web.war
6. Deploy to Tomcat
Copy your WAR file to the <tomcat-server>/webapps directory, wait for few seconds for Tomcat to deploy your app.
In a web browser, access your app at: http://localhost:8080/springboot-jsp-web/test
If everything is successful, you will see your application's web page.
Congratulations! You deployed a Spring Boot WAR file with JSP on to a Tomcat server.
Learn Spring boot at https://www.javaguides.net/p/spring-boot-tutorial.html.
Learn Hibernate at https://www.javaguides.net/p/hibernate-tutorial.html
https://ngdeveloper.com/angular-spring-boot-deployment-apache-tomcat/
ReplyDelete