想要创建一个过滤器来检查 cookie,然后保存来自控制器的对象和引用

2024-04-25

我想创建一个过滤器,它将在我的任何 spring mvc 控制器操作之前执行。

我想检查 cookie 是否存在,然后将对象存储在某处current仅请求。

然后,我需要从我的控制器操作中引用该对象(如果存在)。

关于如何执行此操作的建议?


要创建过滤器,只需创建一个实现 javax.servlet.Filter 的类,在您的情况下可以是这样的

public class CookieFilter implements Filter {
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        
        Cookie[] cookies = request.getCookies();
        if (cookies != null){
          for (Cookie ck : cookies) {
            if ("nameOfMyCookie".equals(ck.getName())) {
                // read the cookie etc, etc
                // ....
                // set an object in the current request
                request.setAttribute("myCoolObject", myObject)
            }
        }
        chain.doFilter(request, res);
    }
    public void init(FilterConfig config) throws ServletException {
        // some initialization code called when the filter is loaded
    }
    public void destroy() {
        // executed when the filter is unloaded
    }
}

然后在 web.xml 中声明过滤器

<filter>
    <filter-name>CookieFilter</filter-name>
    <filter-class>
        my.package.CookieFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>CookieFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

此时,在您的控制器中,只需使用 request.getAttribute("myCoolObject") 检查请求中是否存在该属性

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

想要创建一个过滤器来检查 cookie,然后保存来自控制器的对象和引用 的相关文章

  • Java 中修剪字符串的可能前缀

    I have String str 我想从中提取不包括可能的前缀的子字符串 abc 我想到的第一个解决方案是 if str startsWith abc return str substring abc length return str
  • Java心跳设计

    我需要在我的 Java 项目上实现一个心跳系统 3 5 个客户端和 1 个服务器 但我有一些问题 1 客户端需要有 2 个套接字吗 1 用于心跳 1 用于接收我的软件的正常消息 2 我看到在特定情况下 当客户端滞后时 客户端不会收到消息 如
  • 我的代码中出现 ArrayIndexOutOfBoundsException 的原因是什么?

    我正在 Java 中实现凸包的格雷厄姆扫描算法 我在运行代码时收到此错误 对于输入字符串 10 18 Exception in thread main java lang ArrayIndexOutOfBoundsException 0 a
  • Java - Servlet 的默认 contentType

    在servlet中 通常我们会指定一个contentType 然后我们就可以打印出html代码了 response setContentType text html PrintWriter out response getWriter 如果
  • 动态元素 ID 到 setId(int) - Android

    我看到了语法定义setId int and findViewByID int 但我们如何使用findViewById R id row1 我尝试使用这个 Object1 setId Integer parseInt repeat 它没有显示
  • 更改单击后退按钮上的 BottomNavigationView 图标

    在我的布局的底部有一个底部导航视图与三个片段 如果我单击后退按钮 片段将切换 但底部图标不会切换 我该如何修复它 addToBackStack 有效 也许您有一些关于美化代码的建议 在活动或片段中添加片段标签是一个好的做法吗 public
  • Java俄罗斯方块旋转

    我知道这个问题已经被问了很多 但我想知道如何旋转俄罗斯方块 我已经做了一个又长又糟糕的解决方案 大约 170 行代码 但应该有更简单的方法来做到这一点 我的俄罗斯方块由 4 个块组成 它们都知道它们在矩阵中的位置 行和列 Matrix本身是
  • 导入数据期间解析日期格式的最佳方法

    我创建了在数据导入 400 K 记录 期间解析视图不同日期格式的方法 我的方法捕获 ParseException 并尝试在不同时使用下一种格式解析日期 问题 在数据导入期间设置正确的日期格式是更好的方法 更快 吗 private stati
  • 如果表不存在,如何使用 Derby Db 创建表

    我是新来的apache derby我似乎无法工作 CREATE TABLE IF NOT EXISTS table1 可以实现MySql等等我得到了 Syntax error Encountered NOT at line 1 column
  • 如何将 Java 字节数组转换为 Scala 字节数组?

    我是 Scala 新手 目前正在从事一个涉及 Java 和 Scala 模块的项目 现在我想使用 byte 类型的参数从 Java 调用 Scala 方法 Scala 方法的签名为 def foo data Array Byte Java
  • 如何在 Selenium 中定位具有特定文本的跨度? (使用Java)

    我在使用 java 查找 Selenium 中的 span 元素时遇到问题 HTML 看起来像 div class settings padding span Settings span div 我尝试了以下方法但没有成功 By xpath
  • 什么是样板代码、热点代码和热点?

    我知道这些术语是在性能实现 优化的背景下使用的 最近一直在研究这个问题 并尝试过搜索 但没有得到任何例子 清楚地阐述 描述这些概念以及在现实世界开发场景中实现这些问题 概念 有人可以彻底解释这些术语 示例场景以及可能使用这些概念和术语的地方
  • 策略模式的现实示例

    我一直在读关于OCP原理 http en wikipedia org wiki Open closed principle以及如何使用策略模式来实现这一目标 我打算尝试向几个人解释这一点 但我能想到的唯一例子是根据 订单 的状态使用不同的验
  • Spring JPA (Hibernate) Entity Manager 何时将连接返回到连接池?

    在我的 java 进程中 我使用以下 spring 配置连接到 MySql Configuration EnableTransactionManagement PropertySources PropertySource classpath
  • GAE、JPA、XG 事务、实体组过多异常

    我知道 GAE 上的 XG 交易有 5 个实体组的限制 但我认为我在一项交易中仅使用 3 个组 商品 类别 商品类别 但仍然遇到此异常 引起原因 java lang IllegalArgumentException 在单个事务中对太多实体组
  • 蓝牙连接;无法正确发送字符串

    当我需要将字符串从服务器蓝牙套接字发送到客户端蓝牙套接字时 我的程序遇到了麻烦 只要我一次只发送一个字符串 例如聊天 一切都可以正常工作 但是如果我需要在短时间内编写更多字符串 以交换信息 则字符串将不会与客户端代码分离 例如 如果我发送
  • Java:如何复制对象数组?

    现在 我有一个 Point 对象数组 我想制作一个COPY该数组的 我尝试过以下方法 1 Point temp mypointarray 2 Point temp Point mypointarray clone 3 Point temp
  • “您的安全设置已阻止本地应用程序运行”Java 8

    我正在尝试在 Chrome 窗口中运行一个小小程序 但收到错误消息 我确实看到所有回复都告诉我将安全性更改为中级 但版本 8 中不存在该选项 到目前为止 几个小时的谷歌搜索和向同学寻求帮助没有带来任何进展 有人可以建议一下吗 Medium在
  • struts2中如何访问url参数

    我正在做一个struts2项目 我在项目中创建了 url 并使用标签传递了参数 我的问题是如何读取操作中的参数 另外 如果执行相同的操作 我将能够将参数视为查询字符串 我问是因为我无法做到 而且我在其中一个教程中看到了它 通常 您将通过使用
  • 使用 jar 外部的配置启动 .jar,但能够从任何当前目录执行此操作

    我一直在努力解决一个特定的问题 我在 jar 文件中有一个 Java 程序 并且在 jar 之外有一个 lib 目录和一个 config 目录 但与 jar 本身所在的目录位于同一目录中 我正在尝试参考config foo config从代

随机推荐