是否可以更改httpservletrequest对象

Swi*_*tle 2 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我打印is1它就像 -

-----Part2_324<?xml version="1.0" encoding="utf-8"?><Head><Body><Text>This is the first File</Text></Body></Head>-------Part2_65623
Run Code Online (Sandbox Code Playgroud)

我不关心这个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>
Run Code Online (Sandbox Code Playgroud)

我希望这可以作为请求内容Servlet2,因为它无法处理内容is1,它意味着要处理file2.xml的内容.
几乎没有设置属性/参数.

是否有可能实现这一目标?我希望,问题很清楚.
谢谢

ska*_*man 8

servlet规范禁止在转发时将一个请求替换为另一个请求.

然而,它确实允许的转发HttpServletRequestWrapper,其中,所述包装物包装原始请求.因此,尝试将您的逻辑作为子类HttpServletRequestWrapper,包装原始请求,并在HttpServletRequest适当时覆盖各种方法.