[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.종속성 목록에 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.최신 버전의 Spring에서는 다음을 application.properties 파일에 넣어야합니다.
최신 버전의 Spring에서는 다음을 application.properties 파일에 넣어야합니다.
또한 JSP 파일은 src / main / resources / META-INF / resources / WEB-INF / jsp에 저장해야합니다.
-
==============================
3.내 문제는 내 컨트롤러 클래스의 주석으로 @Controller 대신 @RestController를 사용하고 있다는 것이 었습니다. 희망이 사람을 도울 수 있습니다.
내 문제는 내 컨트롤러 클래스의 주석으로 @Controller 대신 @RestController를 사용하고 있다는 것이 었습니다. 희망이 사람을 도울 수 있습니다.
-
==============================
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.위의 답변 이외에 응용 프로그램을 병 대신 전쟁으로 배포해야합니다.
위의 답변 이외에 응용 프로그램을 병 대신 전쟁으로 배포해야합니다.
<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.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.jsp와 함께 thymeleaf를 사용할 수 있지만 다음과 같이 작성해야합니다.
jsp와 함께 thymeleaf를 사용할 수 있지만 다음과 같이 작성해야합니다.
spring.thymeleaf.excluded-view-names=#jsp file without extension
application.properties 파일에서
-
==============================
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.오류 폴더 아래에 오류 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
from https://stackoverflow.com/questions/29782915/spring-boot-jsp-404 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 맞춤법 봄 유효성 검사 오류 (0) | 2019.01.14 |
---|---|
[SPRING] 2 개의 트랜잭션 관리자로 @EnableTransactionManagement 주석 (0) | 2019.01.14 |
[SPRING] Spring MVC Rest Service Controller는 오류 처리가 올바르게 완료 되었습니까? (0) | 2019.01.14 |
[SPRING] 인터셉터가 autowired spring beans를 사용하는 Spring 인터셉터를위한 Java 설정 (0) | 2019.01.14 |
[SPRING] Spring MVC HandlerInterceptorAdapter를 사용하여 HttpServletResponse에서 응답 바디 로깅 (HTML) 로깅 (0) | 2019.01.14 |