Web·þÎñÆ÷¹¤×÷ÔÀí¸ÅÊö
ºÜ¶àʱºòÎÒÃǶ¼ÏëÖªµÀ£¬webÈÝÆ÷»òweb·þÎñÆ÷£¨±ÈÈçTomcat»òÕßjboss£©ÊÇÔõÑù¹¤×÷µÄ£¿ËüÃÇÊÇÔõÑù´¦ÀíÀ´×ÔÈ«ÊÀ½çµÄhttpÇëÇóµÄ£¿ËüÃÇÔÚÄ»ºó×öÁËʲô¶¯×÷£¿Java
Servlet API£¨ÀýÈçServletContext£¬ServletRequest£¬ServletResponseºÍSessionÕâЩÀࣩÔÚÆäÖаçÑÝÁËʲô½ÇÉ«£¿ÕâЩ¶¼ÊÇwebÓ¦Óÿª·¢Õß»òÕßÏë³ÉΪwebÓ¦Óÿª·¢ÕßµÄÈ˱ØÐëÒªÖªµÀµÄÖØÒªÎÊÌâ»ò¸ÅÄî¡£ÔÚÕâÆªÎÄÕÂÀÎÒ½«»á¾¡Á¿¸ø³öÒÔÉÏijЩÎÊÌâµÄ´ð°¸¡£Ç뼯Öо«Éñ£¡
ÎÄÕÂÕ½ڣº
ʲôÊÇweb·þÎñÆ÷¡¢Ó¦Ó÷þÎñÆ÷ºÍwebÈÝÆ÷£¿
ʲôÊÇServlet£¿ËûÃÇÓÐʲô×÷Óã¿
ʲôÊÇServletContext£¿ËüÓÉË´´½¨£¿
ServletRequestºÍServletResponse´ÓÄÄÀï½øÈëÉúÃüÖÜÆÚ£¿
ÈçºÎ¹ÜÀíSession£¿ÖªµÀcookieÂð£¿
ÈçºÎÈ·±£Ḭ̈߳²È«£¿
ʲôÊÇweb·þÎñÆ÷£¬Ó¦Ó÷þÎñÆ÷ºÍwebÈÝÆ÷£¿
ÎÒÏÈÌÖÂÛweb·þÎñÆ÷ºÍÓ¦Ó÷þÎñÆ÷¡£ÈÃÎÒÔÚÓÃÒ»¾ä»°´ó¸Å½²½²£º
¡°ÔÚ¹ýÈ¥ËüÃÇÊÇÓÐÇø±ðµÄ£¬µ«ÊÇÕâÁ½¸ö²»Í¬µÄ·ÖÀàÂýÂýµØºÏ²¢ÁË£¬¶øÈç½ñÔÚ´ó¶àÔÚÇé¿öϺÍʹÓÃÖпÉÒÔ°ÑËüÃÇ¿´³ÉÒ»¸öÕûÌå¡£¡±
ÔÚMosaicä¯ÀÀÆ÷£¨Í¨³£±»ÈÏΪÊǵÚÒ»¸öͼÐλ¯µÄwebä¯ÀÀÆ÷£©ºÍ³¬Á´½ÓÄÚÈݵijõÆÚ£¬Ñݱä³öÁË¡°web·þÎñÆ÷¡±µÄиÅÄËüͨ¹ýHTTPÐÒéÀ´Ìṩ¾²Ì¬Ò³ÃæÄÚÈݺÍͼƬ·þÎñ¡£ÔÚÄǸöʱºò£¬´ó¶àÊýÄÚÈݶ¼ÊǾ²Ì¬µÄ£¬²¢ÇÒHTTP
1.0Ö»ÊÇÒ»ÖÖ´«ËÍÎļþµÄ·½Ê½¡£µ«ÔÚ²»¾Ãºóweb·þÎñÆ÷ÌṩÁËCGI¹¦ÄÜ¡£ÕâÒâζ×ÅÎÒÃÇ¿ÉÒÔΪÿ¸öwebÇëÇóÆô¶¯Ò»¸ö½ø³ÌÀ´²úÉú¶¯Ì¬ÄÚÈÝ¡£ÏÖÔÚ£¬HTTPÐÒéÒѾºÜ³ÉÊìÁ˲¢ÇÒweb·þÎñÆ÷±äµÃ¸ü¼Ó¸´ÔÓ£¬ÓµÓÐÁËÏñ»º´æ¡¢°²È«ºÍsession¹ÜÀíÕâЩ¸½¼Ó¹¦ÄÜ¡£Ëæ×ż¼ÊõµÄ½øÒ»²½³ÉÊ죬ÎÒÃÇ´ÓKivaºÍNetDynamicsѧ»áÁ˹«Ë¾×¨ÊôµÄ»ùÓÚJavaµÄ·þÎñÆ÷¶Ë¼¼Êõ¡£ÕâЩ¼¼Êõ×îÖÕÈ«¶¼ÈÚÈëµ½ÎÒÃǽñÌìÒÀÈ»ÔÚ´ó¶àÊýÓ¦Óÿª·¢ÀïʹÓõÄJSPÖС£

