是否可以在将请求从一个 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/