java - mvc - 스프링 타임 리프




스프링 부트 JSP 404 (6)

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

Whitelabel 오류 페이지

이 응용 프로그램에는 / error에 대한 명시적인 매핑이 없으므로이를 대체로 간주합니다.

Tue Apr 21 23:16:00 EEST 2015 예기치 않은 오류가 발생했습니다 (유형 = 찾을 수 없음, 상태 = 404). 사용할 수있는 메시지가 없습니다.

내 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

Spring MVC는 기본 (fall-back) 오류 페이지를 즉시 사용할 수있는 기능을 제공하지 않는다. 기본 오류 페이지를 설정하는 가장 일반적인 방법은 SimpleMappingExceptionResolver (사실 Spring V1 이후)입니다. 그러나 Spring Boot는 또한 오류 복구 페이지를 제공합니다.

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

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

Maven이있는 Thymeleaf :

다음 명령으로 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 자체 오류 페이지를 정의합니다 잡히지 않은 예외로부터).


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

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

application.properties 파일에서


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


오류 폴더 아래에 오류 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

이것을 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/ 에서 https://www.surasint.com/spring-boot-jsp/






spring-mvc