bugfix> java > 投稿

私はユーザーではなく、チェックしている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フォルダーにあると考えられるため、これを防ぐにはどうすればよいですか?

回答 1 件
  • サーブレットに相対的なパスを使用しています。

    ServletRequest#getRequestDispatcherのドキュメントから:

    The pathname specified may be relative, although it cannot extend outside the current servlet context.If the path begins with a "/" it is interpreted as relative to the current context root.This method returns null if the servlet container cannot return a RequestDispatcher.

    これはあなたが必要なものです

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

    コンパイル後のすべてのサーブレットはWEB-INF/classes、あなたのコードはあなたを見つけようとしていますindex.jsp WEB-INFフォルダーの下にあるのは、コンテキストルートではなくサーブレットに関連しているためです。

    追伸:index.jspはコンテキストルートのすぐ下にあると想定していますが、コンテキストルートの下のフォルダーにある場合は、パス内のフォルダーも指定する必要があります。

あなたの答え