问题标签 [servlet-3.1]

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 回答
930 浏览

java - spring mvc 中是否有 AsyncContext 的模拟?(如何在另一个线程中编写 http 响应)

我有关于 servlet 3.0/3.1 规范的 spring 支持以及我在这篇文章中找到的大部分信息的谷歌: Understanding Callable and Spring DeferredResult

这里作者说你可以从控制器返回Callable或返回DefferedResult,并说它是春季维护的servlet 3.0/3.1。

但我不明白如何在我的情况下应用它:

我有外部系统,我从这个系统异步获得结果。

在控制器中我写了这样的东西:

我有另一个线程可以得到结果:

我知道在 servlet API 中我允许将 asyncContext 保存在地图中,然后找到它。

我怎样才能在春天实现它?

0 投票
1 回答
1113 浏览

jakarta-ee - 在外部java项目中使用@WebServlet注解

我试图只使用本机 java,而不使用 spring、struts 等框架。

我正在使用 servlet 和 jsps 构建一个 Web 应用程序。

我在项目资源管理器中的项目布局(在 Eclipse 中):MyApp(java 项目)、MyAppWEB(动态 web 项目)、MyAppWEBEAR(ear 项目)、

Servlet 在 MyApp 项目中。Jsp 在 MyAppWEB 项目中。

两个项目都添加到 EAR。MyApp 在部署程序集中作为 jar 添加到 MyAppWEB 的清单中。

现在是问题:当我在 servlet 类名上方使用 @WebServlet("/hi") 时,出现错误 404。

但是,如果我在 web.xml 中定义 servlet,那么一切正常(没有注释)。

此外,如果将 MyApp 项目导出为 jar 并将其放在 WEB-INF/lib 文件夹中而不使用 web.xml,那么它也可以正常工作。

所以问题是,是否可以在 java 项目中使用此注释(无需手动导出到 jar 并放入 WEB-INF/lib 中)?

网页.xml:

HelloWorldServlet:

HelloWorld.jsp:

0 投票
1 回答
396 浏览

java - 如何在 Struts 2 工厂类中获取 ServletContext