ÒÔÉÏÊǹØÓÚweb·þÎñÆ÷µÄ¡£ÏÖÔÚÎÒÃÇÀ´ÌÖÂÛÓ¦Ó÷þÎñÆ÷¡£
ÔÚͬһʱÆÚ£¬Ó¦Ó÷þÎñÆ÷ÒѾ´æÔÚ²¢·¢Õ¹ºÜ³¤Ò»¶Îʱ¼äÁË¡£Ò»Ð©¹«Ë¾ÎªUnix¿ª·¢ÁËTuxedo£¨ÃæÏòÊÂÎñµÄÖмä¼þ£©¡¢TopEnd¡¢EncinaµÈ²úÆ·£¬ÕâЩ²úÆ·¶¼ÊÇ´ÓÀàËÆIMSºÍCICSµÄÖ÷»úÓ¦ÓùÜÀíºÍ¼à¿Ø»·¾³ÑÜÉú¶øÀ´µÄ¡£´ó²¿·ÖµÄÕâЩ²úÆ·¶¼Ö¸¶¨ÁË¡°·â±ÕµÄ¡±²úƷרÓÃͨÐÅÐÒéÀ´»¥Á¬ÅÖ¿Í»§»ú(¡°fat¡±
client)ºÍ·þÎñÆ÷¡£ÔÚ90Äê´ú£¬ÕâЩ´«Í³µÄÓ¦Ó÷þÎñÆ÷²úÆ·¿ªÊ¼Ç¶ÈëHTTPͨÐŹ¦ÄÜ£¬¸Õ¿ªÊ¼ÒªÀûÓÃÍø¹ØÀ´ÊµÏÖ¡£²»¾ÃºóËüÃÇÖ®¼äµÄ½çÏß¿ªÊ¼±äµÃÄ£ºýÁË¡£
ͬʱ£¬web·þÎñÆ÷Ô½À´Ô½³ÉÊ죬¿ÉÒÔ´¦Àí¸ü¸ßµÄ¸ºÔØ¡¢¸ü¶àµÄ²¢·¢ºÍÓµÓиüºÃµÄÌØÐÔ£»Ó¦Ó÷þÎñÆ÷¿ªÊ¼Ìí¼ÓÔ½À´Ô½¶àµÄ»ùÓÚHTTPµÄͨÐŹ¦ÄÜ¡£ËùÓеÄÕâЩµ¼ÖÂÁËweb·þÎñÆ÷ÓëÓ¦Ó÷þÎñÆ÷µÄ½çÏß±äµÃ¸üÕÁË¡£
Ŀǰ£¬¡°Ó¦Ó÷þÎñÆ÷¡±ºÍ¡°web·þÎñÆ÷¡±Ö®¼äµÄ½çÏßÒѾ±äµÃÄ£ºý²»ÇåÁË¡£µ«ÊÇÈËÃÇ»¹°ÑÕâÁ½¸öÊõÓïÇø·Ö¿ªÀ´£¬×÷Ϊǿµ÷ʹÓá£
µ±ÓÐÈË˵µ½¡°web·þÎñÆ÷¡±Ê±£¬Äãͨ³£Òª°ÑËüÈÏΪÊÇÒÔHTTPΪºËÐÄ¡¢web UIΪÏòµ¼µÄÓ¦Óᣵ±ÓÐÈË˵µ½¡°Ó¦Ó÷þÎñÆ÷¡±Ê±£¬Äã¿ÉÄÜÏëµ½¡°¸ß¸ºÔØ¡¢ÆóÒµ¼¶ÌØÐÔ¡¢ÊÂÎñºÍ¶ÓÁС¢¶àͨµÀͨÐÅ£¨HTTPºÍ¸ü¶àµÄÐÒ飩¡±¡£µ«ÏÖÔÚÌṩÕâЩÐèÇóµÄ»ù±¾É϶¼ÊÇͬһ¸ö²úÆ·¡£
ÒÔÉϾÍÊǹØÓÚweb·þÎñÆ÷ºÍÓ¦Ó÷þÎñÆ÷µÄÈ«²¿ÄÚÈÝ¡£ÏÖÔÚÎÒÃÇÀ´¿´¿´µÚÈý¸öÊõÓ¼´webÈÝÆ÷¡£

