0
public class LoginFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
                         FilterChain chain) throws IOException,
                                                   ServletException {
        HttpServletRequest request = (HttpServletRequest)req;
        HttpServletResponse response = (HttpServletResponse)res;
        HttpSession session = request.getSession(false);
        if (session == null ||
            session.getAttribute("currentSessionUser") == null) {
            response.sendRedirect("Loginpage.jsp"); // No logged-in user found, so redirect to login page.
            response.setHeader("Cache-Control",
                               "no-cache, no-store, must-revalidate"); // HTTP 1.1.
            response.setHeader("Pragma",
                               "no-cache"); // HTTP 1.0.                 response.setDateHeader("Expires", 0);
        } else {
            chain.doFilter(req,
                           res); // Logged-in user found, so just continue request.
        }
    }
}

上記のコードをjspで使用して、ユーザーがログアウト後にログインページをリダイレクトするように強制したいのですが、それをjspページに含めることができるようにjspに変換するにはどうすればよいですか。chain.filter()以下のように書きます。これを行うことで、そのメソッドを呼び出すことができます

<%@ page import=" java.io.IOException"%>
<%@ page import="javax.servlet.Filter"%>
<%@ page import="javax.servlet.FilterChain"%>
<%@ page import="javax.servlet.FilterConfig"%>
<%@ page import="javax.servlet.ServletException"%>
<%@ page import="javax.servlet.ServletRequest"%>
<%@ page import="javax.servlet.ServletResponse"%>
<%@ page import="javax.servlet.http.HttpServletRequest"%>
<%@ page import="javax.servlet.http.HttpServletResponse"%>
<%@ page import=" javax.servlet.http.HttpSession"%>
<%@ page import="javax.servlet.annotation.WebFilter"%>
<%
    //@Override         
    HttpServletRequest req = (HttpServletRequest) request;
    HttpServletResponse res = (HttpServletResponse) response;
    HttpSession session = req.getSession(false);
        if (session == null || session.getAttribute("userHash") == null)
        {  
        res.sendRedirect("/timescape/applicationservices/fileshare/vm/login/login.jsp"); // No logged-in user found, so redirect to login page.
        res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
        res.setHeader("Pragma", "no-cache"); // HTTP 1.0.
        res.setDateHeader("Expires", 0);
        } 
        else
          {
          chain.doFilter(request, response); // Logged-in user found, so just continue request. 
          }

    %>
4

1 に答える 1

0

JSP でリダイレクトのみが必要であると仮定すると、これは簡単に実行できます。

<%
if (session == null || session.getAttribute("currentSessionUser") == null) {
    response.sendRedirect("Loginpage.jsp"); // No logged-in user found, so redirect to login page.                  
    response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.                 
    response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
    response.setDateHeader("Expires", 0);
    return;
}
%>

これが機能するのは、JSP では、オブジェクトを含む暗黙の変数が常にresponse呼び出され、オブジェクト含む暗黙の変数が常に呼び出されるためです。HttpServletResponsesessionHttpSession

于 2012-09-05T08:51:35.460 に答える