Spring MVC:如何修改从spring控制器发送的响应?

2024-02-03

我有一个使用 Spring MVC 3.1.3 的应用程序和使用 Dojo 1.4 开发的 UI。该应用程序有几个控制器来处理通过上传的二进制文件dojo.io.iframe.send。控制器发送一个 json 响应,该响应必须用

<html><body><textarea>{my json response}</textarea></body></html>.

我已经实现了 web.xml 中定义的自定义过滤器:

<filter>
    <filter-name>dojoIframeFilter</filter-name>
    <filter-class>com.app.web.MultipartAjaxFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>dojoIframeFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

过滤器的 doFilter 有这种行为,取自http://www.oracle.com/technetwork/java/filters-137243.html http://www.oracle.com/technetwork/java/filters-137243.html

public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {

    if (request.getContentType() != null
            && request.getContentType().contains("multipart/form-data")) {
        CharResponseWrapper wrapper = new CharResponseWrapper((HttpServletResponse) response);

        chain.doFilter(request, wrapper);
        log.info(wrapper.toString());
        //Modify response here
    } 
    else {
        chain.doFilter(request, response);
    }
}

包装器的输出为空。我还尝试了许多其他组合,例如为 spring 的调度程序 servlet 放置自定义过滤器,取消 doFilter 内的 if 块,但这些组合都不起作用。我还尝试编写一个 Spring 拦截器,但也失败了。有人可以建议任何其他想法吗?

提前致谢。

UPDATE:我禁用了 spring security 并使用普通 spring mvc 进行了测试,但问题仍然存在。我修改了标题和问题描述。


朋友们,为了成功修改ServletResponse,我们还需要子类化ServletOutputStream。请参见http://docstore.mik.ua/orelly/xml/jxslt/ch08_04.htm http://docstore.mik.ua/orelly/xml/jxslt/ch08_04.htm以获得详细的解决方案。

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

Spring MVC:如何修改从spring控制器发送的响应? 的相关文章

