问题标签 [spring-web]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
886 浏览

spring-mvc - Spring Web 服务中根元素解组的 SAXException

我有 spring 的宁静 web 服务,它具有以下映射:

联系人类:

联系类别:

当我从 curl 处理带有 xml 格式的 GET 时,我收到以下输出:

Maven 依赖项(对于 Web 和客户端应用程序相同):

然后,当我尝试通过org.springframework.web.client.RestTemplate以下异常获取 java 对象(在客户端应用程序中)时:

我相信我的映射文件有问题。如您所见,即使在映射文件中我也有三重联系人标签我还有其他名称.. 有谁知道出现这种异常/错误的 xml 格式的原因是什么?

0 投票
1 回答
3298 浏览

spring-boot - 为什么我的请求实体 InputStream 在 ContainerRequestFilter (Spring+Jersey) 中总是为空

我完全无法在 JaxRS ContainerRequestFilter 中获取请求负载/表单。

我的设置:

  • JDK 8
  • SpringBoot 1.3.0.RELEASE
  • Jersey 2.22.1(来自 SpringBoot)

这是我的 pom :(来自 Spring Initialzr)

这是我的应用程序类:

这是我的 JerseyConfig:

这是我的 HelloController:

这是我遇到的问题的核心部分,ContainerRequestFilter:

如您所见,这是一个使用 Jersey 的非常精简的 SpringBoot 示例。但是,看起来 ContainerRequestFilter 中的 InputStream 已被使用。我用 Javax ServletFilter 试过了,我也遇到了同样的问题。

Spring-web 是否有可能在调用 Jersey 之前使用 InputStream?

请帮我。

编辑

为了测试它,我使用了 POSTMAN 并发送了:

发布http://localhost:8080/hello

标题:

内容类型 = 应用程序/x-www-form-urlencoded

有效载荷:

富=酒吧

我的回应是

野蛮人

我的控制台输出是

我在过滤器中

{} // 解决方案 #1 <- 应该类似于 foo=bar

// 解决方案 #2 <- 一个空字符串

酒吧

编辑2

我在控制台中也有该消息,即使没有任何自定义 Filter :

2015-11-21 20:14:05.438 WARN 4440 --- [nio-8080-exec-2] o.glassfish.jersey.servlet.WebComponent:对 URI http://localhost:8080/hello的 servlet 请求包含请求正文中的表单参数,但请求正文已被 servlet 或访问请求参数的 servlet 过滤器使用。只有使用 @FormParam 的资源方法才能按预期工作。通过其他方式消耗请求正文的资源方法将无法按预期工作。

在将 InputStream 传递给 Jersey 之前,它肯定看起来像其他东西消耗了 InputStream,使每个 Jax-RS Filters|Interceptors 都没有状态。

0 投票
1 回答
6522 浏览

spring - Spring Session Redis 和 Spring Security 如何更新用户会话?

我正在使用 spring boot、spring secuirity 和 spring session (redis) 构建一个 spring REST web 应用程序。我正在使用 spring cloud 和 zuul 代理按照网关模式构建云应用程序。在这个模式中,我使用 spring session 来管理 redis 中的 HttpSesssion 并使用它来授权我的资源服务器上的请求。当执行更改会话权限的操作时,我想更新该对象,以便用户不必注销即可反映更新。有人对此有解决方案吗?

0 投票
0 回答
33 浏览

spring - Spring WebMVC 国际化请求映射

我必须构建一个包含不同语言的请求映射的 webapp。因此,例如,我们将有一个德语的 RequestUrl“domain.de/pkw/sommerreifen/...”,如果用户更改为英语,它必须是“domain.de/car/summer/...”。要构建路径,我们可以简单地使用 I18N,但我不确定如何定义所有这些 RequestMappings 而不会有忘记的风险。

Spring WebMVC 中有没有办法解决这个用例?如果不是,我们将不得不在@RequestMapping注释中放置大约 100 条不同的路径。这真的会很烦人...

