我刚刚开始Spring Boot应用程序开发。我正在尝试显示由Netbeans 11.1
创建的默认jsp文件的简单jsp页面。我在互联网上搜索了此错误,并在互联网上找到了到目前为止我尝试过的许多问题和答案。
大多数答案都说此错误是由与其他Java文件不在同一目录中的controller file
引起的。但这不是我的情况。首先在下面检查我的文件结构。
我尝试直接从home.jsp
文件夹而不是webapp
文件夹和webapp/WEB-INF
文件夹加载webapp/WEB-INF/jsp
文件,因为我从Github的演示应用程序中看到了这种结构。
我在.pom
文件中添加了jasper依赖项,该文件负责加载.jsp内容。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
<!--<version>9.0.24</version>-->
</dependency>
这是我的AppContoller类代码
@Controller
public class HomeController {
@RequestMapping("home")
public String home(){
System.out.println("HomeController is running!!!"); //showing this output
return "home.jsp";
}
}
注意::此类显示“ HomeController正在运行!”当我键入locathost:8080/home
时输出这意味着控制器已正确配置,并且错误不是由于路径不同。
我的MyWebAppApplication
类仅具有默认的main方法。
这就是我在浏览器中看到的。
白标错误页面
此应用程序没有针对的明确映射 /错误,因此您将其视为备用。2019年9月10日星期二15:38:44 PKT
发生意外错误(type = Not 找到,状态为404)。 /home.jsp
如果有任何其他需要我提出的问题,请告诉我。
我正在使用
答案 0 :(得分:1)
您需要添加以下属性:
$0
将spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
替换为return "home.jsp";
还应该添加一些配置属性和依赖项:
return "home";
更新: 使用以下类来运行应用程序:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>3.3.7</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
</dependencies>
答案 1 :(得分:0)
默认情况下Netbeans 11.1
生成这两行的jsp文件
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
此处前缀为f
,而uri为http://java.sun.com/jsf/core
。当我将此标签库替换为
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> //here prefix is `c`
& uri is from jsp/jstl instead of jsf
然后注释掉默认jsp文件中的第二个taglib,它对我有用:)。
我以为这些依赖项可以完成工作,但是我们也必须在jsp页面中指定正确的tablib。
<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>
现在我还要在控制器中返回home
,而不是i.bondarenko在他的回答中建议的home.jsp
。
希望这会帮助某人。