在 Struts 2 工厂类中访问ServletContext(例如StrutsTextProviderFactory

我使用了以下代码:

它有效,但我认为定义一个static属性并以这种方式设置它不是最好的方法。

有没有更好的办法 ?!

0 投票
2 回答
779 浏览

google-app-engine - App Engine Java 8 标准环境中的 Servlet 异步处理支持

我正在使用 GAE J8 标准环境(无可扩展环境)在 servlet 3.1 中尝试异步处理支持。

基本上我有一个带有注释的servlet

@WebServlet(name = "MyServletName", urlPatterns = {"/dosomething"}, asyncSupported = true)

并获取我调用的 AsyncContext 实例(在 doPost 方法中)

final AsyncContext asyncContext = httpServletRequest.startAsync(httpServletRequest, httpServletResponse);

但是异步处理支持在 GAE 中似乎存在一些问题

本地开发服务器说:

将应用程序部署到云端后,错误是:

我错过了什么吗?

谢谢!

0 投票
3 回答
8799 浏览

java - 循环遍历包含 Java Servlet 中标头名称的枚举

我想遍历一个包含 java servlet 中所有头文件名称的枚举。我的代码如下:

这是正确的语法吗?在 Java 中如何实际迭代枚举值?特别是在这种情况下?

谢谢你的帮助,马克

0 投票
1 回答
912 浏览

spring-mvc - GAE Java 8 Runtime: java.nio.file.InvalidPathException: Illegal char <:> at index 68 in request URL

我将 Spring MVC(不是 Spring Boot)用于我的基于 Google App Engine REST 的网络应用程序。今天我将 GAE Java 运行时升级到 1.8(Java 8)和 servlet-api 3.1。AppEngine SDK 版本 1.9.56。

所有的 spring bean 都可以完美加载,没有任何错误。我在服务请求时收到此异常:

这是我的 appengine-web.xml:

当我在 GAE 中使用 Java 7 运行时时,我没有遇到这个问题。请帮忙。

0 投票
0 回答
513 浏览

java - 使用 @WebFilter 和 @WebListener vs在 web.xml 中(带有 Servlet 3.x 的 Jersy2)

我正在尝试java-melody在 Web 应用程序中使用以进行监控。

build.gradle 中的依赖

使用 web.xml(工作正常)

应用程序初始化类

它按预期工作到这里。

但我不想使用,web.xml因为我们可以在Servlet 3.x. 所以我确实喜欢下面,这似乎不起作用......

过滤器

修改后的应用程序初始化

我在这里做错了什么?两个不一样吗?

什么不起作用

使用web.xml,我可以访问资源,http://localhost:8080/test-app/monitoring并且所有图表都可以正常显示。但是如果没有任何web.xml@WebFilter,则该资源是不可访问的。

0 投票
0 回答
396 浏览

java - 获取从 HTML 表单提交的 java servlet 中的 unicode 字符串?

我在 Servlet 中使用 Unicode(Nepali) 时坚持了下来。好吧,我提交(POST 方法)HTML 表单并想存储在数据库中。但无法获得准确的 unicode。

我尝试了以下事情-

  1. new String(request.getParameter("nameNep").getBytes("iso-8859-1"),"utf-8")

上面代码的结果?????? ????就像字符串

  1. byte[] utf8Bytes = request.getParameter("nameNep").("UTF8"); String text = new String(utf8Bytes,"UTF8");

此代码生成类似的文本मà¤?दà¥?र à¤?न,实际上与request.getParameter("nameNep")

  1. URLDecoder.decode(request.getParameter("nameNep"), "UTF-8");

结果与 2 相同

  1. request.setCharacterSet("UTF-8"); 在应要求采取任何行动之前进行设置,得到与 2 和 3 相同的结果

我在这里做错了什么,表单字段 nameNep 包含尼泊尔语 Unicode 字符。

0 投票
0 回答
536 浏览

java - Undertow 是否支持来自异步源的异步 I/O?

我有一个场景,我试图以非阻塞方式提供数据,该方式由 RxJava Observable(也是非阻塞)提供。我正在使用 ServletOutputStream 提供的 WriteListener 回调。我遇到了一个问题,java.lang.IllegalStateException: UT010035: Stream in async mode was not ready for IO operation即在成功isReady()检查 ServletOutputStream 后写入立即抛出 IllegalStateException ()。

在深入研究的同时,我在ServletOutputStream的 Undertow 实现中注意到了这条评论:

一旦设置了写侦听器,操作只能从写侦听器回调中对此流调用。尝试从不同的线程调用将导致 IllegalStateException。

鉴于我的数据源是异步的,在某些情况下,onWritePossible()回调将达到没有立即可用数据的状态,我需要等待从源接收到更多数据。在这些情况下,我需要与来自我的数据源回调的流进行交互,这将是一个不同的线程。唯一的其他选择是暂停用于调用的线程onWritePossible()并等待更多数据到达,但这将是一个阻塞操作,会破坏整个目的。

我还缺少另一种方法吗?Servlet 3.1 规范似乎不需要 Undertow 的单线程要求。从我读过的内容来看,鉴于应用程序协调流访问同步,其他实现似乎可以容忍多线程方法。

0 投票
0 回答
480 浏览

web.xml - Tomcat8 - 默认错误页面不起作用

Tomcat 8
小服务程序 3.1

我正在尝试让默认错误页面正常工作。例如,这篇文章就是我想要做的。

我的 web.xml

当我删除评论时,我在尝试访问不存在的 URL 时看到我的错误页面。有了评论,尝试相同的 URL,我的浏览器只返回 404。

我找不到任何说明此行为在 3.0 和 3.1 之间发生变化的内容,并且我在 tomcat 日志中看不到任何错误。