java - 是否可以更改 httpservletrequest 对象

标签 java servlets


是否可以在将请求从一个 servlet 转发到另一个 servlet 时更改 Servlet 请求对象?或者解决这个问题?

我有 2 个 servlet,Servlet1 和 Servlet2,例如-

public class Servlet1 extends HttpServlet {
    doPost(HttpServletRequest rq, HttpServletResponse rs) {
       // do something meaningful, call other different web-apps/servlets

       InputStream is1 = rq.getInputStream();
       RequestDispatcher rd = getServletContext().getRequestDispatcher("/Servlet2");
       rd.forward(rq, rs);
    }
}

如果我打印 is1 它就像 -

-----Part2_324<?xml version="1.0" encoding="utf-8"?><Head><Body><Text>This is the first File</Text></Body></Head>-------Part2_65623

我不关心这个 o/p,当稍后请求被转发到 Servlet2 时。

我有一个xml文件file2.xml,内容是-

<?xml version="1.0" encoding="utf-8"?><Head><Body><Top>Start</Top><Middle>Process</Middle><Bottom>End</Bottom></Body></Head>

我希望这是作为 Servlet2 的请求内容,因为它不能处理 is1 的内容,它应该处理 file2 的内容。 xml.
几乎没有设置属性/参数。

这有可能实现吗?我希望问题很清楚。
谢谢

最佳答案

servlet 规范禁止在转发时用一个请求替换另一个请求。

但是,它确实允许转发 HttpServletRequestWrapper,其中包装器正在包装原始请求。因此,尝试将您的逻辑实现为 HttpServletRequestWrapper 的子类,包装原始请求,并根据需要覆盖 HttpServletRequest 的各种方法。

关于java - 是否可以更改 httpservletrequest 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4923171/

相关文章:

java.lang.IllegalMonitorStateException : (m=null) Failed to get monitor for

java - IntelliJ IDEA - 错误 : JavaFX runtime components are missing,,需要运行此应用程序

java - 这是一个很好的做法和选择 :Sending a Hash Map object or a JSON from java servlet to jsp?

jquery - 在 IE7 中的服务器上呈现时出现奇怪的 JQuery 验证错误 ('this.0.form' 为空或不是对象)

java - 如何创建一个将文本输入传递给 servlet 并重定向到同一个 servlet 的 Flex 程序

java - CriteriaQuery selectDistinct 与 @EmbeddedId 生成无效 SQL

java - Kettle在java函数中启动改变系统属性

java - 自定义类加载失败,出现 java.lang.IllegalAccessError : Class ref in pre-verified class resolved to unexpected implementation

java - 如何使用 JSP 将表单数据解析到客户端 Java 类

servlets - 使用 doGet 将根路径中的默认主页更改为 servlet