Servlet API å¾ä¹
以å就已æ为ä¼ä¸åºç¨å¼åçåºç³ï¼è Servlet è¿æ»¤å¨åæ¯å¯¹ J2EE 家æçç¸å¯¹è¾æ°çè¡¥å
ãå¨ J2EE æ¢ç´¢è
ç³»åæç« çæåä¸ç¯ä¸ï¼ä½è
Kyle Gabhart å°åæ¨ä»ç» Servlet è¿æ»¤å¨ä½ç³»ç»æï¼å®ä¹è¿æ»¤å¨ç许å¤åºç¨ï¼å¹¶æ导æ¨å®æå
¸åè¿æ»¤å¨å®ç°çä¸ä¸ªæ¥éª¤ãä»è¿ä¼éé² bean çä¸äºæ¿å¨äººå¿çååï¼é¢è®¡ååå¸ç Java Servlet 2.4 è§èä¼å¼å
¥è¿äºååã
Servlet è¿æ»¤å¨æ¯å¯æå
¥ç Web ç»ä»¶ï¼å®å
许æ们å®ç° Web åºç¨ç¨åºä¸çé¢å¤çååæå¤çé»è¾ãè¿æ»¤å¨æ¯æ servlet å JSP 页é¢çåºæ¬è¯·æ±å¤çåè½ï¼æ¯å¦æ¥å¿è®°å½ãæ§è½ãå®å
¨ãä¼è¯å¤çãXSLT 转æ¢ï¼ççã è¿æ»¤å¨æåæ¯é Java Servlet 2.3 è§èåå¸çï¼æè¿å®ç¨¿ç 2.4 è§è对å®è¿è¡äºé大å级ãå¨è¿ J2EE æ¢ç´¢è
ç³»åæç« çæåä¸ç¯ä¸ï¼æå°åæ¨ä»ç» Servlet è¿æ»¤å¨çåºç¡ç¥è¯ ââ æ¯å¦æ»ä½çä½ç³»ç»æ设计ãå®ç°ç»èï¼ä»¥åå¨ J2EE Web åºç¨ç¨åºä¸çå
¸ååºç¨ï¼è¿ä¼æ¶åä¸äºé¢è®¡ææ°ç Servlet è§èå°ä¼æä¾çæ©å±åè½ã
Servlet è¿æ»¤å¨æ¯ä»ä¹ï¼
Servlet è¿æ»¤å¨æ¯å°åç Web ç»ä»¶ï¼å®ä»¬æ¦æªè¯·æ±åååºï¼ä»¥ä¾¿æ¥çãæåæ以æç§æ¹å¼æä½æ£å¨å®¢æ·æºåæå¡å¨ä¹é´äº¤æ¢çæ°æ®ãè¿æ»¤å¨æ¯é常å°è£
äºä¸äºåè½ç Web ç»ä»¶ï¼è¿äºåè½è½ç¶å¾éè¦ï¼ä½æ¯å¯¹äºå¤ç客æ·æºè¯·æ±æåéååºæ¥è¯´ä¸æ¯å³å®æ§çãå
¸åçä¾åå
æ¬è®°å½å
³äºè¯·æ±åååºçæ°æ®ãå¤çå®å
¨åè®®ã管çä¼è¯å±æ§ï¼ ççãè¿æ»¤å¨æä¾ä¸ç§é¢å对象ç模ååæºå¶ï¼ç¨ä»¥å°å
Œ
±ä»»å¡å°è£
å°å¯æå
¥çç»ä»¶ä¸ï¼è¿äºç»ä»¶éè¿ä¸ä¸ªé
ç½®æ件æ¥å£°æï¼å¹¶å¨æå°å¤çã
Servlet è¿æ»¤å¨ä¸ç»åäºè®¸å¤å
ç´ ï¼ä»è使å¾è¿æ»¤å¨æ为ç¬ç¹ã强大å模ååç Web ç»ä»¶ãä¹å°±æ¯è¯´ï¼Servlet è¿æ»¤å¨æ¯ï¼
声æå¼çï¼è¿æ»¤å¨éè¿ Web é¨ç½²æ述符ï¼web.xmlï¼ä¸ç XML æ ç¾æ¥å£°æãè¿æ ·å
许添å åå é¤è¿æ»¤å¨ï¼èæ éæ¹å¨ä»»ä½åºç¨ç¨åºä»£ç æ JSP 页é¢ã
å¨æçï¼è¿æ»¤å¨å¨è¿è¡æ¶ç± Servlet 容å¨è°ç¨æ¥æ¦æªåå¤ç请æ±åååºã
çµæ´»çï¼è¿æ»¤å¨å¨ Web å¤çç¯å¢ä¸çåºç¨å¾å¹¿æ³ï¼æ¶µç诸å¦æ¥å¿è®°å½åå®å
¨ç许å¤æå
Œ
±çè¾
å©ä»»å¡ãè¿æ»¤å¨è¿æ¯çµæ´»çï¼å 为å®ä»¬å¯ç¨äºå¯¹æ¥èªå®¢æ·æºçç´æ¥è°ç¨æ§è¡é¢å¤çååæå¤ çï¼ä»¥åå¤çå¨é²ç«å¢ä¹åç Web ç»ä»¶ä¹é´è°åº¦ç请æ±ãæåï¼å¯ä»¥å°è¿æ»¤å¨é¾æ¥èµ·æ¥ä»¥æä¾å¿
éçåè½ã
模ååçï¼éè¿æåºç¨ç¨åºå¤çé»è¾å°è£
å°å个类æ件ä¸ï¼è¿æ»¤å¨ä»èå®ä¹äºå¯å®¹æå°ä»è¯·æ±/ååºé¾ä¸æ·»å æå é¤ç模åååå
ã
å¯ç§»æ¤çï¼ä¸ Java å¹³å°çå
¶ä»è®¸å¤æ¹é¢ä¸æ ·ï¼Servlet è¿æ»¤å¨æ¯è·¨å¹³å°å跨容å¨å¯ç§»æ¤çï¼ä»èè¿ä¸æ¥æ¯æäº Servler è¿æ»¤å¨ç模åååå¯éç¨æ¬è´¨ã
å¯éç¨çï¼å½åäºè¿æ»¤å¨å®ç°ç±»ç模åå设计ï¼ä»¥å声æå¼çè¿æ»¤å¨é
ç½®æ¹å¼ï¼è¿æ»¤å¨å¯ä»¥å®¹æå°è·¨è¶ä¸åç项ç®ååºç¨ç¨åºä½¿ç¨ã
éæçï¼å¨è¯·æ±/ååºé¾ä¸å
æ¬è¿æ»¤å¨ï¼è¿ç§è®¾è®¡æ¯ä¸ºäºè¡¥å
ï¼èä¸æ¯ä»¥ä»»ä½æ¹å¼æ¿ä»£ï¼servlet æ JSP 页é¢æä¾çæ ¸å¿å¤çãå èï¼è¿æ»¤å¨å¯ä»¥æ ¹æ®éè¦æ·»å æå é¤ï¼èä¸ä¼ç ´å servlet æ JSP 页é¢ã
æ以 Servlet è¿æ»¤å¨æ¯éè¿ä¸ä¸ªé
ç½®æ件æ¥çµæ´»å£°æç模ååå¯éç¨ç»ä»¶ãè¿æ»¤å¨å¨æå°å¤çä¼ å
¥ç请æ±åä¼ åºçååºï¼å¹¶ä¸æ éä¿®æ¹åºç¨ç¨åºä»£ç å°±å¯ä»¥éæå°æ·»å æå é¤å® 们ãæåï¼è¿æ»¤å¨ç¬ç«äºä»»ä½å¹³å°æè
Servlet 容å¨ï¼ä»èå
许å°å®ä»¬å®¹æå°é¨ç½²å°ä»»ä½ç¸å®¹ç J2EE ç¯å¢ä¸ã
å¨æ¥ä¸æ¥çå å°èä¸ï¼æ们å°è¿ä¸æ¥èå¯ Servlet è¿æ»¤å¨æºå¶çæ»ä½è®¾è®¡ï¼ä»¥åå®ç°ãé
ç½®åé¨ç½²è¿æ»¤å¨ææ¶åçæ¥éª¤ãæ们è¿å°æ¢è®¨ Servlet è¿æ»¤å¨çä¸äºå®é
åºç¨ï¼æåç®è¦èå¯ä¸ä¸æ¨¡å-è§å¾-æ§å¶å¨ï¼MVCï¼ä½ç³»ç»æä¸å
å«ç Servlet è¿æ»¤å¨ï¼ä»èç»ææ¬æç讨论ã
Servlet è¿æ»¤å¨ä½ç³»ç»æ
æ£å¦å
¶å称ææ示çï¼Servlet è¿æ»¤å¨ ç¨äºæ¦æªä¼ å
¥ç请æ±å/æä¼ åºçååºï¼å¹¶çè§ãä¿®æ¹æ以æç§æ¹å¼å¤çæ£å¨éè¿çæ°æ®æµãè¿æ»¤å¨æ¯èªå
å«ã模ååçç»ä»¶ï¼å¯ä»¥å°å®ä»¬æ·»å å°è¯·æ±/ååºé¾ä¸ï¼ æè
å¨æ éå½±ååºç¨ç¨åºä¸å
¶ä» Web ç»ä»¶çæ
åµä¸å é¤å®ä»¬ãè¿æ»¤å¨ä»
åªæ¯æ¹å¨è¯·æ±åååºçè¿è¡æ¶å¤çï¼å èä¸åºè¯¥å°å®ä»¬ç´æ¥åµå
¥ Web åºç¨ç¨åºæ¡æ¶ï¼é¤éæ¯éè¿ Servlet API ä¸è¯å¥½å®ä¹çæ åæ¥å£æ¥å®ç°ã
Web èµæºå¯ä»¥é
置为没æè¿æ»¤å¨ä¸ä¹å
³èï¼è¿æ¯é»è®¤æ
åµï¼ãä¸å个è¿æ»¤å¨å
³èï¼è¿æ¯å
¸åæ
åµï¼ï¼çè³æ¯ä¸ä¸ä¸ªè¿æ»¤å¨é¾ç¸å
³èãé£ä¹è¿æ»¤å¨ç©¶ç«åä»ä¹å¢ï¼ å servlet ä¸æ ·ï¼å®æ¥å请æ±å¹¶ååºå¯¹è±¡ãç¶åè¿æ»¤å¨ä¼æ£æ¥è¯·æ±å¯¹è±¡ï¼å¹¶å³å®å°è¯¥è¯·æ±è½¬åç»é¾ä¸çä¸ä¸ä¸ªç»ä»¶ï¼æè
ä¸æ¢è¯¥è¯·æ±å¹¶ç´æ¥å客æ·æºååä¸ä¸ªååºãå¦æ请æ±è¢« 转åäºï¼å®å°è¢«ä¼ éç»é¾ä¸çä¸ä¸ä¸ªèµæºï¼å¦ä¸ä¸ªè¿æ»¤å¨ãservlet æ JSP 页é¢ï¼ãå¨è¿ä¸ªè¯·æ±è®¾æ³éè¿è¿æ»¤å¨é¾å¹¶è¢«æå¡å¨å¤çä¹åï¼ä¸ä¸ªååºå°ä»¥ç¸åç顺åºéè¿è¯¥é¾åéåå»ãè¿æ ·å°±ç»æ¯ä¸ªè¿æ»¤å¨é½æä¾äºæ ¹æ®éè¦å¤çååºå¯¹è±¡çæº ä¼ã
å½è¿æ»¤å¨å¨ Servlet 2.3 è§èä¸é¦æ¬¡å¼å
¥æ¶ï¼å®ä»¬åªè½è¿æ»¤ Web 客æ·æºå客æ·æºæ访é®çæå® Web èµæºä¹é´çå
容ãå¦æ该èµæºç¶åå°è¯·æ±è°åº¦ç»å
¶ä» Web èµæºï¼é£å°±ä¸è½åå¹åå§æçä»»ä½è¯·æ±åºç¨è¿æ»¤å¨ã2.4 è§èæ¶é¤äºè¿ä¸ªéå¶ãServlet è¿æ»¤å¨ç°å¨å¯ä»¥åºç¨äº J2EE Web ç¯å¢ä¸åå¨è¯·æ±åååºå¯¹è±¡çä»»ä½å°æ¹ãå æ¤ï¼Servlet è¿æ»¤å¨å¯ä»¥åºç¨å¨å®¢æ·æºå servlet ä¹é´ãservlet å servlet æ JSP 页é¢ä¹é´ï¼ä»¥åæå
æ¬çæ¯ä¸ª JSP 页é¢ä¹é´ãè¿ææ¯ææ称ç强大è½ååçµæ´»æ§ï¼
å®ç°ä¸ä¸ª Servlet è¿æ»¤å¨
ä»ä»¬è¯´â好äºå¤ç£¨âãæä¸ç¥éâä»ä»¬âæçæ¯è°ï¼æè
è¿å¥å¤èçè°è¯ç©¶ç«æå¤çå®ï¼ä½æ¯å®ç°ä¸ä¸ª Servlet è¿æ»¤å¨çç¡®è¦ç»åä¸ä¸ªæ¥éª¤ãé¦å
è¦ç¼åè¿æ»¤å¨å®ç°ç±»çç¨åºï¼ç¶åè¦æ该è¿æ»¤å¨æ·»å å° Web åºç¨ç¨åºä¸ï¼éè¿å¨ Web é¨ç½²æ述符 /web.xml ä¸å£°æå®ï¼ï¼æåè¦æè¿æ»¤å¨ä¸åºç¨ç¨åºä¸èµ·æå
并é¨ç½²å®ãæ们å°è¯¦ç»ç 究è¿å
¶ä¸çæ¯ä¸ªæ¥éª¤ã
1. ç¼åå®ç°ç±»çç¨åº
è¿æ»¤å¨ API å
å« 3 个ç®åçæ¥å£ï¼åæ¯æ°å 3ï¼ï¼ï¼å®ä»¬æ´æ´å°åµå¥å¨ javax.servlet å
ä¸ãé£ 3 个æ¥å£åå«æ¯ FilterãFilterChain å FilterConfigãä»ç¼ç¨çè§åº¦çï¼è¿æ»¤å¨ç±»å°å®ç° Filter æ¥å£ï¼ç¶å使ç¨è¿ä¸ªè¿æ»¤å¨ç±»ä¸ç FilterChain å FilterConfig æ¥å£ã该è¿æ»¤å¨ç±»çä¸ä¸ªå¼ç¨å°ä¼ éç» FilterChain 对象ï¼ä»¥å
许è¿æ»¤å¨ææ§å¶æä¼ éç»é¾ä¸çä¸ä¸ä¸ªèµæºãFilterConfig 对象å°ç±å®¹å¨æä¾ç»è¿æ»¤å¨ï¼ä»¥å
许访é®è¯¥è¿æ»¤å¨çåå§åæ°æ®ã
为äºä¸æ们çä¸æ¥æ¨¡å¼ä¿æä¸è´ï¼è¿æ»¤å¨å¿
é¡»è¿ç¨ä¸ä¸ªæ¹æ³ï¼ä»¥ä¾¿å®å
¨å®ç° Filter æ¥å£ï¼
init()ï¼è¿ä¸ªæ¹æ³å¨å®¹å¨å®ä¾åè¿æ»¤å¨æ¶è¢«è°ç¨ï¼å®ä¸»è¦è®¾è®¡ç¨äºä½¿è¿æ»¤å¨ä¸ºå¤çååå¤ã该æ¹æ³æ¥åä¸ä¸ª FilterConfig ç±»åç对象ä½ä¸ºè¾å
¥ã
doFilter()ï¼ä¸ servlet æ¥æä¸ä¸ª service() æ¹æ³ï¼è¿ä¸ªæ¹æ³åè°ç¨ doPost() æè
doGet()ï¼æ¥å¤ç请æ±ä¸æ ·ï¼è¿æ»¤å¨æ¥æå个ç¨äºå¤ç请æ±åååºçæ¹æ³ââdoFilter()ãè¿ä¸ªæ¹æ³æ¥åä¸ä¸ªè¾å
¥åæ°ï¼ä¸ä¸ª ServletRequestãresponse åä¸ä¸ª FilterChain 对象ã
destroy()ï¼æ£å¦æ¨æ³åçé£æ ·ï¼è¿ä¸ªæ¹æ³æ§è¡ä»»ä½æ¸
çæä½ï¼è¿äºæä½å¯è½éè¦å¨èªå¨åå¾æ¶éä¹åè¿è¡ãå±ç¤ºäºä¸ä¸ªé常ç®åçè¿æ»¤å¨ï¼å®è·è¸ªæ»¡è¶³ä¸ä¸ªå®¢æ·æºç Web 请æ±æè±ç大è´æ¶é´ã
ä¸ä¸ªè¿æ»¤å¨ç±»å®ç°
import javax.servlet.*;
import java.util.*;
import java.io.*;
public class TimeTrackFilter implements Filter {
private FilterConfig filterConfig = null;
public void init(FilterConfig filterConfig)
throws ServletException {
this.filterConfig = filterConfig;
}
public void destroy() {
this.filterConfig = null;
}
public void doFilter( ServletRequest request,
ServletResponse response, FilterChain chain )
throws IOException, ServletException {
Date startTime, endTime;
double totalTime;
startTime = new Date();
// Forward the request to the next resource in the chain
chain.doFilter(request, wrapper);
// -- Process the response -- \\
// Calculate the difference between the start time and end time
endTime = new Date();
totalTime = endTime.getTime() - startTime.getTime();
totalTime = totalTime / 1000; //Convert from milliseconds to seconds
StringWriter sw = new StringWriter();
PrintWriter writer = new PrintWriter(sw);
writer.println();
writer.println("===============");
writer.println("Total elapsed time is: " + totalTime + " seconds." );
writer.println("===============");
// Log the resulting string
writer.flush();
filterConfig.getServletContext().
log(sw.getBuffer().toString());
}
}
å¤å¶ä»£ç
è¿ä¸ªè¿æ»¤å¨ççå½å¨æå¾ç®åï¼ä¸ç®¡ææ ·ï¼æ们è¿æ¯ç 究ä¸ä¸å®å§ï¼
åå§å
å½å®¹å¨ç¬¬ä¸æ¬¡å 载该è¿æ»¤å¨æ¶ï¼init() æ¹æ³å°è¢«è°ç¨ã该类å¨è¿ä¸ªæ¹æ³ä¸å
å«äºä¸ä¸ªæå FilterConfig 对象çå¼ç¨ãæ们çè¿æ»¤å¨å®é
ä¸å¹¶ä¸éè¦è¿æ ·åï¼å 为å
¶ä¸æ²¡æ使ç¨åå§åä¿¡æ¯ï¼è¿éåªæ¯åºäºæ¼ç¤ºçç®çã
è¿æ»¤
è¿æ»¤å¨ç大å¤æ°æ¶é´é½æ¶èå¨è¿éãdoFilter() æ¹æ³è¢«å®¹å¨è°ç¨ï¼åæ¶ä¼ å
¥åå«æåè¿ä¸ªè¯·æ±/ååºé¾ä¸ç ServletRequestãServletResponse å FilterChain 对象çå¼ç¨ãç¶åè¿æ»¤å¨å°±ææºä¼å¤ç请æ±ï¼å°å¤çä»»å¡ä¼ éç»é¾ä¸çä¸ä¸ä¸ªèµæºï¼éè¿è°ç¨ FilterChain 对象å¼ç¨ä¸ç doFilter()æ¹æ³ï¼ï¼ä¹åå¨å¤çæ§å¶æè¿å该è¿æ»¤å¨æ¶å¤çååºã
ææ
容å¨ç´§è·å¨åå¾æ¶éä¹åè°ç¨ destroy() æ¹æ³ï¼ä»¥ä¾¿è½å¤æ§è¡ä»»ä½å¿
éçæ¸
ç代ç ã
2. é
ç½® Servlet è¿æ»¤å¨
è¿æ»¤å¨éè¿ web.xml æ件ä¸ç两个 XML æ ç¾æ¥å£°æã<filter> æ ç¾å®ä¹è¿æ»¤å¨çå称ï¼å¹¶ä¸å£°æå®ç°ç±»å init() åæ°ã<filter-mapping> æ ç¾å°è¿æ»¤å¨ä¸ servlet æ URL 模å¼ç¸å
³èã
æèªä¸ä¸ª web.xml æ件ï¼å®å±ç¤ºäºå¦ä½å£°æè¿æ»¤å¨çå
å«å
³ç³»ï¼
å¨ web.xml ä¸å£°æä¸ä¸ªè¿æ»¤å¨
<filter>
<filter-name>Page Request Timer</filter-name>
<filter-class>TimeTrackFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Page Request Timer</filter-name>
<servlet-name>Main Servlet</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>Main Servlet</servlet-name>
<servlet-class>MainServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Main Servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
å¤å¶ä»£ç
ä¸ é¢ç代ç 示ä¾å£°æäºä¸ä¸ªè¿æ»¤å¨ï¼"Page Request Timer"ï¼ï¼å¹¶æå®æ å°å°ä¸ä¸ª servletï¼"Main Servlet"ï¼ãç¶å为该 servlet å®ä¹äºä¸ä¸ªæ å°ï¼ä»¥ä¾¿ææ¯ä¸ªè¯·æ±ï¼ç±éé
符æå®ï¼é½åéå°è¯¥ servletãè¿æ¯æ§å¶å¨ç»ä»¶çå
¸åæ å°å£°æãæ¨åºè¯¥æ³¨æè¿äºå£°æç顺åºï¼å 为åä¸ä¸è½è离è¿äºå
ç´ ç顺åºã
3. é¨ç½² Servlet è¿æ»¤å¨
äºå®ä¸ï¼ä¸ Web åºç¨ç¨åºä¸èµ·é¨ç½²è¿æ»¤å¨ç»å¯¹ä¸æ¶åä»»ä½å¤ææ§ãåªéæè¿æ»¤å¨ç±»åå
¶ä» Web ç»ä»¶ç±»å
æ¬å¨ä¸èµ·ï¼å¹¶åæ¨é常æåçé£æ ·æ web.xml æ件ï¼è¿åè¿æ»¤å¨å®ä¹åè¿æ»¤å¨æ å°å£°æï¼æ¾è¿ Web åºç¨ç¨åºç»æä¸ï¼servlet 容å¨å°å¤çä¹åçå
¶ä»ææäºæ
ã
è¿æ»¤å¨ç许å¤åºç¨
æ¨å¨ J2EE Web åºç¨ç¨åºä¸å©ç¨è¿æ»¤å¨çè½åï¼ä»
åå°æ¨èªå·±çåé æ§ååºç¨ç¨åºè®¾è®¡æ¬é¢çéå¶ãå¨éå使ç¨è£
饰è¿æ»¤å¨æ¨¡å¼æè
æ¦æªå¨æ¨¡å¼çä»»ä½å°æ¹ï¼æ¨é½å¯ä»¥ä½¿ç¨è¿æ»¤å¨ãè¿æ»¤å¨çä¸äºææ®éçåºç¨å¦ä¸ï¼
å è½½ï¼å¯¹äºå°è¾¾ç³»ç»çææ请æ±ï¼è¿æ»¤å¨æ¶é诸å¦æµè§å¨ç±»åãä¸å¤©ä¸çæ¶é´ã转å URL çç¸å
³ä¿¡æ¯ï¼å¹¶å¯¹å®ä»¬è¿è¡æ¥å¿è®°å½ã
æ§è½ï¼è¿æ»¤å¨å¨å
容éè¿çº¿è·¯ä¼ æ¥å¹¶å¨å°è¾¾ servlet å JSP 页é¢ä¹å解å缩该å
容ï¼ç¶åååå¾ååºå
容ï¼å¹¶å¨å°ååºå
容åéå°å®¢æ·æºæºå¨ä¹åå°å®è½¬æ¢ä¸ºåç¼©æ ¼å¼ã
å®å
¨ï¼è¿æ»¤å¨å¤ç身份éªè¯ä»¤çç管çï¼å¹¶éå½å°éå¶å®å
¨èµæºç访é®ï¼æ示ç¨æ·è¿è¡èº«ä»½éªè¯å/æå°ä»ä»¬æå¼å°ç¬¬ä¸æ¹è¿è¡èº«ä»½éªè¯ãè¿æ»¤å¨çè³è½å¤ç®¡çè®¿é® æ§å¶å表ï¼Access Control Listï¼ACLï¼ï¼ä»¥ä¾¿é¤äºèº«ä»½éªè¯ä¹å¤è¿æä¾æææºå¶ãå°å®å
¨é»è¾æ¾å¨è¿æ»¤å¨ä¸ï¼èä¸æ¯æ¾å¨ servlet æè
JSP 页é¢ä¸ï¼è¿æ ·æä¾äºå·¨å¤§ççµæ´»æ§ãå¨å¼åæé´ï¼è¿æ»¤å¨å¯ä»¥å
³éï¼å¨ web.xml æ件ä¸æ³¨éæï¼ãå¨ç产åºç¨ä¸ï¼è¿æ»¤å¨åå¯ä»¥å次å¯ç¨ãæ¤å¤è¿å¯ä»¥æ·»å å¤ä¸ªè¿æ»¤å¨ï¼ä»¥ä¾¿æ ¹æ®éè¦æé«å®å
¨ãå å¯åä¸å¯æç»çæå¡çç级ã
ä¼è¯å¤çï¼å° servlet å JSP 页é¢ä¸ä¼è¯å¤ç代ç æ··æå¨ä¸èµ·å¯è½ä¼å¸¦æ¥ç¸å½å¤§ç麻ç¦ã使ç¨è¿æ»¤å¨æ¥ç®¡çä¼è¯å¯ä»¥è®© Web 页é¢éä¸ç²¾åèèå
容æ¾ç¤ºåå§æå¤çï¼èä¸å¿
æ
å¿ä¼è¯ç®¡ççç»èã
XSLT 转æ¢ï¼ä¸ç®¡æ¯ä½¿ç¨ç§»å¨å®¢æ·ç«¯è¿æ¯ä½¿ç¨åºäº XML ç Web æå¡ï¼æ éæé»è¾åµå
¥åºç¨ç¨åºå°±å¨ XML è¯æ³ä¹é´æ§è¡è½¬æ¢çè½åé½ç»å¯¹æ¯æ ä»·çã
使è¿æ»¤å¨éåº MVC ä½ç³»ç»æ
模å-è§å¾-æ§å¶å¨ï¼Model-View-Controllerï¼MVCï¼ä½ç³»ç»ææ¯ä¸ä¸ªææç设计ï¼å®ç°å¨å·²ä½ä¸ºæéè¦ç设计æ¹æ³å¦ï¼æ´åå°äºè¯¸å¦ Jakarta Struts å Turbine ç大å¤æ°æµè¡ç Web åºç¨æ¡æ¶ä¸ãè¿æ»¤å¨æ¨å¨æ©å
MVC ä½ç³»ç»æç请æ±/ååºå¤çæµãä¸ç®¡è¯·æ±/ååºåçå¨å®¢æ·æºåæå¡å¨ä¹é´ï¼è¿æ¯åçå¨æå¡å¨ä¸çå
¶ä»ç»ä»¶ä¹é´ï¼è¿æ»¤å¨å¨å¤çæµä¸çåºç¨é½æ¯ç¸åçãä» MVC çè§ç¹çï¼è°åº¦å¨ç»ä»¶ï¼å®æè
å
æ¬å¨æ§å¶å¨ç»ä»¶ä¸ï¼æè
é
åæ§å¶å¨ç»ä»¶å·¥ä½ï¼æ请æ±è½¬åç»éå½çåºç¨ç¨åºç»ä»¶ä»¥è¿è¡å¤çãè¿ä½¿å¾æ§å¶å¨å±æ为å
æ¬ Servlet è¿æ»¤å¨çæä½³ä½ç½®ãéè¿æè¿æ»¤å¨æ¾å¨æ§å¶å¨ç»ä»¶æ¬èº«çåé¢ï¼è¿æ»¤å¨å¯ä»¥åºç¨äºææ请æ±ï¼æè
éè¿å°å®æ¾å¨æ§å¶å¨/è°åº¦å¨ä¸æ¨¡ååæ§å¶å¨ä¹é´ï¼å®å¯ä»¥åºç¨äº åç¬ç Web ç»ä»¶ã
MVC ä½ç³»ç»æå¹¿ä¸ºä¼ æï¼å¹¶å
·æè¯å¥½çææ¡£ã请éè¿ åèèµæ ä¸çé¾æ¥äºè§£å
³äº MVC å MVC ä½ç³»ç»æä¸ç Servlet å®ç°çæ´å¤ä¿¡æ¯ã
ç»æè¯
è½ç¶è¿æ»¤å¨æåºç°å å¹´æ¶é´ï¼ä½å®ä»¬æ¬èº«å·²ä½ä¸ºä¸ä¸ªå
³é®ç»ä»¶åµå
¥å°äºææææ·çãé¢å对象ç J2EE Web åºç¨ç¨åºä¸ãæ¬æåæ¨ä»ç»äº Servlet è¿æ»¤å¨ç使ç¨ãæ¬æ讨论äºè¿æ»¤å¨çé«çº§è®¾è®¡ï¼æ¯è¾äºå½åè§èï¼2.4ï¼å以åï¼2.3ï¼ç模åï¼è®²è¿°äºå®ç°è¿æ»¤å¨ææ¶åç精确æ¥éª¤ï¼ä»¥åå¦ä½å¨ Web åºç¨ç¨åºä¸å£°æè¿æ»¤å¨ï¼ç¶åä¸åºç¨ç¨åºä¸èµ·é¨ç½²å®ãæ¬æè¿éè¿°äº Servlet è¿æ»¤å¨çä¸äºææ®éåºç¨ï¼å¹¶æå°äºè¿æ»¤å¨å¦ä½éåºä¼ ç»ç MVC ä½ç³»ç»æã
è¿æ¯ J2EE æ¢ç´¢è
ç³»åçæåä¸ç¯æç« ãæ们å¨å¹´åéè¿ç²ç¥ç 究 Enterprise JavaBean ç»ä»¶æ¥å¼å§æ们çæ
ç¨ï¼å¹¶æå°äºä½æ¶ä½¿ç¨è¿äºç»ä»¶æçæ£ææä¹ï¼ä»¥åä½æ¶è¿äºç»ä»¶æä¼åå¾å¤§æå°ç¨çé®é¢ãç¶åæ们å°ç®å
转åäº Web å±ï¼ç»å¶äºä¸æ¡éè¿ ServletãJSP 页é¢ãJavaBean ææ¯ä»¥å Java Servlet API ä¸çæ æ°éæ©ååè½çè·¯å¾ãå¨è¿ä¸ªç³»åæç« ä¸ä¸æ¨ä¸èµ·è°è¦è·æ¶çæ¯ä¸ä»¶å¿«ä¹çäºæ
ãæ享åçç¼åè¿ä¸ªç³»åæç« çä¹è¶£ï¼å¹¶ä¸æä»å¤§å®¶çåé¦ä¸ç¥éï¼è¿å¯¹æ¨ä¹ æ¯ä¸ä¸ªå¾æä»·å¼çè¿ç¨ã
Java è¿æ»¤å¨çä½ç¨
温馨提示:答案为网友推荐,仅供参考