Spring 启动 MVC:找不到 JSP
Spring boot MVC: can't find JSP
问题: 我无法在我的 Spring Boot web MVC 应用程序的 WEB-INF/jsp
下访问我的视图。
我做了什么:
这是我的 JSP:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<ul>
<%--@elvariable id="users" type="java.util.List"--%>
<c:forEach items="${utenti}" var="utente">
<li>
<c:out value="${utente.getUsername()}"/>
</li>
</c:forEach>
</ul>
</body>
</html>
这是我的控制器:
@Controller
public class UtenteController {
@Autowired
private UtenteService utenteService;
@RequestMapping("/lista_utenti")
public ModelAndView getListaUtentiView(){
ModelMap model = new ModelMap();
model.addAttribute("utenti", this.utenteService.getListaUtenti());
return new ModelAndView("lista_utenti", model);
}
}
这是我的 application.properties:
# MVC
spring.view.prefix=/WEB-INF/jsp/
spring.view.suffix=.jsp
#Postgres config
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/DB_Test
spring.datasource.username=postgres
spring.datasource.password=postgres
至少,我的主要应用程序:
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class SpringWebApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(SpringWebApplication.class, args);
}
@Override
protected final SpringApplicationBuilder configure(final SpringApplicationBuilder application) {
return application.sources(SpringWebApplication.class);
}
}
如果我去 http://localhost:8080/lista_utenti
我会得到的是:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Thu Jan 15 15:59:57 CET 2015
There was an unexpected error (type=Not Found, status=404).
No message available
我做错了什么?
Zio,你确定你已经在你的 pom 中包含了这个依赖项吗?
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
没有这个,我会得到你同样的错误。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>required</scope>
</dependency>
将它添加到我在 Intellij 中的项目并且它有效..
我正在将它添加到我的 Maven 依赖项中,现在它正在运行
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
在pom.xml文件中添加Tomcat嵌入Jasper依赖
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>9.0.30</version>
</dependency>
如果您已经从使用标准 thymeleaf 项目转移到 Bootstrap(就像我一样),请确保删除此依赖项;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
问题: 我无法在我的 Spring Boot web MVC 应用程序的 WEB-INF/jsp
下访问我的视图。
我做了什么:
这是我的 JSP:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<ul>
<%--@elvariable id="users" type="java.util.List"--%>
<c:forEach items="${utenti}" var="utente">
<li>
<c:out value="${utente.getUsername()}"/>
</li>
</c:forEach>
</ul>
</body>
</html>
这是我的控制器:
@Controller
public class UtenteController {
@Autowired
private UtenteService utenteService;
@RequestMapping("/lista_utenti")
public ModelAndView getListaUtentiView(){
ModelMap model = new ModelMap();
model.addAttribute("utenti", this.utenteService.getListaUtenti());
return new ModelAndView("lista_utenti", model);
}
}
这是我的 application.properties:
# MVC
spring.view.prefix=/WEB-INF/jsp/
spring.view.suffix=.jsp
#Postgres config
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/DB_Test
spring.datasource.username=postgres
spring.datasource.password=postgres
至少,我的主要应用程序:
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class SpringWebApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(SpringWebApplication.class, args);
}
@Override
protected final SpringApplicationBuilder configure(final SpringApplicationBuilder application) {
return application.sources(SpringWebApplication.class);
}
}
如果我去 http://localhost:8080/lista_utenti
我会得到的是:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Thu Jan 15 15:59:57 CET 2015
There was an unexpected error (type=Not Found, status=404).
No message available
我做错了什么?
Zio,你确定你已经在你的 pom 中包含了这个依赖项吗?
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
没有这个,我会得到你同样的错误。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>required</scope>
</dependency>
将它添加到我在 Intellij 中的项目并且它有效..
我正在将它添加到我的 Maven 依赖项中,现在它正在运行
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
在pom.xml文件中添加Tomcat嵌入Jasper依赖
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>9.0.30</version>
</dependency>
如果您已经从使用标准 thymeleaf 项目转移到 Bootstrap(就像我一样),请确保删除此依赖项;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>