随机推荐

  • Arduino Python3 脚本

    我正在尝试使用 Python3 脚本来控制 Arduino Mega 这是一个简单的脚本 用于从键盘获取一行并通过 Arduino 回显它 我从一个可用的 Python 2 脚本开始http petrimaki wordpress com
  • 在 axios 中检测 xhr.status === 0

    Context 我有一个在企业环境中运行的网络应用程序 其中所有请求都通过我无法控制的代理 该层会根据需要自动将我的用户重定向到不同域上的单点登录页面 这是基本顺序 用户类型myapp example corp进入他们的浏览器 请求通过代理
  • NHibernate - ITransaction.Commit 真的有必要吗?

    我两天前刚刚开始学习NHibernate 我正在寻找一个我根据教程编写的CRUD方法 我的插入方法是 using ISession session Contexto OpenSession using ITransaction transa
  • 开发黑莓应用程序的好工具包是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 寻找用于一般 Blackberry 开发或应用程序工具包的工具包 SDK 有类似 MVC 框架的东西吗
  • 删除一个表中未被另一个表引用的所有记录

    2张桌子 项目 编号 用户 id item id 怎么删除里面的所有记录items未引用自users 请注意 NOT IN 可能会非常慢 有时 令人惊讶的是 这样做会更快 DELETE FROM items WHERE id IN SELE
  • 线程安全与同步

    我是java新手 我对线程安全和同步有点困惑 线程安全意味着一个方法或类实例可以被多个线程同时使用而不会出现任何问题 其中 同步意味着单个时间只能有一个线程运行 那么它们之间有何关系呢 线程安全的定义在Java 并发实践 http amzn
  • Angular2 局部模板变量

    在下面的例子中 我指定了一个局部变量 input多个单选按钮 当点击 tr 我想选择里面的单选按钮 下面的代码工作正常 但我不明白为什么 当所有输入都具有局部变量时 Angular2 如何 知道 我指的是哪个输入 input HTML tr
  • Realm gradle 任务

    在我的个人资料报告期间assembleDebuggradle 任务 我发现了两个与领域相关的 gradle 子任务 这需要相当多的时间 assembleDebug 1m21 44s transformClassesWithRealmOpti
  • 从给定的 n 个点中选择最远的 k 个点

    我有一套Sn维度中的点d如果需要的话 我可以计算所有成对距离 我需要选择k该集合中的点 使得它们的成对距离之和最大 换句话说 我想要 S 中的 p1 pk 使得 sum i j 我知道这个问题与this one https stackove
  • 从Java中的IAM用户名获取Amazon访问密钥和秘密密钥

    我碰到从 Java 中的 Amazon Access Key 获取用户名 https stackoverflow com questions 13595541 get username from amazon access key in j
  • 检查 PyObject 是否为 None

    我只是想检查一下是否PyObject我有的是None 我天真地以为任何None Pyobject 从函数返回的将是 NULL 指针 但情况似乎并非如此 那么 我如何检查是否PyObject 我的指向一个None object 我知道有类似的
  • 如何在 R 中抓取网页而不出现空网站问题?

    我需要提取有关物种的信息 并编写以下代码 然而 我对一些缺失的物种有疑问 如何才能避免这个问题呢 Q lt c rvest stringr tidyverse jsonlite lapply Q require character only
  • 在 Ubuntu 上通过 pyODBC 连接到 Microsoft SQL Server

    连接到 Microsoft SQL Server 实例时遇到问题pyODBC在一个Ubuntu 12 10 机器 我返回的错误是 pyodbc Error IM002 IM002 unixODBC Driver Manager Data S
  • Winforms DataBind 到控件的 Visible 属性

    将数据绑定到控件的可见属性时是否存在任何已知问题 无论我的属性是什么 该控件始终不可见 Public ReadOnly Property IsRibbonCategory As Boolean Get Return True End Get
  • 从 Azure DevOps 导出测试结果

    我可能遗漏了一些东西 但找不到从 Azure DevOps 中项目的构建管道执行页面导出测试运行结果的方法 有一个 下载日志 当然 从技术上讲 您可以在其中找到来自测试执行步骤的日志以及其他内容 但这似乎不是定期获取此类数据以进行法规 审计
  • 如何使用头文件签名(幻数)检查文件类型?

    通过输入文件及其扩展名 我的代码成功地从 幻数 中检测到文件的类型 magic numbers png bytes 0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A jpg bytes 0xFF 0xD8 0x
  • Laravel 5.4 - php artisan 缓存:使用“文件”缓存驱动程序时清除不会清除缓存文件

    Laravel 5 4 应用程序 CACHE DRIVER被设定为file and QUEUE DRIVER被设定为sync in env 当我跑步时php artisan cache clear它说Cache cleared succes
  • 每个 UDP 数据报的 Netty 不同管道

    我们有一个已经在 TCP IP 中实现的服务器 但现在我们要求该协议也支持 UDP 发送的每个 UDP 数据报都包含我需要解码的所有内容 因此这是一个非常简单的回复和响应系统 数据报中的数据由换行符分隔 服务器启动时的引导代码如下所示 SE
  • 如何向 NuGet 包添加 Unity 支持?

    如何将包发布到支持 Unity 游戏引擎 的 NuGet 另外 我是否需要安装 Unity 来编译它 或者针对特定的框架版本就足够了 如何将包发布到支持 Unity 游戏引擎 的 NuGet 只需按照以下说明进行操作即可the doc ht
  • Spring MVC:如何修改从spring控制器发送的响应?

    我有一个使用 Spring MVC 3 1 3 的应用程序和使用 Dojo 1 4 开发的 UI 该应用程序有几个控制器来处理通过上传的二进制文件dojo io iframe send 控制器发送一个 json 响应 该响应必须用