Yansheng Lin wrote:

Hi,

You are confused with request and response. The request is shared by the
forwarding jsp and the forwarded jsp, not the response(well kind of, but not
until it's being generated). You will have to explicitly set the response
contentType to utf-8 in the forwarded page.


-Yan

I see what you mean.


How I put it together in my mind--naively I can't say--is that the servlet begins constructing a response buffer to the request and the contentType gets set by res.setContentType(). Shortly following this, the request and response are forwarded for additional processing by a JSP page. Upon which the response buffer is cleared as it has not been committed. Since no attribute to the page directive is provided in the JSP, the default behavior is to set the contentType to "text/html;charset=ISO-8859-1". The response returns to the controlling servlet and gets committed to the client, having overwritten the original call to setContentType.

Lesson learned: if one forwards control to a JSP page, the page directive must set contentType and/or pageEncoding, either electively or by requirement, otherwise the JSP defaults will supersede any work done prior to the forwarding of the request.

Thank you, Yansheng.

Tim



-----Original Message-----
From: Timothy Stone [mailto:[EMAIL PROTECTED] Sent: April 15, 2004 14:45
To: Tomcat Users List
Cc: [EMAIL PROTECTED]
Subject: Re: RequestDispatcher and pageEncoding question...



Timothy Stone wrote:



Timothy Stone wrote:


List,

A servlet I am debugging and trying to understand sets the response's contentType as follows:

response.setContentType( "text/html;charset=UTF-8" );

Shortly following the following forward is done:

request.getRequestDispatcher( jspPage ).forward( request, response );
response.getWriter().flush();

The JSP forwarded gets the response with the contentType set, but commiting the response seems to reset the contentType to text/html;charset=ISO-8859-1, the default.

The JSP in the forward does not set a pageEncoding attribute in the page directive, so I'm pointing the finger there at the moment. Can someone outline what is going on behind the scenes of the requestDispatcher call that would be reseting the response's contentType?


From the documentation:

"...Uncommitted output in the response buffer is automatically cleared before the forward."

So, is the call to response.setContentType() being "reset" on the forward()? Can anyone elaborate?


I see that nearly exactly what I'm experiencing was discussed last year regarding the behavior as seen through Struts. No resolution given.

http://marc.theaimsgroup.com/?l=tomcat-user&m=106323343414285&w=2

I'll continue to watch this new thread for suggestions.

Again, with many thanks,
Tim




--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to