복붙노트

[SPRING] 스프링 부트 JSP 404

SPRING

스프링 부트 JSP 404

스프링 부트 서비스에 jsp 페이지를 추가하려고합니다. 내 문제는 내가 그 페이지로 이동하려고 할 때마다 나는 이것을 가지고있다.

내 application.properties에 접두어와 sufix를 추가했습니다 :

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

이것은 내 컨트롤러 클래스입니다.

@Controller
public class MarkerController {
    @RequestMapping(value="/map")
    public String trafficSpy() {
        return "index";
    }
}

내 응용 프로그램 클래스 :

@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    private static Logger logger = Logger.getLogger(Application.class.getName());

    public static void main(String[] args) {
            logger.info("SPRING VERSION: " + SpringVersion.getVersion());
            SpringApplication.run(Application.class, args);
        }
}

그리고 index.jsp :

<!DOCTYPE html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html lang="en">

<body>
    <h1>Hello, World!!!</h1>


    <p>JSTL URL: ${url}</p>
</body>

</html>

그리고 이것은 src 파일 구조입니다.

├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── internetprogramming
│   │   │               └── myserver
│   │   │                   └── server
│   │   │                       ├── Application.java
│   │   │                       ├── config
│   │   │                       │   └── DatabaseConfig.java
│   │   │                       ├── controller
│   │   │                       │   └── MarkerController.java
│   │   │                       ├── dao
│   │   │                       │   ├── MarkerDaoImplementation.java
│   │   │                       │   └── MarkerDaoInterface.java
│   │   │                       ├── Marker.java
│   │   │                       └── service
│   │   │                           ├── MarkerServiceImplementation.java
│   │   │                           └── MarkerServiceInterface.java
│   │   ├── resources
│   │   │   └── application.properties
│   │   └── webapp
│   │       └── WEB-INF
│   │           └── jsp
│   │               └── index.jsp

