1919
2020import java .io .IOException ;
2121import java .io .PrintStream ;
22+ import java .io .PrintWriter ;
2223import java .net .URLConnection ;
2324import java .net .HttpURLConnection ;
2425import java .net .URL ;
@@ -67,7 +68,7 @@ public static class EchoMapServlet extends HttpServlet {
6768 public void doGet (HttpServletRequest request ,
6869 HttpServletResponse response
6970 ) throws ServletException , IOException {
70- PrintStream out = new PrintStream ( response .getOutputStream () );
71+ PrintWriter out = response .getWriter ( );
7172 Map <String , String []> params = request .getParameterMap ();
7273 SortedSet <String > keys = new TreeSet (params .keySet ());
7374 for (String key : keys ) {
@@ -94,7 +95,7 @@ public static class EchoServlet extends HttpServlet {
9495 public void doGet (HttpServletRequest request ,
9596 HttpServletResponse response
9697 ) throws ServletException , IOException {
97- PrintStream out = new PrintStream ( response .getOutputStream () );
98+ PrintWriter out = response .getWriter ( );
9899 SortedSet <String > sortedKeys = new TreeSet ();
99100 Enumeration <String > keys = request .getParameterNames ();
100101 while (keys .hasMoreElements ()) {
@@ -110,10 +111,25 @@ public void doGet(HttpServletRequest request,
110111 }
111112 }
112113
114+ @ SuppressWarnings ("serial" )
115+ public static class HtmlContentServlet extends HttpServlet {
116+ @ SuppressWarnings ("unchecked" )
117+ @ Override
118+ public void doGet (HttpServletRequest request ,
119+ HttpServletResponse response
120+ ) throws ServletException , IOException {
121+ response .setContentType ("text/html" );
122+ PrintWriter out = response .getWriter ();
123+ out .print ("hello world" );
124+ out .close ();
125+ }
126+ }
127+
113128 @ BeforeClass public static void setup () throws Exception {
114129 server = createTestServer ();
115130 server .addServlet ("echo" , "/echo" , EchoServlet .class );
116131 server .addServlet ("echomap" , "/echomap" , EchoMapServlet .class );
132+ server .addServlet ("htmlcontent" , "/htmlcontent" , HtmlContentServlet .class );
117133 server .start ();
118134 baseUrl = getServerURL (server );
119135 }
@@ -176,19 +192,33 @@ public void run() {
176192 assertEquals (200 , conn .getResponseCode ());
177193 assertEquals ("text/css" , conn .getContentType ());
178194
179- // Servlets should have text/html with proper encoding
195+ // Servlets should have text/plain with proper encoding by default
180196 URL servletUrl = new URL (baseUrl , "/echo?a=b" );
181197 conn = (HttpURLConnection )servletUrl .openConnection ();
182198 conn .connect ();
183199 assertEquals (200 , conn .getResponseCode ());
184- assertEquals ("text/html ; charset=utf-8" , conn .getContentType ());
200+ assertEquals ("text/plain ; charset=utf-8" , conn .getContentType ());
185201
186202 // We should ignore parameters for mime types - ie a parameter
187203 // ending in .css should not change mime type
188204 servletUrl = new URL (baseUrl , "/echo?a=b.css" );
189205 conn = (HttpURLConnection )servletUrl .openConnection ();
190206 conn .connect ();
191207 assertEquals (200 , conn .getResponseCode ());
208+ assertEquals ("text/plain; charset=utf-8" , conn .getContentType ());
209+
210+ // Servlets that specify text/html should get that content type
211+ servletUrl = new URL (baseUrl , "/htmlcontent" );
212+ conn = (HttpURLConnection )servletUrl .openConnection ();
213+ conn .connect ();
214+ assertEquals (200 , conn .getResponseCode ());
215+ assertEquals ("text/html; charset=utf-8" , conn .getContentType ());
216+
217+ // JSPs should default to text/html with utf8
218+ servletUrl = new URL (baseUrl , "/testjsp.jsp" );
219+ conn = (HttpURLConnection )servletUrl .openConnection ();
220+ conn .connect ();
221+ assertEquals (200 , conn .getResponseCode ());
192222 assertEquals ("text/html; charset=utf-8" , conn .getContentType ());
193223 }
194224
0 commit comments