我正在使用嵌入式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找到路径
的web.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>
任何人都可以帮我找到我在这里做的错误吗?
提前致谢
答案 0 :(得分:2)
WEB-INF目录是私有的。客户端无法通过URL请求访问WEB-INF。 WEB-INF通常包含web.xml,classes和lib目录,但是您可以在那里放置要隐藏的任何内容。像spring这样的框架允许使用特殊资源配置从WEB-INF提供页面[mvc:spring for resources。]。
尝试将jsp页面放在WEB-INF和META-INF文件夹的Web容器中。 例如:
req.getRequestDispatcher("/index.jsp").forward(req, resp);
答案 1 :(得分:1)
您无法直接从URL请求访问WEB-INF内容。尝试删除它,因为你将servlet映射到扩展名为.jsp的任何文件,你可以使用其中一个路径:
views/jsp/index.jsp
jsp/index.jsp
index.jsp