ÔÚJava·½Ã棬webÈÝÆ÷Ò»°ãÊÇÖ¸ServletÈÝÆ÷¡£ServletÈÝÆ÷ÊÇÓëJava Servlet½»»¥µÄwebÈÝÆ÷µÄ×é¼þ¡£webÈÝÆ÷¸ºÔð¹ÜÀíServletµÄÉúÃüÖÜÆÚ¡¢°ÑURLÓ³Éäµ½ÌØ¶¨µÄServlet¡¢È·±£URLÇëÇóÓµÓÐÕýÈ·µÄ·ÃÎÊȨÏ޺͸ü¶àÀàËÆµÄ·þÎñ¡£×ÛºÏÀ´¿´£¬ServletÈÝÆ÷¾ÍÊÇÓÃÀ´ÔËÐÐÄãµÄServletºÍά»¤ËüµÄÉúÃüÖÜÆÚµÄÔËÐл·¾³¡£
ʲôÊÇServlet£¿ËûÃÇÓÐʲô×÷Óã¿
ÔÚJavaÀServletʹÄãÄܹ»±àд¸ù¾ÝÇëÇó¶¯Ì¬Éú³ÉÄÚÈݵķþÎñ¶Ë×é¼þ¡£ÊÂʵÉÏ£¬ServletÊÇÒ»¸öÔÚjavax.servlet°üÀﶨÒåµÄ½Ó¿Ú¡£ËüΪServletµÄÉúÃüÖÜÆÚÉùÃ÷ÁËÈý¸ö»ù±¾·½·¨¡ª¡ªinit()¡¢service()ºÍdestroy()¡£Ã¿¸öServlet¶¼ÒªÊµÏÖÕâЩ·½·¨£¨ÔÚSDKÀﶨÒå»òÕßÓû§¶¨Ò壩²¢ÔÚËüÃǵÄÉúÃüÖÜÆÚµÄÌØ¶¨Ê±¼äÓÉ·þÎñÆ÷À´µ÷ÓÃÕâЩ·½·¨¡£
Àà¼ÓÔØÆ÷ͨ¹ýÀÁ¼ÓÔØ£¨lazy-loading£©»òÕßÔ¤¼ÓÔØ£¨eager loading£©×Ô¶¯µØ°ÑServletÀà¼ÓÔØµ½ÈÝÆ÷Àÿ¸öÇëÇó¶¼ÓµÓÐ×Ô¼ºµÄỊ̈߳¬¶øÒ»¸öServlet¶ÔÏó¿ÉÒÔͬʱΪ¶à¸öÏ̷߳þÎñ¡£µ±Servlet¶ÔÏó²»ÔÙ±»Ê¹ÓÃʱ£¬Ëü¾Í»á±»JVMµ±×öÀ¬»ø»ØÊÕµô¡£
ÀÁ¼ÓÔØµÄServlet


Ô¤¼ÓÔØµÄServlet


