java - Tomcat - 请求的资源不可用 - IntelliJ IDEA - Java EE

标签 java jsp tomcat servlets jakarta-ee

<分区>

我创建了名为 SimpleServlet 的简单 servlet,并尝试将 jsp 页面与它链接起来:

        String varTextA = "Hello World!";
        String varTextB = "It's JSP.";

        request.setAttribute("textA", varTextA);
        request.setAttribute("textB", varTextB);

        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/index.jsp");
        dispatcher.forward(request, response);

但是 Tomcat 9 给我看这个:

HTTP Status 404 - /index.jsp

type Status report

message /index.jsp

description The requested resource is not available.

我的项目树:

├── FirstJavaEEProject.iml
├── out
│   ├── artifacts
│   │   └── simple_mod_war_exploded
│   │       ├── index.jsp
│   │       └── WEB-INF
│   │           ├── classes
│   │           │   └── servlets
│   │           │       └── SimpleServlet.class
│   │           └── web.xml
│   └── production
│       └── simple-mod
│           └── servlets
│               └── SimpleServlet.class
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── servlets
│   │   │       └── SimpleServlet.java
│   │   └── resources
│   └── test
│       └── java
├── target
│   ├── classes
│   │   └── servlets
│   │       └── SimpleServlet.class
│   ├── first-java-ee-1.0-SNAPSHOT
│   │   ├── META-INF
│   │   │   └── MANIFEST.MF
│   │   └── WEB-INF
│   │       ├── classes
│   │       │   ├── servlets
│   │       │   │   └── SimpleServlet.class
│   │       │   └── webapp
│   │       ├── lib
...
│   │       └── web.xml
│   ├── first-java-ee-1.0-SNAPSHOT.war
│   ├── generated-sources
│   │   └── annotations
│   ├── maven-archiver
│   │   └── pom.properties
│   ├── maven-status
│   │   └── maven-compiler-plugin
│   │       ├── compile
│   │       │   └── default-compile
│   │       │       ├── createdFiles.lst
│   │       │       └── inputFiles.lst
│   │       └── testCompile
│   │           └── default-testCompile
│   │               └── inputFiles.lst
│   └── surefire
└── web
    ├── index.jsp
    └── WEB-INF
        └── web.xml

我的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>simple</servlet-name>
        <servlet-class>servlets.SimpleServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>simple</servlet-name>
        <url-pattern>/simple</url-pattern>
    </servlet-mapping>
</web-app>

最佳答案

我看到您正在使用 Maven 和 Intellij,我还假设您没有更改默认的 maven/intellij 项目设置。
在您的 target 文件夹中,您的 webapp 文件夹丢失了

  • 删除项目根目录中的 web 文件夹。当您构建时,这个文件夹根本不会被 Maven/intellij 拾取。因此,index.jsp 不存在。
  • src/main 下创建一个名为 webapp 的文件夹。
  • 将您的 index.jsp 移动到此 webapp 下。

我还建议您将所有jsp View 页面放在webapp/WEB-INF/下,这样就无法直接访问,因此强制执行MVC。
这样您就可以像这样访问 servlet 中的 jsp:/WEB-INF/index.jsp

关于java - Tomcat - 请求的资源不可用 - IntelliJ IDEA - Java EE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38043551/

相关文章:

java - 为什么一旦我改变窗口大小,Swing 应用程序的视口(viewport)大小也会发生变化?

java - Edittext.setmaxLines(3) 以编程方式不起作用

java - 如何在同一页面的每次提交操作中从数据库检索数据

jsp - 如果...其他...在 JSP 中。我的代码有什么问题?

apache - 代理服务器收到来自上游服务器的无效响应

tomcat - 在服务器上的特定目录中上传文件

java - jar 文件中奇怪的 IO 操作行为

java - 由于没有 @Subcribe 方法,Android EventBus 应用程序在 Release模式下崩溃

Java网络编程

spring-mvc - 如何在spring-boot中拦截嵌入式Tomcat上的 "global"404s