提前致谢

基督教

0 投票
1 回答
25 浏览

java - 创建表后 SQLite 文件未更新

好的,情况就是这样。我重用了来自不同项目的一段代码,在该项目中我检查了某个表是否存在于某个 sqlite db 文件中。如果没有,它将创建表。

然后代码工作了,我没有对文件添加重大更改,所以我很困惑没有数据写入文件。

在我运行代码之前,我必须创建一个空的数据库文件,我将它放在 src/main/resources 中,命名为 example.db

我使用创建了一个 DBStuff 对象

我已经用 print 语句验证了在第二次运行 checkDB 时找到了这些表(通过 print out rs.getString(3))。

但是,当我查看数据库文件时(在我能想到的所有可能的位置, insrc/main/resources/example.dbtarget/classes/example.dbin 的 warfile 中WEB-INF/classes/example.db),该文件没有更新。在所有这些位置,它的大小仍然为 0 字节。

我究竟做错了什么?为什么表没有写入这些文件?

我在我的 pom 文件中运行了有和没有这个的代码

0 投票
0 回答
435 浏览

spring - Spring 4.2:CacheControl 不允许 no-store 和 no-cache 标头

我们正在将一个项目从 spring-web 4.1.8 迁移到 4.2.3 并且需要替换已弃用的代码

使用 newCacheControlinterceptor.setCacheControl(cacheControl).

但是对于 的新 API CacheControl,您不能一起使用noStore()and noCache(),因为这些方法返回一个新的CacheControl并且不会更新现有的。

任何想法,为什么会这样以及如何将Cache-Control标头设置为no-store, no-cache使用新的 API?

0 投票
3 回答
2446 浏览

java - PDF数据的AngularJS POST总是失败

我正在尝试解决 Internet Explorer 的 URL 限制(有关更多信息,请参阅此 Microsoft 支持文章)以生成 PDF。

我有一个 base-64 编码的字符串,代表我的客户端 JS 中的 PDF 字节流。对于 Firefox 和 Chrome,我通过在字符串前面加上前缀来显示 PDF,data:application/pdf;base64,浏览器会愉快地呈现数据 URI。

对于 Internet Explorer,我试图在 POST 中将字符串发送回 servlet,以便它可以返回内容类型为“application/pdf”的字节流。我几乎遵循以下问题中提出的解决方案,除了我在客户端请求中传递实际的 PDF 内容:

我的 HTTP POST 如下所示:

我的服务器正在运行 Java spring-webmvc 服务。Convert 控制器如下所示:

控制器代码基于此答案。我不认为有问题。它通过 Swagger API 接口在单元测试和直接 POST 请求中测试良好。

问题是这样的。每当我$http.post在 IE 中触发它时,结果总是错误回调,而且总是是 HTTP 400 错误。

我观察到以下情况:

  • 使用 IE 11 的开发人员工具网络流量捕获,我可以观察到正在发出的请求。请求在参数中包含完整且正确的 base-64 编码字符串,该字符串存在于请求正文中。

  • 请求标头如下所示:

  • 响应标头显示:

  • 响应正文包含无效的 PDF。好吧,从技术上讲,开发人员工具说它无法呈现它,并且当您保存它时,保存的 PDF 不是有效的 PDF。

  • 编辑:我发现登录Tomcat8并观察到Spring抱怨请求中缺少“base64pdf”参数:


所以我真的有两个问题:

  1. 我如何丢失base64pdf参数?参数或其他东西是否有最大长度?我尝试了这个问题中显示的原始文件,并data: { base64pdf : pdf }按照下面用户 chenzhenjia 的建议将参数传递给 via。

  2. 如何让这个 PDF 调用在 IE 中工作?虽然一方面我想知道我在上面做错了什么,但坦率地说,我愿意接受“正确答案”,以了解如何将客户端上的这个 base-64 编码字符串转换为PDF格式。(也就是说,如果这是一个XY 问题并且我找错了树,我也想知道这一点。)


