0
votes

I want to deploy web application that use jsp files using executable jar(Spring boot) Project structure:

1)in src\main\resources\META-INF\resources\WEB-INF\jsp folder i put my jsp files

2)app.prop file

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

3)Controller:

@Controller
@RequestMapping("test")
public class TestController {
    @RequestMapping(method = RequestMethod.GET)
    public String test(){
       // System.out.println("Inside controller");
        return "test";
    }
}

When i build it using mvn package it create jar file, to run jar file I have two options:

1)java -jar MyJar

2)mvn spring-boot:run

When i use mvn spring-boot:run and go to localhost:8080/test my browser show me content of test jsp file

When i use java -jar Myjar.jar and go to the same url i gor an 404 error

There was an unexpected error (type=Not Found, status=404).
/WEB-INF/jsp/test.jsp

I can't always use mvn spring-boot:run because i will deploy jar to remote server. How to solve this problem?

BTW this is my pom

 <description>Demo project for Spring Boot</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
        <relativePath/>
        <!-- lookup parent from repository -->
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
        </dependency>
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </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>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
1
But why using mvn spring-bot run it's work properly? - Almas Abdrazak
I think it's the same reason why java -jar target/....jar is working too - it's being run from the root folder, so maybe it finds the jsp's not from the .jar, but from the src folder. However, cd target & java -jar ...jar does not work - didgewind

1 Answers

-1
votes

java -jar Myjar.jar command do not deploy your application to embeded tomcat. If you want to use separate application server you can find out your application output in

/target

directory and you need to deploy it.