从 jersey 迁移到 spring-mvc/rest:ContainerRequestFilter、ContainerResponseFilter

2024-01-06

由于业务需求,我需要从 jersey 迁移到 spring-mvc/rest ...

我正在 spring-mvc 中搜索相当于 jersey 的东西ContainerRequestFilter, ContainerResponseFilter.

有任何想法吗?


我想你正在寻找的是HandlerInterceptor http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/HandlerInterceptor.html。您不会在双类请求/响应风格中找到它,但是两个过滤器方法都包含在同一个类中,形式为preHandle and postHandle,这相当于请求 -filter和回应-filter, 分别。拦截器包装处理程序调用。这是一个例子:

拦截器:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class LogginHandlerInterceptor implements HandlerInterceptor{
    @Override
    public boolean preHandle(HttpServletRequest hsr, 
                             HttpServletResponse hsr1, Object handler) throws Exception {
        System.out.println("preHandle - " + handler);
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest hsr, HttpServletResponse hsr1, 
                           Object handler, ModelAndView mav) throws Exception {
        System.out.println("postHandle - " + handler);
    }

    @Override
    public void afterCompletion(HttpServletRequest hsr, HttpServletResponse hsr1, 
                                Object handler, Exception excptn) throws Exception {
        System.out.println("afterCompletion - " + handler);
    }
}

Config:

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"..."})
public class WebAppConfiguration extends WebMvcConfigurerAdapter {
    ...
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LogginHandlerInterceptor());
    }
    ...
}

也可以看看:

  • 使用HandlerInterceptor拦截请求 http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-handlermapping-interceptor
  • MVC 配置拦截器 http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-config-interceptors
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 jersey 迁移到 spring-mvc/rest:ContainerRequestFilter、ContainerResponseFilter 的相关文章

随机推荐

  • C 的 INI 文件解析器

    我需要在 C 中读 写 INI 文件 对我来说有点奇怪的是我找不到任何标准的方法来做到这一点 在 C 中处理 INI 文件的常用方法是什么 我更喜欢平台无关的和 Linux INI 文件解析器库 This link http blog br
  • 删除 SwiperJS 中用数组映射的幻灯片而不重置状态

    我已经为这个问题苦苦挣扎了很长一段时间 但一直无法弄清楚 在这里编写沙箱演示代码 https codesandbox io s swiper remove slides w4gy3 file src App js 我有一组渲染的幻灯片Swi
  • 浅克隆中的“嫁接”提交到底是什么?

    在 git 中进行浅克隆时 使用 depth选项 根提交被标记为grafted 谷歌搜索没有找到任何令人满意的文档 好像没有什么关系git 移植 https git wiki kernel org index php GraftPoint
  • jQuery 数据表行顺序

    dTable periods grid dataTable bProcessing false bPaginate false bDestroy true bFilter false aaData myArray 为什么行顺序混乱 我希望行
  • Google Docs API:文档资源 ID 是否会改变?

    构建一个类似网站的环境 其中所有链接都基于文档中的资源 ID 是否明智 文档 ID 过去是否发生过变化 将来是否会发生变化 上周 我们惊讶地发现一个集合中的某些文档 ID 似乎已更改 这可能吗 id 是条目的唯一 永久标识符 因此它永远不应
  • 使用代理时 Nginx 502 Bad Gateway 错误

    我有一个 Angular 构建和一个 Laravel 后端 提供在一台服务器上运行的 API 我已经在 nginx 中配置了它们 前端有一个到后端服务器的代理 后端在 url 上运行 示例是占位符 http api example com
  • 在react-router v4中使用React IndexRoute

    我正在通过在线教程自己学习 React 这是一个关于使用 React Router 的基本示例
  • SplFileObject 错误无法打开流:没有这样的文件或目录

    我正在尝试在 symfony2 中实现存折网络服务并遵循此存折捆绑 https github com eymengunay PassbookBundle我的控制器看起来像这样 if form gt isValid Create an eve
  • 审计跟踪和实施 SOX/HIPAA/等敏感数据的最佳实践

    我认为自己在应用程序设计方面相对熟练 但我从未接触过敏感数据 我一直想知道审计跟踪的最佳实践是什么以及应该如何实施它们 我现在不必这样做 但如果医疗公司要求我为他们做一些工作 能够自信地与他们交谈 那就太好了 假设我们有一个 学校 数据库
  • 在spring配置文件中设置资源

    我正在尝试在弹簧配置中配置推土机 当使用 xml 配置时 它会像
  • MPI 发送数组的数组

    好的 所以我尝试通过 MPI 发送这样的结构 struct BColumns double B int offset 如果我只是像这样对数据进行一些BS分配 bSet offset myRank bSet B double calloc 2
  • django 基于类的视图 - UpdateView - 如何在处理表单时访问请求用户?

    在 Django 的基于类的 UpdateView 中 我排除了用户字段 因为它是系统内部的 我不会要求它 现在将用户传递到表单的正确 Django 方法是什么 我现在的做法是将用户传递到init表单的 然后重写表单的 save 方法 但我
  • 更改 setup.py 中的输出目录

    我正在使用 setuptools 中的设置来创建setup py 我想知道是否可以以编程方式更改输出目录以将其更改为dist 我知道您可以使用以下命令从命令行执行此操作 dist dir标志 但我希望能够做到within the setup
  • 非公开 API 使用:应用程序包含一个或多个损坏的二进制文件

    我对 iOS 应用程序新版本上传的情况感到非常沮丧 这是故事 日期2018 年 1 月 25 日我们已经上传了新版本3 3 27 内部版本号 1 0 该过程已成功完成并可用于试飞 之后我们发现了一些问题并继续2018 年 1 月 26 日我
  • 如何根据屏幕密度(DPI大小)选择资源?

    我正在尝试根据我的颤振应用程序中的显示密度加载图标 如何根据屏幕密度动态加载 hdpi xhdpi xxhdpi 经过几个小时的搜索 根据官方文档 https flutter dev docs development ui assets a
  • 如何解决“错误的解释器:没有这样的文件或目录”

    我正在尝试运行sh脚本并在 Mac 上收到以下错误 usr bin perl M bad interpreter No such file or directory 我怎样才能解决这个问题 Remove M控制字符 perl i pe y
  • 根据 Angular 反应形式中选择的数字推送迭代行

    当我在下拉列表中选择一个数字时 我在迭代行时遇到问题 我将如何推动该数字 以便根据该数字迭代行 卡 我的流程是这样的 首先您必须将 Solo Traveler 选择为 否 以便出现成人和儿童下拉菜单 该下拉列表是我的问题 我将如何根据所选的
  • 使用 dplyr 与数据库中的日期字段进行数据库连接

    有什么魔力可以使用吗dplyr当数据库有日期字段时访问数据库 A dplyr tbl df将 mysql 日期时间字段转换为 chr 如果我能的话那也不错as Date 他们回来了 但如果我之前这样做collect ing 该表 我收到一个
  • Python Socket 接收/发送多线程

    我正在编写一个Python程序 在主线程中 我使用recv函数连续 循环 通过TCP套接字接收数据 在回调函数中 我使用 sendall 函数通过同一套接字发送数据 什么触发回调是无关紧要的 我已将套接字设置为阻塞 我的问题是 这样做安全吗
  • 从 jersey 迁移到 spring-mvc/rest:ContainerRequestFilter、ContainerResponseFilter

    由于业务需求 我需要从 jersey 迁移到 spring mvc rest 我正在 spring mvc 中搜索相当于 jersey 的东西ContainerRequestFilter ContainerResponseFilter 有任