java - 嵌入式 Tomcat 转发到 JSP 不起作用

标签 java jsp jakarta-ee tomcat

我使用的是嵌入式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/

相关文章:

java - 在 JSP 中格式化 JSON 日期

java - 从数字字符串 setBackgroundResource 导致 fatal error - Android/Java

java - Java Cup 的条件 if 语句语法 - 语义

java - 如何使用单选按钮在jsp中选择特定行数据

javascript - 使用jsp和sql查询的问题

java - 如何在log4j2中实现 "configureAndWatch"

java - Tomcat 使用堆栈而不是队列?为什么使用堆栈而不是队列或其他池更好?

java - 如何解决hibernate中乐观锁(Versioning)的问题?

java - Websocket服务器: Handle close event per session

jakarta-ee - 将 JBoss 5.1 从 EL 2.1 升级到 EL 2.2?