ʲôÊÇServletContext£¿ËüÓÉË´´½¨£¿
µ±ServletÈÝÆ÷Æô¶¯Ê±£¬Ëü»á²¿Êð²¢¼ÓÔØËùÓеÄwebÓ¦Óᣵ±webÓ¦Óñ»¼ÓÔØÊ±£¬ServletÈÝÆ÷»áÒ»´ÎÐÔΪÿ¸öÓ¦Óô´½¨ServletÉÏÏÂÎÄ£¨ServletContext£©²¢°ÑËü±£´æÔÚÄÚ´æÀï¡£ServletÈÝÆ÷»á´¦ÀíwebÓ¦ÓõÄweb.xmlÎļþ£¬²¢ÇÒÒ»´ÎÐÔ´´½¨ÔÚweb.xmlÀﶨÒåµÄServlet¡¢FilterºÍListener£¬Í¬ÑùÒ²»á°ÑËüÃDZ£´æÔÚÄÚ´æÀï¡£µ±ServletÈÝÆ÷¹Ø±Õʱ£¬Ëü»áÐ¶ÔØËùÓеÄwebÓ¦ÓúÍServletContext£¬ËùÓеÄServlet¡¢FilterºÍListnerʵÀý¶¼»á±»Ïú»Ù¡£
´ÓJavaÎĵµ¿ÉÖª£¬ServletContext¶¨ÒåÁËÒ»×é·½·¨£¬ServletʹÓÃÕâЩ·½·¨À´ÓëËüµÄServletÈÝÆ÷½øÐÐͨÐÅ¡£ÀýÈ磬ÓÃÀ´»ñÈ¡ÎļþµÄMIMEÀàÐÍ¡¢×ª·¢ÇëÇó»òÕß±àдÈÕÖ¾Îļþ¡£ÔÚwebÓ¦ÓõIJ¿ÊðÎļþ£¨deployment
descriptor£©±êÃ÷¡°·Ö²¼Ê½¡±µÄÇé¿öÏ£¬webÓ¦ÓõÄÿһ¸öÐéÄâ»ú¶¼ÓµÓÐÒ»¸öÉÏÏÂÎÄʵÀý¡£ÔÚÕâÖÖÇé¿öÏ£¬²»ÄܰÑServletÉÏÏÂÎĵ±×ö¹²ÏíÈ«¾ÖÐÅÏ¢µÄ±äÁ¿£¨ÒòΪËüµÄÐÅÏ¢ÒѾ²»¾ßÓÐÈ«¾ÖÐÔÁË£©¡£¿ÉÒÔʹÓÃÍⲿ×ÊÔ´À´´úÌæ£¬±ÈÈçÊý¾Ý¿â¡£
ServletRequestºÍServletResponse´ÓÄÄÀï½øÈëÉúÃüÖÜÆÚ£¿
ServletÈÝÆ÷°üº¬ÔÚweb·þÎñÆ÷ÖУ¬web·þÎñÆ÷¼àÌýÀ´×ÔÌØ¶¨¶Ë¿ÚµÄHTTPÇëÇó£¬Õâ¸ö¶Ë¿Úͨ³£ÊÇ80¡£µ±¿Í»§¶Ë£¨Ê¹ÓÃwebä¯ÀÀÆ÷µÄÓû§£©·¢ËÍÒ»¸öHTTPÇëÇóʱ£¬ServletÈÝÆ÷»á´´½¨ÐµÄHttpServletRequestºÍHttpServletResponse¶ÔÏ󣬲¢ÇÒ°ÑËüÃÇ´«µÝ¸øÒѾ´´½¨µÄFilterºÍURLģʽÓëÇëÇóURLÆ¥ÅäµÄServletʵÀýµÄ·½·¨£¬ËùÓеÄÕâЩ¶¼Ê¹ÓÃͬһ¸öÏ̡߳£
request¶ÔÏóÌṩÁË»ñÈ¡HTTPÇëÇóµÄËùÓÐÐÅÏ¢µÄÈë¿Ú£¬±ÈÈçÇëÇóÍ·ºÍÇëÇóʵÌå¡£response¶ÔÏóÌṩÁË¿ØÖƺͷ¢ËÍHTTPÏìÓ¦µÄ±ãÀû·½·¨£¬±ÈÈçÉèÖÃÏìӦͷºÍÏìӦʵÌ壨ͨ³£ÊÇJSPÉú³ÉµÄHTMLÄÚÈÝ£©¡£µ±HTTPÏìÓ¦±»Ìá½»²¢½áÊøºó£¬requestºÍresponse¶ÔÏ󶼻ᱻÏú»Ù¡£
ÈçºÎ¹ÜÀíSession£¿ÖªµÀcookieÂð£¿
µ±¿Í»§¶ËµÚÒ»´Î·ÃÎÊwebÓ¦ÓûòÕßµÚÒ»´ÎʹÓÃrequest.getSession()»ñÈ¡HttpSessionʱ£¬ServletÈÝÆ÷»á´´½¨Session£¬Éú³ÉÒ»¸ölongÀàÐ͵ÄΨһID£¨Äã¿ÉÒÔʹÓÃsession.getId()»ñÈ¡Ëü£©²¢°ÑËü±£´æÔÚ·þÎñÆ÷µÄÄÚ´æÀï¡£ServletÈÝÆ÷ͬÑù»áÔÚHTTPÏìÓ¦ÀïÉèÖÃÒ»¸öCookie£¬cookieµÄÃûÊÇJSESSIONID²¢ÇÒcookieµÄÖµÊÇsessionµÄΨһID¡£
¸ù¾ÝHTTP cookie¹æ·¶£¨Õý¹æµÄwebä¯ÀÀÆ÷ºÍweb·þÎñÆ÷±ØÐë×ñÊØµÄÔ¼¶¨£©£¬ÔÚcookieµÄÓÐЧÆÚ¼ä£¬¿Í»§¶Ë£¨webä¯ÀÀÆ÷£©Ö®ºóµÄÇëÇó¶¼Òª°ÑÕâ¸öcookie·µ»Ø¸ø·þÎñÆ÷¡£ServletÈÝÆ÷»áÀûÓôøÓÐÃûΪJSESSIONIDµÄcookie¼ì²âÿһ¸öµ½À´µÄHTTPÇëÇóÍ·£¬²¢Ê¹ÓÃcookieµÄÖµ´Ó·þÎñÆ÷ÄÚÈÝÀï»ñÈ¡Ïà¹ØµÄHttpSession¡£
HttpSession»áÒ»Ö±´æ»î×Å£¬³ý·Ç³¬¹ýÒ»¶Îʱ¼äûʹÓá£Äã¿ÉÒÔÔÚweb.xmlÀïÉ趨Õâ¸öʱ¼ä¶Î£¬Ä¬ÈÏʱ¼ä¶ÎÊÇ30·ÖÖÓ¡£Òò´Ë£¬Èç¹û¿Í»§¶ËÒѾ³¬¹ý30·ÖÖÓûÓзÃÎÊwebÓ¦Óõϰ£¬ServletÈÝÆ÷¾Í»áÏú»ÙSession¡£Ö®ºóµÄÿһ¸öÇëÇ󣬼´Ê¹´øÓÐÌØ¶¨µÄcookie£¬¶¼ÔÙÒ²²»»á·ÃÎʵ½Í¬Ò»¸öSessionÁË¡£servletcontainer»á´´½¨Ò»¸öеÄSession¡£
ÏÖÓеÄSession

