Web¿ò¼ÜÊÇ¿ª·¢ÕßÔÚʹÓÃijÖÖÓïÑÔ±àдWebÓ¦Ó÷þÎñ¶Ëʱ¹ØÓڼܹ¹µÄ×î¼Ñʵ¼ù¡£ºÜ¶àWeb¿ò¼ÜÊÇ´Óʵ¼ÊµÄWebÏîÄ¿³éÈ¡³öÀ´µÄ£¬½öºÍWebµÄÇëÇóºÍÏìÓ¦´¦ÀíÓйأ¬ÐγÉÒ»¸ö»ù´¡£¬ÔÚ¿ª·¢±ðµÄÓ¦ÓÃÏîÄ¿µÄʱºòÔò¿ÉÒÔ´ÓÕâ¸ö°þÀë³öÀ´µÄ»ù´¡×öÆð£¬Èÿª·¢Õ߸ü¹Ø×¢¸ü¾ßÌåµÄÒµÎñÎÊÌ⣬¶ø²»ÊÇWebµÄÇëÇóºÍÏìÓ¦µÄ¿ØÖÆ¡£
¿ò¼ÜºÜ¶à£¬µ«Ì×·»ù±¾ÀàËÆ£¬°ïÄãÒþ²ØºÜ¶à¹ØÓÚ HTTP ÐÒéϸ½ÚÄÚÈÝ£¬×¨×¢¹¦ÄÜ¿ª·¢¡£
µ«¶ÔÒ»¸ö³õѧÕßÀ´Ëµ£¬¹ýÔçµÄ½Ó´¥¿ò¼ÜÍùÍùÊÇʱ¶¹¦°ë£¡Í¬ÑùÒ»¸öÎÊÌ⣬»»Ò»ÖÖ¿ò¼ÜÄã¿ÉÄÜÐèÒª´ÓÍ·¿ªÊ¼Ñо¿¡£
ÏÂÃæÊÇÕë¶Ô³õѧ Java ¿ª·¢ Web ¹ý³ÌһЩ¸öÈ˼û½âºÍ˼·£¬¸ßÊÖ¿ÉÂÔ¹ý¡£
1. »ù±¾ÒªÇó£ºJava ±à³Ì»ù´¡
ÓÐÁ¼ºÃµÄ Java ÓïÑÔ±à³Ì»ù´¡£¬ÕâÊDZØÐëµÄ£¬ÔÚÌÖÂÛ Web ¿ª·¢¼¼ÊõʱÌáÁËÒ»¸ö Java ±à³Ì»ù´¡µÄÎÊÌâ»á±»±ÉÊӵġ£
2. »·¾³×¼±¸ (Eclipse + Tomcat)
Ñ¡ÔñÒ»¸öÄãϲ°®µÄServletÈÝÆ÷£¬»òÕß˵´óÒ»µã¾ÍÊÇÓ¦Ó÷þÎñÆ÷£¬ÍƼö Tomcat ¡¢Resin »òÕß
Jetty ÕâЩÇáÁ¿¼¶µÄ²úÆ·¡£ÕâÈý¸ö²úÆ·ÏÂÔØ zip °ü½âѹºó¾Í¿ÉÒÔÓÃÁË¡£Èç¹ûÄã²»ÊìϤ Tomcat µÄ»°Ç벻ҪʹÓÃ
exe °æ±¾µÄ Tomcat£¬ÄÇ»áͽÔöºÜ¶à·³ÄÕ¡£Ò²²»½¨ÒéÔÚ Eclipse µÈһЩ¿ª·¢»·¾³Öм¯³É Tomcat
µÄ×ö·¨£¬Ò²»áͽÔö·³ÄÕ¡£
°ÑÓ¦Ó÷þÎñÆ÷Æô¶¯ÆðÀ´²¢ÄÜ·ÃÎʵ½ÆäĬÈϵÄÒ³ÃæÎª×¼¡£
¹ØÓÚ¿ª·¢¹¤¾ß
²»ÍƼöʹÓà MyEclipse ºÍ Eclipse µÄ JEE °æ±¾£¬Í½Ôö·³ÄÕ¡¢ÔËÐлºÂý¶øÇÒ»¹ÈÃÄãÎÞ·¨Á˽â
Web ÏîÄ¿µÄ½á¹¹¡£ÆÕͨµÄ Eclipse »òÕßÄãϲ»¶µÄ¿ª·¢¹¤¾ß¾Í×ã¹»ÁË£¬ÄÜÖ§³ÖÆÕͨ Java ÏîÄ¿¿ª·¢¼´¿É¡£
ΪÁË·½±ã£¬ÎÒ×öÁËÒ»¸ö×î»ù±¾µÄJava ÏîÄ¿ ¡ª¡ª ServletDemo.zip £¬Äã¿É½«Ëüµ¼Èëµ½ Eclipse
Àï¾ÍÊÇÒ»¸öÍêÕûµÄ¡¢×î¼òµ¥µÄ Web ÏîÄ¿¡£
È»ºó½«ÏÂÃæ XML ÄÚÈÝÌæ»» Tomcat Ï嵀 conf/server.xml Îļþ£º
<?xml version='1.0' encoding='utf-8'?> 2 <Server port="8005" shutdown="SHUTDOWN"> 3 <Service name="Catalina"> 4 <Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> 5 <Engine name="Catalina" defaultHost="localhost"> 6 <Host name="localhost"> 7 <Context path="" docBase="D:\WORKDIR\ServletDemo\webapp" reloadable="true"/> 8 </Host> 9 </Engine> 10 </Service> 11 </Server> |
ÆäÖÐ D:\WORKDIR\ServletDemo Ìæ»»ÎªÄãµ¼ÈëµÄÏîĿ·¾¶£¬ÔÙ´ÎÆô¶¯ Tomcat ºóÔÚä¯ÀÀÆ÷´ò¿ª
http://localhost:8080/hello ±ã¿É¿´µ½ Hello World µÄÊä³öÐÅÏ¢¡£
3. Á˽â Servlet ºÍ Filter
ºÃÁË£¬ÎÒÒѾ°Ñ»·¾³´îÆðÀ´ÁË£¬½ÓÏÂÀ´¸Ã¸ÉÂïÄØ£¿
Ç°ÃæµÄ²½ÖèΪµÄÊǴһ¸ö²âÊԵĻ·¾³£¬È»ºóÈÃÄãÁ˽âÒ»¸ö×î»ù±¾µÄ Java Web ÏîÄ¿µÄ½á¹¹¡£
Ò»¸ö×î»ù±¾µÄ Java Web ÏîÄ¿ËùÐèµÄ jar °üÖ»ÐèÒªÒ»¸ö servlet-api.jar £¬Õâ¸ö
jar °üÖеÄÀà´ó²¿·Ö¶¼Êǽӿڣ¬»¹ÓÐһЩ¹¤¾ßÀ࣬¹²ÓÐ 2 ¸ö°ü£¬·Ö±ðÊÇ javax.servlet ºÍ
javax.servlet.http¡£ÎÒ°ÑÕâ¸öjar°ü·Åµ½ÁË webapp Ŀ¼ÍâµÄÒ»¸ö¶ÀÁ¢ packages
Îļþ¼ÐÀÕâÊÇÒòΪËùÓÐµÄ Servlet ÈÝÆ÷¶¼´øÓÐÕâ¸ö°ü£¬ÄãÎÞÐèÔٷŵ½WebÏîÄ¿ÀÎÒÃǷŵ½ÕâÀïÖ»²»¹ýÊDZàÒëµÄÐèÒª£¬ÔËÐÐÊDz»ÐèÒªµÄ¡£Èç¹ûÄãÓ²ÊǰÑ
servlet-api.jar ·Åµ½ webapp/WEB-INF/lib Ŀ¼Ï£¬ÄÇô Tomcat
Æô¶¯Ê±»¹»á±¨Ò»¸ö¾¯¸æÐÅÏ¢¡£
Java Web ÏîÄ¿»¹ÐèÒªÒ»¸ö·Ç³£ÖØÒªµÄÅäÖÃÎļþ web.xml £¬ÔÚÕâ¸öÏîÄ¿ÖÐÒѾ±»ÎÒ×îС»¯ÁË£¬Ö»±£ÁôÓÐÓõÄÐÅÏ¢£º
<?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd"> 4 <web-app> 5 6 <servlet> 7 <servlet-name>hello_world</servlet-name> 8 <servlet-class>demo.HelloServlet</servlet-class> 9 <load-on-startup>1</load-on-startup> 10 </servlet> 11 12 <servlet-mapping> 13 <servlet-name>hello_world</servlet-name> 14 <url-pattern>/hello</url-pattern> 15 </servlet-mapping> 16 17 </web-app> |
ÿ¸ö servlet ¶¼±ØÐëÔÚ web.xml Öж¨Òå²¢½øÐÐ URL Ó³ÉäÅäÖã¬ÔçÆÚ Java ¿ª·¢
Web ÔÚûÓпò¼ÜÂúÌì·ÉµÄʱºò£¬Õâ¸öÎļþ»á¶¨ÒåÁË´óÁ¿µÄ servlet£¬»òÕßÓÐÈËΪÁËʡʸɴàÀ´Ò»¸ö /servlet/*
À´Í¨¹ýÀàÃûÖ±½Óµ÷Óà Servlet¡£
Servlet ¹æ·¶ÀﻹÓÐÁíÍâÒ»¸ö·Ç³£ÖØÒª¶øÇҷdz£ÓÐÓõĽӿÚÄǾÍÊÇ Filter ¹ýÂËÆ÷¡£
ÏÂÃæÊÇÒ»¸ö×î¼òµ¥µÄ Filter ÀàÒÔ¼°ÏàÓ¦µÄ¶¨Òå·½·¨£º
package demo; 2 3 import java.io.IOException; 4 5 import javax.servlet.Filter; 6 import javax.servlet.FilterChain; 7 import javax.servlet.FilterConfig; 8 import javax.servlet.ServletException; 9 import javax.servlet.ServletRequest; 10 import javax.servlet.ServletResponse; 11 import javax.servlet.http.HttpServletRequest; 12 13 public class HelloFilter implements Filter { 14 15 @Override 16 public void init(FilterConfig arg0) throws ServletException { 17 System.out.println("Filter ³õʼ»¯"); 18 } 19 20 @Override 21 public void doFilter(ServletRequest req, ServletResponse res, 22 FilterChain chain) throws IOException, ServletException { 23 HttpServletRequest request = (HttpServletRequest)req; 24 System.out.println("À¹½Ø URI="+request.getRequestURI()); 25 chain.doFilter(req, res); 26 } 27 28 @Override 29 public void destroy() { 30 System.out.println("Filter ½áÊø"); 31 } 32 } |
ÔÚ web.xml ÖеÄÅäÖñØÐë·ÅÔÚ Servlet µÄÇ°Ãæ£º
<?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd"> 4 <web-app> 5 6 <filter> 7 <filter-name>helloFilter</filter-name> 8 <filter-class>demo.HelloFilter</filter-class> 9 </filter> 10 11 <filter-mapping> 12 <filter-name>helloFilter</filter-name> 13 <url-pattern>/*</url-pattern> 14 </filter-mapping> 15 16 <servlet> 17 <servlet-name>hello_world</servlet-name> 18 <servlet-class>demo.HelloServlet</servlet-class> 19 <load-on-startup>1</load-on-startup> 20 </servlet> 21 22 <servlet-mapping> 23 <servlet-name>hello_world</servlet-name> 24 <url-pattern>/hello</url-pattern> 25 </servlet-mapping> 26 27 </web-app> |
·ÃÎÊ http://localhost:8080/hello ʱ¿´¿´ Tomcat ¿ØÖÆÌ¨ÓкÎÊä³öÐÅÏ¢¡£
4. Servlet ºÍ HTTP µÄ¶ÔÓ¦¹ØÏµ
Servlet ÊÇ J2EE ×îÖØÒªµÄÒ»²¿·Ö£¬ÓÐÁË Servlet Äã¾ÍÊÇ J2EE ÁË£¬J2EE µÄÆäËû·½ÃæµÄÄÚÈÝÔñÐè²ÉÓ᣶ø
Servlet ¹æ·¶ÄãÐèÒªÕÆÎյľÍÊÇ servlet ºÍ filter ÕâÁ½Ïî¼¼Êõ¡£¾ø´ó¶àÊý¿ò¼Ü²»ÊÇ»ùÓÚ
servlet ¾ÍÊÇ»ùÓÚ filter£¬Èç¹ûËüÒªÔÚ Servlet ÈÝÆ÷ÉÏÔËÐУ¬¾ÍÓÀÔ¶Ò²ÍÑÀë²»¿ªÕâ¸öÄ£ÐÍ¡£
Ϊʲô Servlet ¹æ·¶»áÓÐÁ½¸ö°ü£¬javax.servlet ºÍ javax.servlet.http
£¬ÔçÏÈÉè¼Æ¸Ã¹æ·¶µÄÈËÈÏΪ Servlet ÊÇÒ»ÖÖ·þÎñÄ£ÐÍ£¬²»Ò»¶¨ÊÇÒÀÀµÄ³ÖÖÍøÂçÐÒéÖ®ÉÏ£¬Òò´Ë¾Í³éÏó³öÁËÒ»¸ö
javax.servlet £¬Í¬Ê±ÔÚÌṩһ¸ö»ùÓÚ HTTP ÐÒéÉϵĽӿÚÀ©Õ¹¡£µ«ÊÇ´Óʵ¼ÊÔËÐÐÕâô¶àÄêÀ´¿´£¬ËƺõûÓз¢ÏÖÓÐÔÚÆäËûÐÒéÉÏʵÏÖµÄ
Servlet ¼¼Êõ¡£
javax.servlet ºÍ javax.servlet.http ÕâÁ½¸ö°ü×ܹ²¼ÓÆðÀ´Ò²²»¹ýÊÇÈýÊ®Ëĸö½Ó¿ÚºÍÀà¡£ÄãÐèҪͨ¹ý
J2EE µÄ JavaDoc Îĵµ Êì֪ÿ¸öÀàºÍ½Ó¿ÚµÄ¾ßÌåÒâ˼¡£ÌرðÊÇÏÂÃæ¼¸¸ö½Ó¿Ú±ØÐëÊì֪ÿ¸ö·½·¨µÄÒâ˼ºÍÓÃ;£º
HttpServlet
ServetConfig
ServletContext
Filter
FilterConfig
FilterChain
RequestDispatcher
HttpServletRequest
HttpServletResponse
HttpSession
һЩ Listenser Àà
ÔÙ´ÎÇ¿µ÷ HttpServletRequest ºÍ HttpServletResponse ÕâÁ½¸ö½Ó¿Ú¸üÓ¦¸ÃÊÇÀÃÊìÓÚÐÄ¡£
Èç¹ûÄã´Ó×ÖÃæÉÏÎÞ·¨Àí½âij¸ö·½·¨µÄÒâ˼£¬Äã¿ÉÒÔÔÚÇ°ÃæÄǸöÏîÄ¿µÄ»ù´¡ÉÏ×öʵÑé¿´¿´ÆäÊä³ö£¬ÔÙ²»ÐÐÄã¿ÉÒÔµ½ÌÖÂÛÇøÌáÎÊ£¬ÕâÑùµÄÌáÎʷdz£Ã÷È·£¬ºÜ¶àÈ˶¼¿ÉÒÔ°ïµ½Äã¡£
ΪʲôÎÒÕâôǿµ÷ HttpServletRequest ºÍ HttpServletResponse ÕâÁ½¸ö½Ó¿Ú£¬ÒòΪ
Web ¿ª·¢ÊÇÀë²»¿ª HTTP ÐÒéµÄ£¬¶ø Servlet ¹æ·¶Æäʵ¾ÍÊÇ¶Ô HTTP ÐÒé×öÃæÏò¶ÔÏóµÄ·â×°£¬HTTPÐÒéÖеÄÇëÇóºÍÏìÓ¦¾ÍÊǶÔÓ¦ÁË
HttpServletRequest ºÍ HttpServletResponse ÕâÁ½¸ö½Ó¿Ú¡£
Äã¿ÉÒÔͨ¹ý HttpServletRequest À´»ñÈ¡ËùÓÐÇëÇóÏà¹ØµÄÐÅÏ¢£¬°üÀ¨ URI¡¢Cookie¡¢Header¡¢ÇëÇó²ÎÊýµÈµÈ£¬±ðÎÞËü·¡£Òò´Ëµ±ÄãʹÓÃij¸ö¿ò¼Üʱ£¬ÄãÏë»ñÈ¡HTTPÇëÇóµÄÏà¹ØÐÅÏ¢£¬Ö»ÒªÄõ½
HttpServletRequest ʵÀý¼´¿É¡£
¶ø HttpServletResponse½Ó¿ÚÊÇÓÃÀ´Éú²ú HTTP »ØÓ¦£¬°üº¬ Cookie¡¢Header
ÒÔ¼°»ØÓ¦µÄÄÚÈݵȵȡ£
5. ÔÙ̸̸ Session
HTTP ÐÒéÀïÊÇûÓйØÓÚ Session »á»°µÄ¶¨Ò壬Session ÊǸ÷ÖÖ±à³ÌÓïÑÔ¸ù¾Ý HTTP
ÐÒéµÄÎÞ״̬ÕâÖÖÌØµã¶ø²úÉúµÄ¡£ÆäʵÏÖÎ޷ǾÍÊÇ·þÎñÆ÷¶ËµÄÒ»¸ö¹þÏ£±í£¬¹þÏ£±íµÄKey¾ÍÊÇ´«µÝ¸øä¯ÀÀÆ÷µÄÃûΪ
jsessionid µÄ Cookie Öµ¡£
µ±ÐèÒª½«Ä³¸öÖµ±£´æµ½ session ʱ£¬ÈÝÆ÷»áÖ´ÐÐÈçϼ¸²½£º
a. »ñÈ¡ jsessionid Öµ£¬Ã»Óеϰ¾ÍÉú³ÉÒ»¸ö£¬Ò²¾ÍÊÇ request.getSession()
Õâ¸ö·½·¨
b. Äõ½µÄ HttpSession ¶ÔÏóʵÀý¾ÍÏ൱ÓÚÒ»¸ö¹þÏ£±í£¬Äã¿ÉÒÔÍù¹þÏ£±íÀï´æ·ÅÊý¾Ý(setAttribute)
c. ÄãÒ²¿ÉÒÔͨ¹ý getAttribute À´»ñȡij¸öÖµ
¶øÕâ¸öÃûΪ jsessionid µÄ Cookie ÔÚä¯ÀÀÆ÷¹Ø±Õʱ»á×Ô¶¯É¾³ý¡£°Ñ Cookie µÄ MaxAge
ÖµÉèΪ -1 ¾ÍÄÜ´ïµ½ä¯ÀÀÆ÷¹Ø±Õ×Ô¶¯É¾³ýµÄЧ¹û¡£
6. ¹ØÓÚ JSP
Ê×ÏÈÎÒÒѾ²»Óà JSP ºÜ¶àÄêÁË£¬ÏÖÔÚÒ»Ö±ÊÇʹÓà Velocity Ä£°åÒýÇæ¡£
ÈκÎÒ»¸ö JSP Ò³ÃæÔÚÖ´ÐеÄʱºò¶¼»á±àÒë³ÉÒ»¸ö Servlet ÀàÎļþ£¬Èç¹ûÊÇ
Tomcat µÄ»°£¬ÕâЩÉú³ÉµÄ java Îļþ»á·ÅÖÃÔÚ {TOMCAT}/work Ŀ¼Ï¶ÔÓ¦ÏîÄ¿µÄ×ÓĿ¼ÖУ¬ÀýÈç
Tomcat Éú³ÉµÄÀàÎļþÈçÏ£º
package org.apache.jsp; 2 3 import javax.servlet.*; 4 import javax.servlet.http.*; 5 import javax.servlet.jsp.*; 6 import java.util.*; 7 8 public final class test_jsp extends org.apache.jasper.runtime.HttpJspBase 9 implements org.apache.jasper.runtime.JspSourceDependent { 10 11 private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory(); 12 13 private static java.util.List<String> _jspx_dependants; 14 15 private javax.el.ExpressionFactory _el_expressionfactory; 16 private org.apache.tomcat.InstanceManager _jsp_instancemanager; 17 18 public java.util.List<String> getDependants() { 19 return _jspx_dependants; 20 } 21 22 public void _jspInit() { 23 _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory(); 24 _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig()); 25 } 26 27 public void _jspDestroy() { 28 } 29 30 public void _jspService(final HttpServletRequest request, final HttpServletResponse response) 31 throws java.io.IOException, ServletException { 32 33 final PageContext pageContext; 34 HttpSession session = null; 35 final ServletContext application; 36 final ServletConfig config; 37 JspWriter out = null; 38 final Object page = this; 39 JspWriter _jspx_out = null; 40 PageContext _jspx_page_context = null; 41 42 43 try { 44 response.setContentType("text/html;charset=utf-8"); 45 pageContext = _jspxFactory.getPageContext(this, request, response, 46 null, true, 8192, true); 47 _jspx_page_context = pageContext; 48 application = pageContext.getServletContext(); 49 config = pageContext.getServletConfig(); 50 session = pageContext.getSession(); 51 out = pageContext.getOut(); 52 _jspx_out = out; 53 54 out.write("\r\n"); 55 out.write("<html>\r\n"); 56 out.write(" <title>Test</title>\r\n"); 57 out.write(" <style>\r\n"); 58 out.write(" </style> \r\n"); 59 out.write(" <body>\r\n"); 60 out.write("<h1>Test Demo (oschina)</h1>\r\n"); 61 out.write("<table cellspacing=\"1\" cellpadding=\"5\">\r\n"); 62 63 Enumeration Names=request.getHeaderNames(); 64 while(Names.hasMoreElements()) 65 {String name=(String)Names.nextElement(); 66 String value=request.getHeader(name); 67 68 out.write("\r\n"); 69 out.write(" <tr>\r\n"); 70 out.write(" <td>"); 71 out.print(name); 72 out.write("</td>\r\n"); 73 out.write(" <td>"); 74 out.print(value); 75 out.write("</td>\r\n"); 76 out.write(" \r\n"); 77 out.write(" </tr>\r\n"); 78 out.write(" "); 79 80 } 81 82 out.write("\r\n"); 83 out.write("</table>\r\n"); 84 out.write(" </body>\r\n"); 85 out.write("</html>"); 86 } catch (Throwable t) { 87 if (!(t instanceof SkipPageException)){ 88 out = _jspx_out; 89 if (out != null && out.getBufferSize() != 0) 90 try { out.clearBuffer(); } catch (java.io.IOException e) {} 91 if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); 92 } 93 } finally { 94 _jspxFactory.releasePageContext(_jspx_page_context); 95 } 96 } 97 } |
ÔÚ servlet ÖÐÓÐÒ»¸ö°ü javax.servlet.jsp ÊǸú JSP Ïà¹ØµÄһЩ½Ó¿Ú¹æ·¶¶¨Òå¡£JSP
±È Servlet ·½±ãµÄµØ·½ÔÚÓÚ¿ÉÖ±½ÓÐÞ¸ÄÁ¢¼´ÉúЧ£¬²»Ïñ Servlet Ð޸ĺó±ØÐëÖØÆôÈÝÆ÷²ÅÄÜÉúЧ¡£
Òò´Ë JSP ÊʺÏÓÃÀ´×öÊÓͼ£¬¶ø Servlet ÔòÊʺÏ×ö¿ØÖƲ㡣
7. ×ܽá
ÂÞÁ¨ÂÞàÂÒ»´ó¶Ñ£¬¹éÄÉһϾÍÊÇÏÂÃæ¼¸µã£º
ÊìÖª Servlet ¹æ·¶Ö®Ç°£¬Ç벻ҪѧϰÈκοò¼Ü
ʹÓÃ×î¼òµ¥µÄ¹¤¾ß£¬²»ÒªÈκÎÏòµ¼ºÍ¿ÉÊÓ»¯
ÊìÖª HTTP ÐÒé
µÈÄãÕæµÄÕÆÎÕÁË Servlet ¹æ·¶ÔÙÈ¥¿´¿ò¼Ü£¬±ã»á¾õµÃһЩ¶¼Ð¡²Ë¡£×ÜÖ®Ò»µã£º²»Òª±»¿ò¼ÜÇ£×űÇ×Ó×ߣ¬¿ò¼ÜÊÇÄãµÄ¹¤¾ß£¬ËüÓ¦¸ÃÌýÄãµÄ£¡
|