最初の写真
説明
WEB-INFのコンテンツには、サーバーレベルでのみアクセスでき、クライアントレベルではアクセスできません。
サーバーレベルの例としては请求转发
、転送はサーバー自体によって処理され、クライアント(ブラウザー)とは関係がないため、ブラウザーのアドレスバーは変更されません。
クライアントレベルの例は、重定向
2つの要求と2つの応答です。そのため、アドレスバーが変更されます。
この許可を設定する理由
安全のために。たとえば、success.jspが画像のWEB-INFディレクトリにある場合、ページ内のjsのハイパーリンクタグまたはlocation.hrefを使用して直接アクセスすると、それは見つかりません。これはクライアントリクエストであるため、この権限を設定すると、一部のファイルの安全性を確保できます。
クライアントレベルにアクセスできるようにする方法
webappの下に置きます。
コードデモの波
- 写真を見ると、login.jspファイルがプロジェクト名であるwepappディレクトリにあることがわかります。
login.jsp
<form method="post" action="${pageContext.request.contextPath}/login3.action">
用户名:<input type="text" name="username"><br>
密 码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
- データを入力し、マップされたプロセッサに送信します
UserController
@RequestMapping("login3.action")
public void login3(User user, HttpSession session, HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
if ("jack".equals(user.getUsername())&&"1234".equals(user.getPassword())){
request.getRequestDispatcher("WEB-INF/jsp/success.jsp").forward(request,response);
}else {
response.sendRedirect("WEB-INF/jsp/fail.jsp");
}
}
- データが正しく一致する場合、転送が要求されます。
success.jspページはWEB-INFディレクトリにあるため、要求転送のパスパラメータにWEB-INF / jspを追加する必要があることに注意してください。 - データが正しく一致しない場合、リダイレクトされます。
fail.jspはWEB-INFディレクトリにあるため、パスが正しいことに注意してください。ただし、リダイレクトの原則は、クライアントが再度アクセスできるようにすることであり、WEB-INFディレクトリ内のファイルにはクライアントがアクセスできないため、404が報告されます-見つかりません。
WEB-INFディレクトリ内のファイルにアクセスできるタグがいくつかあります
要件を満たしている場合は、次のようなjspでも使用できます(原則はリクエスト転送でもあります)。
<a href="javascript:<jsp:forward page='WEB-INF/xxxx.jsp'/>"></a>
<jsp:forward page = "/WEB-INF/jsp/test/test.jsp" />
<jsp:include page="WEB-INF/xxx.jsp">