Java 记录url导航历史记录

Java 记录url导航历史记录,java,servlets,servlet-filters,Java,Servlets,Servlet Filters,目标:用户尝试在没有身份验证的情况下访问页面。站点重定向到登录页面,当他们输入详细信息时,会返回到他们试图访问的页面 我有一个过滤器,它记录用户在会话中的最后一个url。下面的代码是如何获取uri的 String uri = request.getRequestURI().toString(); String queryString = request.getQueryString(); String completeUri = uri; if (queryString != null) {

目标:用户尝试在没有身份验证的情况下访问页面。站点重定向到登录页面,当他们输入详细信息时,会返回到他们试图访问的页面

我有一个过滤器,它记录用户在会话中的最后一个url。下面的代码是如何获取uri的

String uri = request.getRequestURI().toString();
String queryString = request.getQueryString();  
String completeUri = uri;
if (queryString != null)
{
    completeUri += "?" + queryString;
}
在实践中,此过滤器可能会捕获外部css文件、页面上的单个图像等,因此它工作的时间约为一半,指向图像或css文件的时间约为一半

筛选器的映射为

<filter>
    <filter-name>ComprehensiveFilter</filter-name>
    <filter-class>core.website.control.filter.ComprehensiveFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>ComprehensiveFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

综合过滤器
core.website.control.filter.ComprehensiveFilter
综合过滤器
/*

所以问题是。为什么我的代码存储图像和外部文件,而不是用户刚才所在的url?我假设这与我的过滤器映射有关。

当页面上有任何图像时,意味着html
属性指的是实际的URL(请参阅)。因此,当加载页面时,浏览器会发出另一个请求来加载该图像。您的过滤器不仅捕获整个页面的请求,还捕获那些图像加载请求。

当页面上有任何图像时,意味着html
属性指的是实际的URL(请参阅)。因此,当加载页面时,浏览器会发出另一个请求来加载该图像。您的筛选器不仅捕获整个页面的请求,还捕获那些图像加载请求。

只有在检测到未经授权的访问并重定向到登录页面时,才应使用此代码。您应该将其作为参数传递,比如
response.sendRedirect(“login.jsp?”+completeUri)

现在,如果过滤器应用于每个资源(就像您所做的那样),它将为login.jsp中包含的图像和css文件触发。必须将login.jsp本身从重定向中排除(否则将进入循环),并且还必须排除css文件。这取决于您的URL方案

  • 如果所有页面都是
    .jsp
    ,则将过滤器映射到
    *.jsp
  • 如果您的操作是通过单个servlet(如dispatcher servlet)执行的,则将筛选器映射到该servlet(而不是
    设置
  • 如果您有“漂亮的URL”,那么(在过滤器中)检查请求的资源是否以
    .css
    .png
    .gif
    等结尾,并且不要输入重定向逻辑

只有在检测到未经授权的访问并重定向到登录页面时,才应使用此代码。您应该将其作为参数传递,比如
response.sendRedirect(“login.jsp?”+completeUri)

现在,如果过滤器应用于每个资源(就像您所做的那样),它将为login.jsp中包含的图像和css文件触发。必须将login.jsp本身从重定向中排除(否则将进入循环),并且还必须排除css文件。这取决于您的URL方案

  • 如果所有页面都是
    .jsp
    ,则将过滤器映射到
    *.jsp
  • 如果您的操作是通过单个servlet(如dispatcher servlet)执行的,则将筛选器映射到该servlet(而不是
    设置
  • 如果您有“漂亮的URL”,那么(在过滤器中)检查请求的资源是否以
    .css
    .png
    .gif
    等结尾,并且不要输入重定向逻辑

非常感谢您的回答。是否有一种方法可以将筛选器映射到仅筛选器servlet。我可以通过使用*.jsp来了解如何使用jsp实现这一点,但是没有办法只过滤servlet。是否有一种方法可以将筛选器映射到仅筛选器servlet。我可以通过使用*.jsp了解如何使用jsp实现这一点,但没有办法只过滤servlet。