# JavaEE é¢ç»
## 1. Servlet
### 1.1. ä»ä¹æ¯ Servlet
Servletï¼Server Appletï¼ï¼å³å°æå¡ç¨åºææå¡è¿æ¥å¨ãServlet æ¯ Java ç¼åçæå¡å¨ç«¯ç¨åºï¼å
·æç¬ç«äºå¹³å°ååè®®çç¹æ§ï¼ä¸»è¦åè½å¨äºäº¤äºå¼å°æµè§åçææ°æ®ï¼çæå¨æ Web å
容ã
- çä¹ç Servlet æ¯æ Java å®ç°çä¸ä¸ªæ¥å£ã
- 广ä¹ç Servlet æ¯æä»»ä½å®ç°äºè¿ä¸ª Servlet æ¥å£çç±»ã
Servlet è¿è¡äºæ¯æ Java çåºç¨æå¡å¨ä¸ãä»åçä¸è®²ï¼Servlet å¯ä»¥ååºä»»ä½ç±»åç请æ±ï¼ä½ç»å¤§å¤æ°æ
åµä¸ Servlet åªç¨æ¥æ©å±åºäº HTTP åè®®ç Web æå¡å¨ã
### 1.2. Servlet å CGI çåºå«
Servlet ææ¯åºç°ä¹åï¼Web 主è¦ä½¿ç¨ CGI ææ¯ãå®ä»¬çåºå«å¦ä¸ï¼
- Servlet æ¯åºäº Java ç¼åçï¼å¤äºæå¡å¨è¿ç¨ä¸ï¼ä»è½å¤éè¿å¤çº¿ç¨æ¹å¼è¿è¡ service() æ¹æ³ï¼ä¸ä¸ªå®ä¾å¯ä»¥æå¡äºå¤ä¸ªè¯·æ±ï¼èä¸ä¸è¬ä¸ä¼éæ¯ï¼
- CGI(Common Gateway Interface)ï¼å³éç¨ç½å
³æ¥å£ãå®ä¼ä¸ºæ¯ä¸ªè¯·æ±äº§çæ°çè¿ç¨ï¼æå¡å®æåéæ¯ï¼æä»¥æçä¸ä½äº Servletã
### 1.3. Servlet çæ¬ä»¥å主è¦ç¹æ§
| çæ¬ | æ¥æ | JAVA EE/JDK çæ¬ | ç¹æ§ |
| ----------- | ------------- | ------------------ | --------------------------------------------------------------------- |
| Servlet 4.0 | 2017 å¹´ 10 æ | JavaEE 8 | HTTP2 |
| Servlet 3.1 | 2013 å¹´ 5 æ | JavaEE 7 | éé»å¡ I/Oï¼HTTP åè®®å级æºå¶ |
| Servlet 3.0 | 2009 å¹´ 12 æ | JavaEE 6, JavaSE 6 | å¯æææ§ï¼æäºå¼åï¼å¼æ¥ Servletï¼å®å
¨æ§ï¼æä»¶ä¸ä¼ |
| Servlet 2.5 | 2005 å¹´ 10 æ | JavaEE 5, JavaSE 5 | ä¾èµ JavaSE 5ï¼æ¯ææ³¨è§£ |
| Servlet 2.4 | 2003 å¹´ 11 æ | J2EE 1.4, J2SE 1.3 | web.xml ä½¿ç¨ XML Schema |
| Servlet 2.3 | 2001 å¹´ 8 æ | J2EE 1.3, J2SE 1.2 | Filter |
| Servlet 2.2 | 1999 å¹´ 8 æ | J2EE 1.2, J2SE 1.2 | æä¸º J2EE æ å |
| Servlet 2.1 | 1998 å¹´ 11 æ | æªæå® | First official specification, added RequestDispatcher, ServletContext |
| Servlet 2.0 | | JDK 1.1 | Part of Java Servlet Development Kit 2.0 |
| Servlet 1.0 | 1997 å¹´ 6 æ | | |
### 1.4. Servlet å JSP çåºå«
1. Servlet æ¯ä¸ä¸ªè¿è¡å¨æå¡å¨ä¸ç Java ç±»,ä¾é æå¡å¨æ¯æåæµè§å¨ä¼ è¾æ°æ®ã
2. **JSP æ¬è´¨ä¸å°±æ¯ Servlet**ï¼æ¯æ¬¡è¿è¡çæ¶å JSP é½ä¼è¢«ç¼è¯æ .java æä»¶ï¼ç¶åå被ç¼è¯æ .class æä»¶ã
3. æäº JSPï¼Servlet ä¸åè´è´£å¨æçæé¡µé¢ï¼è½¬èå»è´è´£æ§å¶ç¨åºé»è¾çä½ç¨ï¼æ§å¶ JSP ä¸ JavaBean ä¹é´çæµè½¬ã
4. JSP ä¾§éäºè§å¾,è Servlet ä¾§éäºæ§å¶é»è¾,å¨ MVC æ¶ææ¨¡å¼ä¸,JSP éåå
å½è§å¾ View,Servlet éåå
彿§å¶å¨ Controllerã
### 1.5. ç®è¿° Servlet çå½å¨æ

