왜 Tomcat이 JSP 페이지를 렌더링하지 않습니까? 경우에는 내가 서블릿 컨테이너 URL에 말하고 : (컨트롤러가 GET 처리 이후 - 요청) 그것보다 더 http://localhost:8080/contacts
괜찮아,하지만 직접 톰캣에 말할 때마다 어디에서 얻을 수보다 프로젝트의 JSP 물리적 http://localhost:8080/WEB-INF/views/list.jsp
입니다Tomcat이 JSP 페이지를 렌더링하지 않습니다.
404 오류
이쪽하게 IntelliJ IDEA 프로젝트 구조는 다음과 같습니다
내 pom.xml
:
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.0.RELEASE</version>
</dependency>
<!--support @Service, @Repository -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.0.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.0.RELEASE</version>
</dependency>
<!-- teg library -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
<scope>test</scope>
</dependency>
</dependencies>
컨트롤러 :
@Controller
@RequestMapping("/contacts")
public class ContactController {
@RequestMapping(method = RequestMethod.GET)
public String list(Model model) {
return "list";
}
}
JSP :
서블릿 사양의 §10.5에 기술 된 바와 같이<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<%--
Created by IntelliJ IDEA.
User: Игорь
Date: 07.10.2017
Time: 13:18
To change this template use File | Settings | File Templates.
--%>
<html>
<head>
<title>Title</title>
</head>
<body>
<% System.out.println("Inside JSP file!!!!!!!!!!!!!!!!!!!"); %>
<h1>Contact Listing</h1>
SOME MESSAGE!
</body>
</html>
'@RequestMapping ("/ contacts")'은 웹 응용 프로그램 루트의 위치를 Tomcat에 알려줍니다. 'WEB-INF/views'는 서블릿 매핑의 일부가 아니므로 Tomcat은 list.jsp를 검색 할 수 없습니다. –
@ dsp_user 여기서 말하는 내용은 몇 가지 수준에서 잘못되었습니다. @RequestMapping ("/ contacts")'Spring 서블릿이 들어오는 요청을 언제이 컨트롤러로 보내야하는지 알려준다. '/ contacts'는 웹 응용 프로그램 루트 + Spring 서블릿 매핑 URL 패턴에 대한 상대 *입니다. 응용 프로그램 루트 자체는 아닙니다. 즉 '/spring-servlet-mapping/contacts' –