是否可以在将请求从一个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的内容。
几乎没有设置属性/参数。
有可能实现这一目标吗?我希望,问题很明确。
谢谢
答案 0 :(得分:8)
servlet规范禁止在转发时将一个请求替换为另一个请求。
但是,它 允许转发HttpServletRequestWrapper
,其中包装器包装原始请求。因此,尝试将您的逻辑实现为HttpServletRequestWrapper
的子类,包装原始请求,并在适当时覆盖HttpServletRequest
的各种方法。