servlet筛选器在JSP中不工作

servlet筛选器在JSP中不工作,jsp,session,netbeans,login,servlet-filters,Jsp,Session,Netbeans,Login,Servlet Filters,我正在尝试为Netbeans中的JSP项目执行servlet过滤器。我想做的是检查用户是否已登录,如果未登录,则将其重定向到登录页面。我遵循了本教程: 因此,我将这个java文件作为我的过滤器类(文件名为LoginFilter.java): import java.io.IOException; 导入javax.servlet.Filter; 导入javax.servlet.FilterChain; 导入javax.servlet.FilterConfig; 导入javax.servlet.S

我正在尝试为Netbeans中的JSP项目执行servlet过滤器。我想做的是检查用户是否已登录,如果未登录,则将其重定向到登录页面。我遵循了本教程:

因此,我将这个java文件作为我的过滤器类(文件名为LoginFilter.java):

import java.io.IOException;
导入javax.servlet.Filter;
导入javax.servlet.FilterChain;
导入javax.servlet.FilterConfig;
导入javax.servlet.ServletException;
导入javax.servlet.ServletRequest;
导入javax.servlet.ServletResponse;
导入javax.servlet.annotation.WebFilter;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入javax.servlet.http.HttpSession;
@WebFilter(“/app/*”)
公共类LoginFilter实现过滤器{
@凌驾
public void init(FilterConfig config)抛出ServletException{
//如果您在web.xml中有任何文档,那么您可以获取它们
//这里使用config.getInitParameter(“name”)并将其指定为字段。
}
@凌驾
public void doFilter(ServletRequest-req、ServletResponse-res、FilterChain-chain)抛出IOException、ServletException{
HttpServletRequest请求=(HttpServletRequest)请求;
HttpServletResponse=(HttpServletResponse)res;
HttpSession session=request.getSession(false);
if(session==null | | session.getAttribute(“usuario”)==null){
response.sendRedirect(request.getContextPath()+“/login.jsp”);//找不到登录用户,因此重定向到登录页面。
}否则{
chain.doFilter(req,res);//找到登录用户,所以只需继续请求即可。
}
}
@凌驾
公共空间销毁(){
//如果您已将任何昂贵的资源分配为
//此筛选器类,然后您可以在此处清理/关闭它们。
}
}

这是我的web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 version="3.0">
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>

<filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>LoginFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>/app/*</url-pattern>
</filter-mapping>

30
逻辑过滤器
逻辑过滤器
逻辑过滤器
/应用程序/*


然而,这是行不通的。有人能告诉我我遗漏了什么吗?

我设法解决了这个问题,问题是每次加载页面时,过滤器都会检查代码,在我的情况下,我没有在任何地方声明我的变量“usuario”,这个变量可以重定向到登录页面或继续加载当前页面。因此,我在用户登录时进行了更改以设置变量(一个辅助页面检查登录,并且在其中设置了变量)。然后所有其他页面都没有设置变量,它们只接受登录检查中设置的内容


非常感谢对评论作出回答的人。

我设法解决了这个问题,问题是每次加载页面时,过滤器都会检查代码,而在我的情况下,我没有在任何地方声明我的变量“usuario”,这个变量可以重定向到登录页面或继续加载当前页面。因此,我在用户登录时进行了更改以设置变量(一个辅助页面检查登录,并且在其中设置了变量)。然后所有其他页面都没有设置变量,它们只接受登录检查中设置的内容


非常感谢回复评论的人。

您用来测试过滤器的url是什么?只有当url包含路径“app”时,才会调用此筛选器。请使用
注释
web.xml
标记,并且从不在默认包中创建您的类型。我的url如下所示:我尝试将/app/*修改为/scoreBoardAPPPL/*但仍然不起作用。我将其更改为/*但现在可以工作,当它试图重定向到login.jsp页面时,浏览器挂起,并重定向到login.jsp,就像在一个无限循环中一样。我会检查我的代码,看看我能做什么。你用来测试过滤器的url是什么?只有当url包含路径“app”时,才会调用此筛选器。请使用
注释
web.xml
标记,并且从不在默认包中创建您的类型。我的url如下所示:我尝试将/app/*修改为/scoreBoardAPPPL/*但仍然不起作用。我将其更改为/*但现在可以工作,当它试图重定向到login.jsp页面时,浏览器挂起,并重定向到login.jsp,就像在一个无限循环中一样。我会检查我的代码,看看我能做什么。
<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 version="3.0">
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>

<filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>LoginFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>/app/*</url-pattern>
</filter-mapping>