1.对成功登录的页面进行判断,是否有session:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
Object userSession = request.getSession().getAttribute("USER_SESSION");
if(userSession==null){
response.sendRedirect("/login.jsp");
}
%>
<h1>主页</h1>
<p><a href="/servlet/logout">注销</a></p>
</body>
</html>
成功跳转!
2.用Filter进行过滤(判断是否有session):
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.http.HttpRequest;
public class sysFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
if(request.getSession().getAttribute("USER_SESSION")==null){
response.sendRedirect("/error.jsp");
}
chain.doFilter(req,resp);
}
@Override
public void destroy() {
}
}
运行程序,结果如下
报500错误,同时指出了可能出现问题的代码
推测:Filter和success的jsp代码同时出现了页面跳转,可能冲突,因此将jsp里面的跳转代码注释掉,重新运行程序。
页面跳转成功!
结论:不能在Filter和 jsp代码里同时编写页面跳转的代码,通常把jsp里面的代码注释掉就可以了。
至此,本文结束。记录自己的知识盲区~