我在用着:

  • AngularJS 1.4.8
  • Spring 4.2.3.RELEASE
  • 爪哇 8
  • 雄猫 8
0 投票
1 回答
4340 浏览

java - 如何在 Spring 中使用请求范围?

我想包装UriInfo到我的自定义 Query 对象中并使其在其他Spring组件中可用。我能够像这样使用 HK2 做到这一点

有合适的工厂

现在我想切换到spring。我尝试通过添加配置

更新web.xml

更改测试资源

并添加annotation到 QueryFactory

我知道这RequestContextListener是使用请求范围所必需的。但是,当我运行它时,我得到告诉我的异常

您是指实际 Web 请求之外的请求属性,还是在原始接收线程之外处理请求?如果您实际上是在 Web 请求中操作并且仍然收到此消息,则您的代码可能在外部运行

DispatcherServlet/DispatcherPortlet:

在这种情况下,使用 RequestContextListener 或 RequestContextFilter 来公开当前请求。

什么是荒谬的,因为我已经将 RequestContextListener 添加到 web.xml。

如果我在没有设置 ContextLoaderListener 的情况下运行,那么我会在 TestResource 中得到 NullPointerException,因为查询为空。

我看不出有什么问题。你能告诉我这个配置应该如何正确完成吗?

0 投票
2 回答
6726 浏览

spring-mvc - 如何测试 DeferredResult timeoutResult

我正在根据一段时间前的 Spring 博客实施长轮询

这里我转换的方法与以前具有相同的响应签名,但不是立即响应,它现在使用长轮询:

特别是当请求花费太长时间(我之前立即返回)时,我想返回pendingOnTimeout响应,以防止代理切断请求。

现在我想我已经按原样工作了,但我想写一个单元测试来证实这一点。然而,我所有使用 MockMvc(通过 webAppContextSetup)的尝试都未能为我提供一种断言我得到一个accepted标题的方法。例如,当我尝试以下操作时:

我得到以下堆栈跟踪:

java.lang.IllegalStateException:处理程序 [public org.springframework.web.context.request.async.DeferredResult> nl.bioprodict.blast.api.PollController.poll(java.lang.String)] 的异步结果未设置在 org.springframework.test.web.servlet.DefaultMvcResult.getAsyncResult(DefaultMvcResult.java:143) 在 org.springframework.test.web 的 org.springframework.util.Assert.state(Assert.java:392) 指定 timeToWait=25000 .servlet.DefaultMvcResult.getAsyncResult(DefaultMvcResult.java:120) 在 org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch(MockMvcRequestBuilders.java:235) 在 nl.bioprodict.blast.docs.PollControllerDocumentation.pollPending(PollControllerDocumentation .java:53) ...

与此相关的 Spring 框架测试似乎都在使用模拟:https ://github.com/spring-projects/spring-framework/blob/master/spring-web/src/test/java/org/springframework /web/context/request/async/WebAsyncManagerTimeoutTests.java

如何测试 DeferredResult timeoutResult 的正确处理?

0 投票
1 回答
11884 浏览

spring-boot - 如何使用 Spring Cloud Security Oauth2 在单个 Spring Boot 应用程序上使用多个 Oauth2 SSO 服务器?

我想让用户选择使用他们的 Google 或 Facebook 帐户登录到 Spring Boot Web 应用程序。

我检查了 Spring Cloud Security 文档这个 GitHub 问题来添加这样的 SSO 功能,但是它们都只显示了如何配置一个 SSO 服务器,所以它要么是谷歌要么是 Facebook。

如何添加这两个选项?在网络前端,我将为每个选项添加一个按钮,以便用户可以选择要使用的帐户,无论是 Google 还是 Facebook。

或者我选择了错误的包,应该使用完全不同的东西来实现这一点?

谢谢!