HttpServletResponseµÄÊä³öÎÊÌâ
1 responseµÄÊä³öÁ÷
response¶ÔÏóÓÐgetWriter()ºÍgetOutputStream()Á½¸ö·½·¨£¬ËüÃǶ¼ÊÇÓÃÀ´Ïò¿Í»§¶ËÏìÓ¦ÓõÄÁ÷¶ÔÏ󣬲»¹ýÒ»¸öÊÇ×Ö·ûÁ÷£¬ÁíÒ»¸öÊÇ×Ö½ÚÁ÷¡£
? PrintWriter getWriter()£º»ñÈ¡ÏìÓ¦×Ö·ûÁ÷£¬ÓÃÀ´Ïò¿Í»§¶ËÏìÓ¦¶þ½øÖÆÊý¾Ý£¬ÀýÈçͼ
Ƭ£»
? ServletOutputStream getOutputStream()£º»ñÈ¡ÏìÓ¦×Ö½ÚÁ÷£¬ÓÃÀ´Ïò¿Í»§¶ËÏìÓ¦Îı¾
Êý¾Ý£¬ÀýÈçHTML´úÂë¡£
ÕâÁ½Õß֮ǰֻÄÜʹÓÃÆäÖÐÒ»¸ö£¬Ò²¾ÍÊÇ˵£¬ÒªÃ´Ê¹ÓÃ×Ö·ûÁ÷£¬ÒªÃ´Ê¹ÓÃ×Ö½ÚÁ÷£¬²»ÄÜÁ½Õß¼æµÃ¡£Èç¹ûÔÚ»ñÈ¡ÆäÖÐÒ»¸öÁ÷¶ÔÏóºó£¬ÔÙÈ¥»ñÈ¡ÁíÒ»¸öÁ÷£¬ÄÇô¾Í»á³öÏÖÒì³£¡£ PrintWriter pw = response.getWriter(); OutputStream out = response.getOutputStream();//Å׳öÒì³£ OutputStream out = response.getOutputStream(); PrintWriter pw = response.getWriter();//Å׳öÒì³£ 2 Ë¢ÐÂÊä³öÁ÷
responseÄÚ²¿µÄÊä³öÁ÷ÓÐ8KBµÄ»º³åÇø£¬Èç¹û»º³åÇøÂúÁ˵ϰ£¬ÄÇôresponse»á×Ô¶¯È¥Ìá½»£¬¼´°Ñ»º³åÇøÄÚÈÝÊä³ö¸ø¿Í»§¶Ë¡£Õâʱµ÷ÓÃresponseµÄisCommited()·½·¨·µ»ØµÄ¾ÍÊÇtrue£¬±íʾresponseÒѾÌá½»¹ýÖÁÉÙÒ»´ÎÁË¡£
Ò²¿ÉÒÔÔÚ»º³åÇøÃ»ÓÐ×°Âúʱµ÷ÓÃresponse.flushBuffer()·½·¨Ë¢ÐÂÊä³öÁ÷£¬°Ñ»º³åÇøÖеÄÊý¾Ý·¢Ë͵½¿Í»§¶ËÈ¥¡£Í¬Ñù£¬ÕâÒ²»áµ¼ÖÂresponseµÄisCommited()·½·¨·µ»ØµÄ¾ÍÊÇtrue£¬±íʾresponseÒѾÌá½»¹ýÖÁÉÙÒ»´ÎÁË¡£
ÆäʵҲ¿ÉÒÔµ÷ÓÃresponse.getWirter().flush()·½·¨´ïµ½Óëµ÷ÓÃresponse.flushBuffer()ÏàͬµÄЧ¹û¡£ÕâÁ½ÖÖ·½Ê½»ù±¾Ïàͬ£¡
Ò»µ©responseµÄisCommited()·½·¨·µ»Øtrue£¬Õâ˵Ã÷·þÎñÆ÷ÒѾÖÁÉÙ°Ñ״̬Âë¡¢ÏìӦͷµÈÊý¾Ý·¢Ë͸ø¿Í»§¶ËÁË£¬Ò²¾ÍÊÇ˵ÒѾ¿ªÊ¼Ïò¿Í»§ÏìÓ¦ÁË¡£ response.setContentType(\); PrintWriter out = response.getWriter(); out.print(\´ó¼ÒºÃ\); out.flush();//»òÕßÊÇresponse.flushBuffer(); System.out.println(\);//¿ÉÒÔÔÚÕâÀïÌí¼Ó¶Ïµã£¬½øÐвâÊÔ¡£µ«Ö»ÓÐFireFox¿ÉÒÔ¿´µ½Ð§¹û£¡ µ«ÊÇ£¬ÕâÀïÄãҪעÒâһϣ¬²»ÊÇ˵·þÎñÆ÷Ïò¿Í»§¶Ë·¢ËÍÁËÊý¾Ý£¬¾Í±íʾÊý¾ÝÒ»¶¨»áÏÔʾÔÚä¯ÀÀÆ÷ÉÏ¡£ÒòΪ¿Í»§¶ËµÄä¯ÀÀÆ÷Ò²Ðí»áÓÐ×Ô¼ºµÄ»º´æ£¬ÔÚä¯ÀÀÆ÷µÄ»º´æÃ»ÓÐÂú֮ǰ£¬ä¯ÀÀÆ÷ÊDz»»áÈ¥ÏÔʾµÄ¡£ÀýÈçIE8ºÍGoogleä¯ÀÀÆ÷¾ÍÊÇÕâÑù£¬µ«FireFox»áÂíÉÏÏÔʾÊý¾Ý£¡
²âÊԵõ½IE8µÄ»º´æÎª16KB£¬Ö»ÒªÏìÓ¦Êý¾Ý´óÓÚ16KB¾Í»áÔÚIE8ÉÏÏÔʾ³öÀ´¡£ response.setContentType(\);
for(int i = 0; i < 1024 * 16 + 1; i++) { } System.out.println(\); //¿ÉÒÔÔÚ±¾ÐÐÌí¼Ó¶Ïµã£¬½øÐвâÊÔ response.getWriter().print(\); ÖØ¶¨Ïò
1 ʲôÊÇÖØ¶¨Ïò
ÖØ¶¨ÏòÓëÇëÇóת·¢ºÜÏàËÆ£¬µ«Óб¾ÖÊÉϵÄÇø±ð¡£ÇëÇóת·¢ÐèҪʹÓÃRequestDispatcherÀàµÄforward()·½·¨£¬¶øÖض¨ÏòÐèҪʹÓÃresponse¶ÔÏóµÄsendRedirect()·½·¨¡£
// AServlet public void doGet(HttpServletRequest request, HttpServletResponse response) } // BServlet public void doGet(HttpServletRequest request, HttpServletResponse response) } throws ServletException, IOException { response.setContentType(\); PrintWriter out = response.getWriter(); out.print(\); throws ServletException, IOException { response.sendRedirect(\);
2 ÖØ¶¨ÏòµÄÔÀí
ÏÖÔÚÄãÓ¦¸ÃÒѾ»áÓÃÖØ¶¨ÏòÁË£¬µ«Ä㻹²»ÖªµÀÖØ¶¨ÏòµÄÔÀí¡£ÎÒÃÇÏÈÀ´ËµËµÖض¨ÏòµÄÔÀí£¬È»ºóÔÙÈ¥ÓëÇëÇóת·¢±È½Ï¡£
response.sendRedirect()·½·¨Æäʵ¾ÍÊÇÏò¿Í»§¶ËµÄÏìÓ¦£¡Ã»´í£¬µ÷ÓÃÕâ¸ö·½·¨¾ÍÒѾÊÇÏò¿Í»§¶ËÏìÓ¦ÁË¡£ÄÇÄã¿ÉÄÜ»áÎÊ£¬ÎªÊ²Ã´ÏìÓ¦ÁËÖ®ºóÓֻῴµ½BServletµÄÏìÓ¦½á¹ûÄØ£¿ÒòΪ״̬ÂëΪ302£¬Õâ±íʾÃüÁî¿Í»§¶Ëä¯ÀÀÆ÷ÂíÉÏÔÙÈ¥Ïò·þÎñÆ÷·¢³öÁíÒ»¸öÇëÇó£¬ÇëÇóµÄ×ÊԴΪBServlet¡£
µ±ÏìӦ״̬ÂëΪ302ʱ£¬ÏìӦͷÐÅÏ¢ÖÐÐèÒª»¹ÓÐÒ»¸öÏìӦͷÐÅÏ¢£¬Õâ¸öÍ·ÐÅÏ¢ÃûΪLocation¡£ÕâÏ൱ÓÚÄãµ½ÎÒ¼ÒÀ´ÕÒÎÒ£¬ÎÒ¼ÒÃÅÉÏÓиöÖ½Ìõ£¬ÉÏÃæÐ´×Å¡°302£¬ÎÒÒѾ°á¼Ò£¬ÇëÂíÉϵ½XXXÀ´£¬¿ÉÒÔÕÒµ½ÎÒ¡±¡£302±íʾ¡°ÒÔ°á¼Ò¡±£¬¶øXXX±íʾ¡°ÐµØÖ·¡±¡£ÆäÖÐÏìӦͷÐÅÏ¢Location¾ÍÊÇ¡°ÐµØÖ·¡±ÁË¡£
ÇëÇóAServlet
ÇëÇóBServlet
û´í£¬Öض¨ÏòÆäʵ¾ÍÊÇÁ½¸öÇëÇ󣬶øÇÒÁ½¸öÇëÇó»¹ÊÇÁ¬ÐøµÄ£¬ÒòΪËٶȺܿ죬ËùÒÔÄã¿´²»³öÕâÊÇÁ½¸öÇëÇó¡£
ÄãÒ²ÐíÒѾÁôÒâµ½ÁË£¬ä¯ÀÀÆ÷µÄµØÖ·À¸ÖÐÏÔʾµÄ²»ÔÚÊÇAServlet£¬¶øÊÇBServlet¡£Äã¿ÉÒÔ³¢ÊÔÈ¥·ÃÎÊhttp://www.sun.com£¬µ«×îÖÕä¯ÀÀÆ÷µØÖ·À¸ÖÐÏÔʾµÄÊÇhttp://www.oracle.com/us/sun/index.htm¡£Õâ¾ÍÊÇÖØ¶¨Ïò£¡
ÒòΪÊÇÁ½¸öÇëÇó£¬ËùÒÔÄãÔÚAServletÖÐʹÓÃrequest.setAttribute()±£´æµÄÊý¾Ý£¬ÔÚBServletÖÐÊÇ»ñÈ¡²»µ½µÄ£¡ÕâÒ»µãÓëÇëÇóת·¢ÊDz»Í¬µÄ£¡
3 ÖØ¶¨ÏòÓëÇëÇóת·¢µÄ±È½Ï
ÖØ¶¨ÏòµÄÀí½â£ºÄãµ½ÎÒ¼ÒÕÒÎÒ½èÇ®£¨µÚÒ»¸öÇëÇ󣩣¬µ«ÊÇÎÒÒѾ°á¼Ò£¬ÐÂס»§°ÑÎÒµÄеØÖ·¸æËßÁËÄ㣨·þÎñÆ÷·µ»Ø302ÏìÓ¦£¬ÒÔ¼°LocationÏìӦͷ£©£¬ÄãÔÙȥеØÖ·ÕÒÎÒ£¨µÚ¶þ¸öÇëÇ󣩣¬ÎÒ°ÑÇ®½è¸øÁËÄ㣨µÚ¶þ¸öÏìÓ¦£¬200£©¡£ ÖØ¶¨ÏòʱÐòͼ
×¢Òâһϣ¬Öض¨ÏòÆäʵһ¹²ÊÇÁ½¸öÇëÇó¡£ÒòΪÊÇÁ½¸öÇëÇó£¬ËùÒÔ²»ÄÜʹÓÃrequestÔÚÁ½¸öÇëÇóÖм䴫µÝÊý¾Ý£¡£¡£¡£¨Á½¸öHTTPÇëÇ󣬲»ÄÜʹÓÃrequest.setAttribute()ºÍrequest.getAttribute()´«µÝÊý¾Ý£©¡£ÒòΪ·þÎñÆ÷»áΪÿ¸öÇëÇó´´½¨ÐµÄrequestºÍresponse¶ÔÏó£¡
¹Û²ìä¯ÀÀÆ÷µØÖ·À¸ÖеĵØÖ·»á·¢Éú±ä»¯£¬ÕâÊÇÒòΪä¯ÀÀÆ÷ÖØ¶¨Ïòµ½ÐµĵØÖ·ÁË¡£ µÚ¶þ¸öÇëÇóÒ»¶¨ÊÇGET£¬²»¿ÉÄÜÊÇPOST£¡£¡£¡ÒòΪֻÓÐÌá½»POST±íµ¥²ÅÊÇPOSTÇëÇ󣬶øµÚ¶þ¸öÇëÇóÊÇä¯ÀÀÆ÷ͨ¹ýµÚÒ»¸öÇëÇóµÄÏìÓ¦½á¹ûÖ±½Ó·¢³öµÄ£¬ËùÒÔÒ»¶¨ÊÇGET¡£ËùÒÔµ÷ÓõÄÒ»¶¨ÊÇBServletµÄdoGet()·½·¨¡£
ÇëÇóת·¢µÄÀí½â£ºÄãµ½ÎÒ¼ÒÕÒÎÒ½èÇ®£¨µÚÒ»¸öÇëÇ󣩣¬µ«ÊÇÎÒÒѾ°á¼Ò£¬ÐÂס»§ÈÃÄãÉԵȣ¬È»ºóÐÂס»§È¥ÎÒµÄеØÖ·°ÑÎÒÕÒÀ´£¨ÇëÇóת·¢£©£¬È»ºóÎÒÃǼûÃæÁË£¬ÎÒ°ÑÇ®½è¸øÁËÄã¡££¨ÏìÓ¦³É¹¦£¬200£©
ÇëÇóת·¢Ê±Ðòͼ
ÒòΪֻÓÐÒ»¸öÇëÇó£¬ËùÒÔrequest¶ÔÏó¿ÉÒÔÖØÓã¡¿ÉÒÔÔÚBServletÖÐʹÓÃ