해결법

  1. ==============================

    1.종속성 목록에 jasper 및 jstl이 있는지 확인하십시오.

    종속성 목록에 jasper 및 jstl이 있는지 확인하십시오.

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
    

    다음은 작동 시작 프로젝트입니다 - https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-jsp

  2. ==============================

    2.최신 버전의 Spring에서는 다음을 application.properties 파일에 넣어야합니다.

    최신 버전의 Spring에서는 다음을 application.properties 파일에 넣어야합니다.

    또한 JSP 파일은 src / main / resources / META-INF / resources / WEB-INF / jsp에 저장해야합니다.

  3. ==============================

    3.내 문제는 내 컨트롤러 클래스의 주석으로 @Controller 대신 @RestController를 사용하고 있다는 것이 었습니다. 희망이 사람을 도울 수 있습니다.

    내 문제는 내 컨트롤러 클래스의 주석으로 @Controller 대신 @RestController를 사용하고 있다는 것이 었습니다. 희망이 사람을 도울 수 있습니다.

  4. ==============================

    4.내 문제는 Spring 버전이었다. 1.4.3 버전 이상에서 임베디드 JSP를 지원하는 것을 중단했다. 그래서 버전을 1.4.1로 바꿉니다.

    내 문제는 Spring 버전이었다. 1.4.3 버전 이상에서 임베디드 JSP를 지원하는 것을 중단했다. 그래서 버전을 1.4.1로 바꿉니다.

    다른 것은 이륙한다 :

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    

    그것과 함께 작동하지 않습니다.

  5. ==============================

    5.위의 답변 이외에 응용 프로그램을 병 대신 전쟁으로 배포해야합니다.

    위의 답변 이외에 응용 프로그램을 병 대신 전쟁으로 배포해야합니다.

    <groupId>com.igt</groupId>
    <artifactId>customer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    

    달리다

    java -jar customer-0.0.1-SNAPSHOT.war
    

    또한 응용 프로그램을 war 나 실행 가능한 응용 프로그램으로 시작하려면 SpringBootServletInitializer 콜백과 main 메소드에서 사용할 수있는 방법으로 빌더의 사용자 정의를 공유해야합니다.

    package com.igt.customer;
    
    import java.util.Arrays;
    
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.Bean;
    
    
    
    @SpringBootApplication
    public class CustomerApplication extends org.springframework.boot.web.support.SpringBootServletInitializer {
    
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(CustomerApplication.class);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(CustomerApplication.class, args);
        }
    
    
    
         @Bean
            public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
                return args -> {
    
                    System.out.println("Let's inspect the beans provided by Spring Boot:");
    
                    String[] beanNames = ctx.getBeanDefinitionNames();
                    Arrays.sort(beanNames);
                    for (String beanName : beanNames) {
                        System.out.println(beanName);
                    }
    
                };
            }
    
    
    }
    

    참조하십시오

  6. ==============================

    6.Spring MVC는 디폴트 (fall-back) 오류 페이지를 즉시 사용하지 않는다. 기본 오류 페이지를 설정하는 가장 일반적인 방법은 항상 SimpleMappingExceptionResolver (스프링 V1 이후)입니다. 그러나 Spring Boot는 또한 오류 복구 페이지를 제공합니다.

    Spring MVC는 디폴트 (fall-back) 오류 페이지를 즉시 사용하지 않는다. 기본 오류 페이지를 설정하는 가장 일반적인 방법은 항상 SimpleMappingExceptionResolver (스프링 V1 이후)입니다. 그러나 Spring Boot는 또한 오류 복구 페이지를 제공합니다.

    시작할 때, Spring Boot는 / error에 대한 매핑을 찾습니다. 규칙에 따라 / error로 끝나는 URL은 같은 이름의 논리적보기로 매핑됩니다. 오류. 일반적으로이 뷰는 error.html Thymeleaf 템플릿에 차례로 매핑됩니다. (JSP를 사용한다면, 당신의 설정에 따라 error.jsp에 매핑 될 것입니다. InternalResourceViewResolver).

    Spring Boot는 classpath에있는 한 Thymeleaf를 뷰 렌더링 엔진으로 자동으로 사용하고 구성합니다.

    Thymeaf Maite :

    다음 명령으로 Maven 3을 설치했는지 확인하십시오 : mvn --version. 프로젝트를 생성하고자하는 디렉토리로 이동하여 Maven archtetype을 실행하십시오 :

    mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=pl.codeleak.demos.sbt -DartifactId=spring-boot-thymeleaf -interactiveMode=false
    

    위의 명령은 새로운 디렉토리 spring-boot-thymeleaf를 생성합니다. 이제 IDE로 가져올 수 있습니다. 다음 단계는 응용 프로그램을 구성하는 것입니다. pom.xml을 열고 부모 프로젝트를 추가하십시오.

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.8.RELEASE</version>
    </parent>
    

    지정되지 않은 채로있는 경우 상위 프로젝트의 값이이 프로젝트의 기본값이됩니다. 다음 단계는 웹 의존성을 추가하는 것입니다. 그렇게하기 위해, 나는 이전에 모든 의존성을 제거하고 (실제로는 3.8.1 절) 아래의 의존성을 추가했다.

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    </dependencies>
    

    Maven이 종속물을 다운로드하고 mvn dependency : tree를 실행하여 종속물이 어떤 것인지 확인합니다. 다음은 패키징 구성입니다. Spring Boot Maven Plugin을 추가하자.

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    

    Tymeleaf with Gradle :

    Thymeleaf를 클래스 패스에 사용하려면

    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
    

    gradble 빌드 파일에서 (관련 maven 의존성을 사용하는 것은 간단합니다).

    사용중인 컨트롤러에 따라 index.jsp 뷰를 표시하려면 src / main / resources / templates / 아래에 배치해야합니다.

    / Error에서 View 로의 매핑이 없다면, Spring Boot는 HTTP 상태 정보와 메시지와 같은 오류 세부 정보가있는 최소 페이지 인 자체 Whitelabel Error Page 인 자체 오류 페이지를 정의합니다 잡히지 않은 예외로부터).

  7. ==============================

    7.jsp와 함께 thymeleaf를 사용할 수 있지만 다음과 같이 작성해야합니다.

    jsp와 함께 thymeleaf를 사용할 수 있지만 다음과 같이 작성해야합니다.

    spring.thymeleaf.excluded-view-names=#jsp file without extension
    

    application.properties 파일에서

  8. ==============================

    8.이것을 pom.xml에 넣으려면

    이것을 pom.xml에 넣으려면

    <!-- JSP -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- jstl for jsp -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    

    충분하지 않을 수도 있습니다.

    이것을 놓치지 마십시오.

    <packaging>war</packaging>
    

    그렇지 않으면 패키지를 빌드 할 때 jar 파일로 표시되며 JSP 또는 내장 된 Tomcat이 없습니다.

    실행 가능한 예제와 설명은 https://www.surasint.com/spring-boot-jsp/에서 확인하십시오.

  9. ==============================

    9.오류 폴더 아래에 오류 jsp 파일을 추가하십시오.

    오류 폴더 아래에 오류 jsp 파일을 추가하십시오.

    application.properties
    spring.mvc.view.prefix=/views/jsp/
    spring.mvc.view.suffix=.jsp
    
    jsp files :
    /views/jsp/error/401.jsp
    /views/jsp/error/404.jsp - to display 404 instead of default whitelabel page
    
  10. from https://stackoverflow.com/questions/29782915/spring-boot-jsp-404 by cc-by-sa and MIT license