我使用的是嵌入式tomcat,配置如下
String webappDirLocation = "webapp/";
Tomcat tomcat = new Tomcat();
System.out.println(new File(webappDirLocation).getAbsolutePath());
tomcat.setBaseDir(".");
tomcat.setPort(4041);
Context ctx = tomcat.addWebapp(tomcat.getHost(), "", new
File(webappDirLocation).getAbsolutePath());
((StandardJarScanner) ctx.getJarScanner()).setScanAllDirectories(true);
tomcat.start();
tomcat.getServer().await();'
但是当我使用
转发到 JSP 时req.getRequestDispatcher("/WEB-INF/views/jsp/index.jsp").forward(req, resp);
它说找不到该路径的 JSP
网络.xml
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>accManager.Hello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>default1</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default1</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- The mappings for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
谁能帮我找出我在这里做错了什么??
提前致谢
最佳答案
WEB-INF目录是私有(private)的。客户端无法通过 URL 请求访问 WEB-INF。 WEB-INF 通常包含 web.xml、classes 和 lib 目录,但您可以将任何您想要对客户端隐藏的内容放在那里。一些像 spring 这样的框架允许使用特殊的资源配置从 WEB-INF 提供页面服务[mvc:resources 在 spring 的情况下。]。
尝试将 jsp 页面放在 Web 容器中的 WEB-INF 和 META-INF 文件夹之外。 例如:
req.getRequestDispatcher("/index.jsp").forward(req, resp);
关于java - 嵌入式 Tomcat 转发到 JSP 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21217935/