2011-02-07 106 views
1


是否有可能在将请求从一个servlet转发到另一个servlet时更改Servlet请求对象?还是为了实现这个目标而努力?是否有可能更改httpservletrequest对象

我有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的内容。
几乎没有属性/参数集。

有没有可能做到这一点?我希望,问题很明显。
谢谢

回答

7

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

但是,它确实允许一个HttpServletRequestWrapper,其中所述封装器包装原始请求的转发。因此,请试着将您的逻辑作为HttpServletRequestWrapper的子类实现,并包装原始请求,并根据需要重写HttpServletRequest的各种方法。

+0

就是这样,那就是我所需要的。非常感谢。 – 2011-02-08 12:06:36

相关问题