JSP在/WEB-INF中返回“HTTP状态404请求的资源不可用”

9
我创建了一个 JSP 文件。 sample.jsp
<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <title>Insert title here</title>
  </head>
  <body>
    This is jsp program
  </body>
</html>

我把它放在了samplejsp项目中。

samplejsp
 `-- WebContent
      `-- WEB-INF
           `-- sample.jsp

我在以下URL上打开了它:http://localhost:8080/samplejsp/sample.jsp,但是浏览器显示以下错误信息:

404错误

所请求的资源(/sample.jsp)不可用。


抱歉,从今天开始我会改正我的错误。 - user246160
7天过去了,你还没有接受任何东西... - Axarydax
4个回答

8

404只是意味着"未找到"

要么URL有误(注意:区分大小写!),要么资源不在您认为它应该在的位置。

请验证URL和/或验证资源是否在您期望的位置。您将sample.jsp放置在/WEB-INF文件夹中。这样就无法通过前端控制器Servlet公开访问它。

将其放在/WEB-INF之外。

samplejsp
 `-- WebContent
      |-- WEB-INF
      `-- sample.jsp

如果您想将它保存在/WEB-INF中,则需要创建一个前端控制器Servlet,在doGet()方法中向其转发,如下所示。

request.getRequestDispatcher("/WEB-INF/sample.jsp").forward(request, response);

最后,只需调用servlet的实际URL而不是JSP的虚拟URL即可“打开”JSP。

参见:


我已经检查过了,但是它显示了上述错误,程序中有任何错误吗? - user246160
是的,要么URL错误,要么资源实际上不存在。错误信息不会说谎。 - BalusC
好的,我接受错误信息并不撒谎。是的,错误发生在URL上,我也明白了。我选择了jsp文件并从属性中复制了URL,那为什么还会显示错误呢?如何解决这个问题? - user246160
提示:URL 应该是一个 URL,而不是磁盘文件系统路径。如果 sample.htmlhttp://localhost:8080/samplejsp/sample.html,那么 sample.jsp 显然在 http://localhost:8080/samplejsp/sample.jsp。因此,<form action> 应该是 http://localhost:8080/samplejsp/sample.jsp 或更好的是 sample.jsp。在您的情况下,应该这样做:<form action="sample.jsp"> - BalusC

1
这主要与您的目录结构或打包有关。 您能否添加您的目录结构? 与下方类似 -
src 
|-html\
|-jsp\

也许这样做可以。
<form action="sample.jsp" method=get>
      <input type =submit value="submit">
</form>

编辑 - WEB-INF 不允许直接访问 JSP。


快速修复 - 将HTML和JSP文件从WEB-INF文件夹移动并运行。 - Padmarag
我是指将WEB-INF文件夹中的两个文件移到另一个文件夹。 - Padmarag

0

我遇到了这个错误- JSP文件[/WEB-INF/viewshello.jsp]未找到。

我已经在WEB-INF文件夹内的view文件夹中创建了Jsp文件hello,但它无法找到资源。

然后我删除了之前的“hello.jsp”文件,并在同一位置创建了新文件。

最终它终于可以工作了! 也许在你的情况下也会起作用,所以试试吧。


0
在我的Spring Boot Web应用程序中,使用JSP时它不起作用,直到我添加了这个依赖项。
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

即使配置了视图解析器

spring.mvc.view.prefix: /WEB-INF/views/ 
spring.mvc.view.suffix: .jsp

如果您找到了为什么这样运行的原因,请评论说明。

1
tomcat-embed-jasper:提供对.jsp文件渲染的支持。 - Nafeez Quraishi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接