Java - 检查 jsp 页面上的 Cookie

Posted

技术标签:

【中文标题】Java - 检查 jsp 页面上的 Cookie【英文标题】:Java - Checking for Cookies on jsp pages 【发布时间】:2016-04-07 07:25:32 【问题描述】:

我正在制作一个需要登录身份验证的 Web 应用程序,并且我正在使用 cookie 来执行此操作。当您登录时,它会创建一个 cookie。当您访问任何 jsp 页面时,我有此代码来检查 cookie 是否存在:

<%
String userName = null;

Cookie[] cookies = request.getCookies();
if(cookies !=null)
    for(Cookie cookie : cookies)
        if(cookie.getName().equals("ADMIN")) userName = cookie.getValue();
    

if(userName == null) response.sendRedirect("login.jsp");
%>

它有效,但我不想把它放在我所有的 jsp 页面上,因为它没有效率。如果我必须对其中任何一个进行更改,我希望将代码放在类/servlet/filter 中。我试过把它放在过滤器和 servlet 中,但我没有让它工作。有人有什么建议吗?

【问题讨论】:

使用过滤器,并修复代码。如果您不发布代码并且不说出问题所在,我们无法判断您的代码存在什么问题以及如何解决它。 对于初学者:这种方法非常不安全。不要那样做。 你能解决这个问题吗? 是的,我设法解决了,稍后会发布我的代码 【参考方案1】:

有两种选择:

    过滤器中的所有内容

    Check Cookie in Filter Redirect from filter

    将您的代码放在一个单独的文件中,并将其包含在每个页面中

    <%@ include file="relative url" >
    

【讨论】:

【参考方案2】:

您可以编写过滤器来处理这些请求。以下是编写过滤器时需要考虑的几个步骤

检查是否已经存在会话。然后不需要身份验证。如果存在现有会话,则返回以下代码

request.getSession();

如果没有会话,则检查用户是否存在 cookie。如果是,则验证用户转发到索引页面。

如果 cookie 也不存在,则将用户重定向到登录页面 提供身份验证凭据。

【讨论】:

以上是关于Java - 检查 jsp 页面上的 Cookie的主要内容,如果未能解决你的问题,请参考以下文章

4.cookie session

JAVA- JSP中解决无法在Cookie当中保存中文字符的问题

Java WEB 用户登录+Cookie技术

jsp&cookie&session-01

Cookie不能保存中文的解决办法

cookie和session