首页 > 解决方案 > 在java web中定向时如何走出文件夹

问题描述

我有一个 JSP 页面,我正在检查而不是用户,有一个有效的用户会话以访问客户页面,问题是当我尝试将客户重定向到我的索引/登录页面时,它包括我的 WEB -INF 文件夹,我的所有其他文件或所在的位置。

这是我的 isValidUser.jsp:

<html>
<%
    User u = (User) session.getAttribute("user");
    if(u == null){
        request.getRequestDispatcher("index.jsp").forward(request, response);
    }
%>
</html>

这是我包含它的方式:

<html>
<head>
    <link rel="stylesheet" type="text/css" href="main.css" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Find carport</title>
</head>
<body>
    <%@include file ="header.jsp" %>
    <%@include file="isValidUser.jsp" %>
    <h1>Start din ordre</h1><br>
</body>
</html>

它给出了错误:"HTTP Status 404 - /LogInSample/WEB-INF/index.jsp"因为它认为我的索引页在我的 WEB-INF 文件夹中,我该如何防止这种情况发生?

标签: javajspservlets

解决方案


您正在使用相对于您的 servlet 的路径。

ServletRequest#getRequestDispatcher的文档中:

指定的路径名​​可以是相对的,尽管它不能扩展到当前 servlet 上下文之外。如果路径以“/”开头,则将其解释为相对于当前上下文根。如果 servlet 容器无法返回 RequestDispatcher,则此方法返回 null。

这就是你需要的

request.getRequestDispatcher("/index.jsp").forward(request, response);

编译后的所有 servlet 都转到WEB-INF/classes,因此您的代码试图在 WEB-INF 文件夹下找到您的index.jsp,因为它与您的 servlet 而不是上下文根相关。

PS:我假设您的 index.jsp 位于上下文根目录下,但如果它位于上下文根目录下的某个文件夹中,您也需要在路径中指定文件夹。


推荐阅读