我创建了一个名为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
My 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项目设置。
在你的目标文件夹中,你的webapp文件夹缺少
- 删除项目根目录下的web文件夹。当您构建时,Maven/intellij不会选择这个文件夹。因此index.jsp不存在。
- 在src/main下创建名为webapp的文件夹。
- 将index.jsp移到web应用下。
我还建议你把所有的jsp视图页面放在webapp/WEB-INF/下,这样它就不能直接访问,因此MVC是强制的。
通过这种方式,您将像这样访问servlet中的jsp: /WEB-INF/index.jsp