Servlet çå½å¨æå¦ä¸ï¼
1. **å è½½** - 第ä¸ä¸ªå°è¾¾æå¡å¨ç HTTP 请æ±è¢«å§æ´¾å° Servlet 容å¨ã容å¨éè¿ç±»å è½½å¨ä½¿ç¨ Servlet 类对åºçæä»¶å è½½ servletï¼
2. **åå§å** - Servlet éè¿è°ç¨ **init ()** æ¹æ³è¿è¡åå§åã
3. **æå¡** - Servlet è°ç¨ **service()** æ¹æ³æ¥å¤ç客æ·ç«¯ç请æ±ã
4. **鿝** - Servlet éè¿è°ç¨ **destroy()** æ¹æ³ç»æ¢ï¼ç»æï¼ã
5. **å¸è½½** - Servlet æ¯ç± JVM çåå¾åæ¶å¨è¿è¡åå¾åæ¶çã
### 1.6. å¦ä½ç°å® servlet çåçº¿ç¨æ¨¡å¼
```java
<%@ page isThreadSafe="false" %>
```
### 1.7. Servlet ä¸å¦ä½è·åç¨æ·æäº¤çæ¥è¯¢åæ°æè
è¡¨åæ°æ®
- HttpServletRequest ç getParameter() æ¹æ³ã
- HttpServletRequest ç getParameterValues() æ¹æ³ã
- HttpServletRequest ç getParameterMap() æ¹æ³ã
### 1.8. request çä¸»è¦æ¹æ³
- setAttribute(String name,Object)ï¼è®¾ç½®åå为 name ç request çåæ°å¼
- getAttribute(String name)ï¼è¿åç± name æå®ç屿§å¼
- getAttributeNames()ï¼è¿å request 对象ææå±æ§çååéåï¼ç»ææ¯ä¸ä¸ªæä¸¾çå®ä¾
- getCookies()ï¼è¿å客æ·ç«¯çææ Cookie 对象ï¼ç»ææ¯ä¸ä¸ª Cookie æ°ç»
- getCharacterEncoding()ï¼è¿å请æ±ä¸çå符ç¼ç æ¹å¼
- getContentLength()ï¼è¿å请æ±ç Body çé¿åº¦
- getHeader(String name)ï¼è·å¾ HTTP åè®®å®ä¹çæä»¶å¤´ä¿¡æ¯
- getHeaders(String name)ï¼è¿åæå®ååç request Header çææå¼ï¼ç»ææ¯ä¸ä¸ªæä¸¾çå®ä¾
- getHeaderNames()ï¼è¿åæä»¥ request Header çååï¼ç»ææ¯ä¸ä¸ªæä¸¾çå®ä¾
- getInputStream()ï¼è¿å请æ±çè¾å
¥æµï¼ç¨äºè·å¾è¯·æ±ä¸çæ°æ® getMethod()ï¼è·å¾å®¢æ·ç«¯åæå¡å¨ç«¯ä¼ éæ°æ®çæ¹æ³
- getParameter(String name)ï¼è·å¾å®¢æ·ç«¯ä¼ éç»æå¡å¨ç«¯çæ name æå®çåæ°å¼
- getParameterNames()ï¼è·å¾å®¢æ·ç«¯ä¼ éç»æå¡å¨ç«¯çææåæ°çååï¼ç»ææ¯ä¸ä¸ªæä¸¾çå®ä¾
- getParameterValues(String name)ï¼è·å¾æ name æå®çåæ°çææå¼
- getProtocol()ï¼è·å客æ·ç«¯åæå¡å¨ç«¯ä¼ éæ°æ®æä¾æ®çåè®®åç§°
- getQueryString()ï¼è·å¾æ¥è¯¢å符串
- getRequestURI()ï¼è·åååºè¯·æ±å符串ç客æ·ç«¯å°å
- getRemoteAddr()ï¼è·å客æ·ç«¯ç IP å°å
- getRemoteHost()ï¼è·å客æ·ç«¯çåå
- getSession([Boolean create])ï¼è¿åå请æ±ç¸å
³
- Session getServerName()ï¼è·åæå¡å¨çåå
- getServletPath()ï¼è·å客æ·ç«¯æè¯·æ±çèæ¬æä»¶çè·¯å¾
- getServerPort()ï¼è·åæå¡å¨ç端å£å·
- removeAttribute(String name)ï¼å é¤è¯·æ±ä¸çä¸ä¸ªå±æ§
## 2. JSP
### 2.1. JSP çå
置对象
1. **request**ï¼å
å«**客æ·ç«¯è¯·æ±çä¿¡æ¯**ï¼
2. **response**ï¼å
å«**æå¡å¨ä¼ å客æ·ç«¯çååºä¿¡æ¯**ï¼
3. **session**ï¼ä¸»è¦ç¨æ¥**åºåæ¯ä¸ªç¨æ·ä¿¡æ¯åä¼è¯ç¶æ**ï¼
4. **pageContext**ï¼ç®¡ç**页é¢å±æ§**ï¼
5. **application**ï¼æå¡å¨å¯å¨æ¶åå»ºï¼æå¡å¨å
³éæ¶åæ¢ï¼**ä¿åææåºç¨ç³»ç»ä¸çå
±ææ°æ®**ï¼ä¸ä¸ªå
±äº«çå
置对象ï¼å³ä¸ä¸ªå®¹å¨ä¸çå¤ä¸ªç¨æ·å
±äº«ä¸ä¸ª application 对象ï¼ï¼
6. **out**ï¼å客æ·ç«¯**è¾åºæ°æ®**ï¼
7. **config**ï¼ä»£ç çæ®µé
置对象ï¼ç¨äº**åå§å Servlet çé
ç½®åæ°**ï¼
8. **page**ï¼æ**ç½é¡µæ¬èº«**ï¼
9. **exception**ï¼å¤ç JSP æä»¶æ§è¡æ¶åççé误åå¼å¸¸ï¼åªè¦å¨**é误页é¢**éæè½ä½¿ç¨ã
### 2.2. JSP çä½ç¨å
1. **page**ï¼ä¸ä¸ªé¡µé¢ï¼
2. **request**ï¼ä¸æ¬¡è¯·æ±ï¼
3. **session**ï¼ä¸æ¬¡ä¼è¯ï¼
4. **application**ï¼æå¡å¨ä»å¯å¨å°åæ¢ã
### 2.3. JSP ä¸ 7 个å¨ä½æä»¤åä½ç¨
1. **jsp:forward** - æ§è¡é¡µé¢è½¬åï¼æè¯·æ±è½¬åå°ä¸ä¸ä¸ªé¡µé¢ï¼
2. **jsp:param** - ç¨äºä¼ éåæ°ï¼å¿
é¡»ä¸å
¶ä»æ¯æåæ°çæ ç¾ä¸èµ·ä½¿ç¨ï¼
3. **jsp:include** - ç¨äº**卿å¼å
¥ä¸ä¸ª JSP 页é¢**ï¼
4. **jsp:plugin** - ç¨äº**ä¸è½½ JavaBean æ Applet å°å®¢æ·ç«¯æ§è¡**ï¼
5. **jsp:useBean** - å¯»æ±æè
å®ä¾åä¸ä¸ª JavaBeanï¼
6. **jsp:setProperty** - 设置 JavaBean ç屿§å¼ï¼
7. **jsp:getProperty** - è·å JavaBean ç屿§å¼ã
### 2.4. JSP ä¸å¨æ INCLUDE åéæ INCLUDE æä»ä¹åºå«
- **éæ INCLUDE**ï¼ç¨ include 伪ç å®ç°ï¼**ä¸ä¼æ£æ¥æå«æä»¶çåå**ï¼éç¨äºå
å«**éæé¡µé¢<%@ include file="页é¢åç§°.html" %>**ã**å
åå¹¶åç¼è¯**ã
- **卿 INCLUDE**ï¼ç¨ jsp:include å¨ä½å®ç° **