我在JSP里直接写request.getServletContext().getRequestDispatcher(url).forward(request,response); 错误为:java.net.ProtocolException: Didn't meet stated Content-Length, wrote: '631' byte s instead of stated: '1528' bytes. at weblogic.servlet.internal.ServletOutputStreamImpl.ensureContentLength (ServletOutputStreamImpl.java:472) at weblogic.servlet.internal.ServletResponseImpl.ensureContentLength(Ser vletResponseImpl.java:1213) at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImp l.java:1225) at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm pl.java:2649) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
throws ServletException,IOException
{
response.setContentType("text/html; charset=gb2312");
ServletContext sc = getServletContext();
RequestDispatcher rd = null;
rd = sc.getRequestDispatcher("/index.jsp"); //定向的页面
rd.forward(request, response);
}
通常在servlet中使用,不在jsp中使用。 2.response.sendRedirect() 是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件. 重定向后在浏览器地址栏上会出现重定向页面的URL 例:在servlet中重定向
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/html; charset=gb2312");
response.sendRedirect("/index.jsp");
}
由于response是jsp页面中的隐含对象,故在jsp页面中可以用response.sendRedirect()直接实现重定位。
但在weblogic下报错
何故?
错误为:java.net.ProtocolException: Didn't meet stated Content-Length, wrote: '631' byte
s instead of stated: '1528' bytes.
at weblogic.servlet.internal.ServletOutputStreamImpl.ensureContentLength
(ServletOutputStreamImpl.java:472)
at weblogic.servlet.internal.ServletResponseImpl.ensureContentLength(Ser
vletResponseImpl.java:1213)
at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImp
l.java:1225)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2649)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)