我正在使用 servlet 和 JSP 创建一个简单的 Web 应用程序。我正在实现一个过滤器,它检查用户是否已经登录,从字面上检查用户会话是否处于活动状态。如果会话不活跃,则必须将用户重定向到登录页面(索引,jsp)
这是我在 web.xml 文件中的过滤器映射
<web-app xmlns...>
<display-name>FilterTest</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<description></description>
<servlet-name>LoginController</servlet-name>
<servlet-class>LoginController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginController</servlet-name>
<url-pattern>/LoginController</url-pattern>
</servlet-mapping>
</web-app>
当用户尝试访问不同的页面时,LoginFilter 会检查会话。如果会话处于活动状态,则用户被重定向到请求的页面,否则重定向到 index.jsp。
我在这里面临的问题是,LoginFilter
即使在用户登录时也会检查会话(请求来自index.jsp
登录页面)。所以我在这里看到的是,当用户登录时,控件转到LoginFilter
,因为尚未为该用户创建会话,所以他被重定向回登录页面,这正在创建一个无限的重定向循环。
我想排除过滤器检查/会话检查请求是否来自index.jsp
.
有什么方法可以做到这一点吗?或者我可以通过任何方式识别请求页面是否是index.jsp
?
更新:应用程序启动时的 url 是http://servername:port/FilterTest
在这里加载 index.jsp。
我正在验证LoginController
servlet 中的登录,如果登录成功,它将用户重定向到 home.jsp(欢迎页面)。
谢谢..!