еÄSession

ÁíÍ⣬ÔÚ¿Í»§¶ËµÄsession cookieÓµÓÐÒ»¸öĬÈϵĴæ»îʱ¼ä£¬Õâ¸öʱ¼äÓëä¯ÀÀÆ÷µÄÔËÐÐʱ¼äÏàͬ¡£Òò´Ë£¬µ±Óû§¹Ø±Õä¯ÀÀÆ÷ºó£¨ËùÓеıêÇ©»òÕß´°¿Ú£©£¬¿Í»§¶ËµÄSession¾Í»á±»Ïú»Ù¡£ÖØÐ´ò¿ªä¯ÀÀÆ÷ºó£¬Óë֮ǰµÄSession¹ØÁªµÄcookie¾ÍÔÙÒ²²»»á±»·¢ËͳöÈ¥ÁË¡£ÔÙ´ÎʹÓÃrequest.getSession()»á·µ»ØÒ»¸öȫеÄHttpSession²¢ÇÒʹÓÃÒ»¸öȫеÄsession
IDÀ´ÉèÖÃcookie¡£
ÈçºÎÈ·±£Ḭ̈߳²È«?
ÄãÏÖÔÚÓ¦¸ÃÒѾ֪µÀËùÓеÄÇëÇó¶¼ÔÚ¹²ÏíServletºÍFilter¡£ÕâÊÇJavaµÄÒ»¸öºÜ°ôµÄÌØÐÔ£¬ËüÊǶàÏ̵߳IJ¢ÇÒ²»Í¬µÄỊ̈߳¨¼´HTTPÇëÇ󣩿ÉÒÔʹÓÃͬһ¸öʵÀý¡£·ñÔò£¬¶Ôÿһ¸öÇëÇó¶¼ÖØÐ´´½¨Ò»¸öʵÌå»áºÄ·ÑºÜ¶àµÄ×ÊÔ´¡£

ÄãͬÑùÒªÖªµÀ£¬Äã²»Ó¦¸ÃʹÓÃServlet»òÕßFilterµÄʵÀý±äÁ¿À´´æ·ÅÈκεÄÇëÇó»òÕ߻Ự·¶Î§ÄÚµÄÊý¾Ý¡£ÕâЩÊý¾Ý»á±»ÆäËûSessionµÄËùÓÐÇëÇó¹²Ïí¡£ÕâÊÇ·ÇḬ̈߳²È«µÄ£¡ÏÂÃæµÄÀý×Ó˵Ã÷ÁËÕâ¸öÎÊÌ⣺
public class MyServlet extends HttpServlet { private Object thisIsNOTThreadSafe; //Don't to this
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException
{
Object thisIsThreadSafe;
thisIsNOTThreadSafe = request.getParameter("foo");
// BAD!! Shared among all requests!
thisIsThreadSafe = request.getParameter("foo");
// OK, this is thread safe.
}
} |
²»ÒªÕâÑù×ö£¬Õâ»áµ¼ÖÂÈí¼þ³öbug¡£ |