问题标签 [servlets]
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.
java - HttpServlet为什么要实现Serializable?
在我对 Servlet 的理解中,Servlet 会被 Container 实例化,它的init()
方法会被调用一次,并且 Servlet 会像单例一样存活,直到 JVM 关闭。
我不希望我的 servlet 被序列化,因为它会在应用服务器恢复或正常启动时重新构建。servlet 不应包含特定于会话的成员,因此将其写入磁盘并重新实例化是没有意义的。这有实际用途吗?
我担心的是,我在其中放置了一些不可序列化的字段,然后我的应用程序将在将发生不同类型的会话复制的生产环境中神秘地失败。
java - 让 JSF 视图生成对非 jsf 请求的响应的最佳方法是什么?
我有一个 servlet,它与 JSF servlet 在同一个 Web 应用程序中。如何用 JSF 响应替换(而不是重定向)servlet 响应?
java - 使用 tomcat 和 servlet 捕获异常
我已经设置了 tomcat 来捕获我的所有异常并将它们传递给 web.xml 中具有以下内容的 servlet。
这工作正常,我让 servlet 记录一些信息并转发到 jsp。但是,我想记录导致引发异常的 URI,当我调用 request.getRequestURI() 时,我得到 /exception ,这是我处理记录异常的 servlet 路径。如何获取导致异常的原始 URI?
servlets - 如果我愿意关闭连接,如何在分块的 http 响应中报告错误?
(请参阅相关问题:如何在不关闭连接的情况下通过分块 http 响应中途报告错误?)
就我而言,#1 的愿望是让浏览器显示错误消息。无论多么缺乏信息。
关闭 ServletResponse outputStream 显然不起作用。即使我没有先关闭(在 Tomcat 6.0.16 上测试),也不会引发异常。我认为我想要的是 RST 数据包、块中间的 FIN 或格式错误的块标头。
之后,我可以担心各种浏览器的响应方式。
为澄清而编辑:这是用于文件下载,可能是几千兆字节的二进制数据。在我必须开始发送一些数据之前,我无法确定是否可以成功读取或解密所有数据。
java - 是否可以添加到请求的可用参数(HttpServletRequest)
我想在过滤器/servlet 中拦截一个请求并添加一些参数。但是,该请求没有公开“setParameter”方法,并且在操作参数映射时会抛出一个错误,说明它已被锁定。有没有我可以尝试的替代方案?
java - XMLEntityScanner.peekChar 中的 ArrayIndexOutOfBoundsException 从 HttpRequest 读取 XML
我正在从我的 servlet doPost() 中的 HttpServletRequest 读取 XML 数据,并将 Reader 从 req.getReader() 传递给 JAXB 解组器。我尝试了几种不同的输入 XML,但我总是得到这个异常。
这只发生在我的 Live Web 服务器上,而不是本地开发机器上。无论输入是什么(尽管我只尝试了大约 90k 个输入),堆栈跟踪的消息部分始终显示为“8192”。我查看了 XMLEntityScanner.java 第 491 行,可以看到正在读取的缓冲区,并且该缓冲区确实是一个数组。对我来说,使用从零开始的索引 8192 无法读取 8k 缓冲区是有道理的,所以这一定是一个错误 - 但原因是什么,我该怎么办?
我问这个已经通过大量的侦探工作找到了答案。我想为下一个可怜的家伙省去麻烦,因为 Apache 已经拒绝修复它。
jsp - 从自定义源加载 JSP 页面
是否可以在 Web 应用程序之外执行 JSP 页面并捕获其输出?具体来说,在我的情况下,仍然存在一个普通的 Web 应用程序,但它不是从其类路径加载 JSP 页面,而是从任意源加载。似乎我不能简单地获取 RequestDispatcher 并将其指向磁盘上的 JSP 文件。
java - 您将如何在 Java Web 环境中实现 RSS 提要?
我正在为协作平台实现 RSS 提要。假设有数千个不同的协作室,用户可以在其中共享信息,每个协作室都需要发布包含新闻、更改等的 RSS 提要……
使用普通 servlet(即http://www.site.com/RSSServlet/?id=roomID)的成本很高,每次 RSS 客户端调用 servlet 时(对于每个注册到RSS 提要上千个房间之一)这将触发整个 servlet 生命周期,这是昂贵的。
另一方面,在磁盘上为数千个房间中的每一个都保留一个静态 XML 文件也很昂贵,就硬盘空间和 IO 操作而言......
另一个限制 - 使用现有框架可能不是一种选择......
那么,您将如何在 Java 环境中实现 RSS 提要?
java - Java Servlet API 会话处理中的自定义 ID
是否可以通过 Servlet API 为 HTTP 会话分配自定义 ID?
我知道来自任何应用程序服务器的会话处理,例如 Tomcat,生成唯一 ID 就足够了。但我有基于每个用户和时间的信息的自定义唯一会话 ID,因此不会重复。
我查看了所有关于会话处理的文档,但没有找到我需要的东西。
这是一个项目的要求,所以如果不可能,我需要知道原因(或者它只是不能通过 API 获得?)。
java - 如何在 $TOMCAT_HOME/logs 中为我的 servlet 创建命名日志?
我目前正在使用 Tomcat 通过我的 servlet 中最简单的方法进行日志记录。我使用 ServletConfig.getServletContext().log 来记录活动。这将写入 $TOMCAT_HOME/logs 中的 localhost.YYYY-MM-DD.log。
除非绝对必要,否则我不想摆脱这种日志记录机制的简单性。但我想命名我的日志文件。而不是“localhost”.YYYY-MM-DD.log,有没有办法让它写入“myAppName”.YYYY-MM-DD.log。我知道我可以创建自己的机制,但我再次在这里寻找简单性。
我希望远离像 Log4j 这样的完整框架。