servlet3.0è§èï¼ï¼é
ç½®æ件å¯ä»¥çåºï¼
1.1çæ¬è¦æ±
jdk1.6+
tomcate7.0+
1.2å¢å å
容ï¼çè§è
1.2.1å¢å 注解æ¯æ
@WebServletã ç¨äºå°ä¸ä¸ªç±»å£°æ为 Servletï¼è¯¥æ³¨è§£å°ä¼å¨é¨ç½²æ¶è¢«å®¹å¨å¤çï¼å®¹å¨å°æ ¹æ®å
·ä½çå±æ§é
ç½®å°ç¸åºçç±»é¨ç½²ä¸º Servletã
该注解å
·æä¸è¡¨ç»åºçä¸äºå¸¸ç¨å±æ§ï¼ä»¥ä¸ææå±æ§å为å¯éå±æ§ï¼ä½æ¯ vlaue æè
urlPatterns é常æ¯å¿
éçï¼ä¸äºè
ä¸è½å
±åï¼å¦æ
åæ¶æå®ï¼é常æ¯å¿½ç¥ value çåå¼ï¼ï¼
表 1. @WebServlet 主è¦å±æ§å表
å±æ§å ç±»å
æè¿°
name String
æå® Servlet ç name å±æ§ï¼çä»·äº <servlet-name>ãå¦æ没ææ¾å¼æå®ï¼å该 Servlet çåå¼å³ä¸ºç±»çå
¨éå®åã
value String[]
该å±æ§çä»·äº urlPatterns å±æ§ã两个å±æ§ä¸è½åæ¶ä½¿ç¨ã
urlPatterns String[] æå®ä¸ç» Servlet ç URL å¹é
模å¼ãçä»·äº <url-pattern> æ ç¾ã
loadOnStartup int æå® Servlet çå 载顺åºï¼çä»·äº <load-on-startup> æ ç¾ã
initParams WebInitParam[] æå®ä¸ç» Servlet åå§ååæ°ï¼çä»·äº <init-param> æ ç¾ã
asyncSupported
boolean 声æ Servlet æ¯å¦æ¯æå¼æ¥æä½æ¨¡å¼ï¼çä»·äº <async-supported> æ ç¾ã
description String 该 Servlet çæè¿°ä¿¡æ¯ï¼çä»·äº <description> æ ç¾ã
displayName String 该 Servlet çæ¾ç¤ºåï¼é常é
åå·¥å
·ä½¿ç¨ï¼çä»·äº <display-name> æ ç¾ã
ä¸é¢æ¯ä¸ä¸ªç®åç示ä¾ï¼
@WebServlet(urlPatterns = {"/simple"}, asyncSupported = true,
loadOnStartup = -1, name = "SimpleServlet", displayName = "ss",
initParams = {@WebInitParam(name = "username", value = "tom")}
)
public class SimpleServlet extends HttpServlet{ ⦠}
å¦æ¤é
ç½®ä¹åï¼å°±å¯ä»¥ä¸å¿
å¨ web.xml ä¸é
ç½®ç¸åºç <servlet> å <servlet-mapping> å
ç´ äºï¼å®¹å¨ä¼å¨é¨ç½²æ¶æ ¹æ®æå®çå±æ§å°è¯¥ç±»åå¸ä¸º Servletã
å®ççä»·ç web.xml é
置形å¼å¦ä¸ï¼
<servlet>
<display-name>ss</display-name>
<servlet-name>SimpleServlet</servlet-name>
<servlet-class>footmark.servlet.SimpleServlet</servlet-class>
<load-on-startup>-1</load-on-startup>
<async-supported>true</async-supported>
<init-param>
<param-name>username</param-name>
<param-value>tom</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SimpleServlet</servlet-name>
<url-pattern>/simple</url-pattern>
</servlet-mapping>
@WebInitParam
该注解é常ä¸åç¬ä½¿ç¨ï¼èæ¯é
å @WebServlet æè
@WebFilter 使ç¨ãå®çä½ç¨æ¯ä¸º Servlet æè
è¿æ»¤å¨æå®åå§ååæ°ï¼è¿çä»·äº web.xml ä¸ <servlet>
å <filter> ç <init-param> åæ ç¾ã@WebInitParam å
·æä¸è¡¨ç»åºçä¸äºå¸¸ç¨å±æ§ï¼
表 2. @WebInitParam ç常ç¨å±æ§
å±æ§å ç±»å
æ¯å¦å¯é æè¿°
name String
å¦ æå®åæ°çååï¼çä»·äº <param-name>ã
value String
å¦ æå®åæ°çå¼ï¼çä»·äº <param-value>ã
description String æ¯ å
³äºåæ°çæè¿°ï¼çä»·äº <description>ã
@WebFilter
@WebFilter ç¨äºå°ä¸ä¸ªç±»å£°æ为è¿æ»¤å¨ï¼è¯¥æ³¨è§£å°ä¼å¨é¨ç½²æ¶è¢«å®¹å¨å¤çï¼å®¹å¨å°æ ¹æ®å
·ä½çå±æ§é
ç½®å°ç¸åºçç±»é¨ç½²ä¸ºè¿æ»¤å¨ã该注解å
·æä¸è¡¨ç»åºçä¸
äºå¸¸ç¨
å±æ§ ( 以ä¸ææå±æ§å为å¯éå±æ§ï¼ä½æ¯ valueãurlPatternsãservletNames ä¸è
å¿
éè³å°å
å«ä¸ä¸ªï¼ä¸ value å urlPatterns ä¸è½å
±åï¼å¦æåæ¶æå®ï¼é
å¸¸å¿½ç¥ value çåå¼ )ï¼
表 3. @WebFilter ç常ç¨å±æ§
å±æ§å ç±»å
æè¿°
filterName String æå®è¿æ»¤å¨ç name å±æ§ï¼çä»·äº <filter-name>
value String[]
该å±æ§çä»·äº urlPatterns å±æ§ãä½æ¯ä¸¤è
ä¸åºè¯¥åæ¶ä½¿ç¨ã
urlPatterns String[] æå®ä¸ç»è¿æ»¤å¨ç URL å¹é
模å¼ãçä»·äº <url-pattern> æ ç¾ã
servletNames String[] æå®è¿æ»¤å¨å°åºç¨äºåªäº Servletãåå¼æ¯ @WebServlet ä¸ç name å±æ§çåå¼ï¼æ¯ web.xml ä¸ <servlet-name> çåå¼ã
dispatcherTypes
DispatcherType æå®è¿æ»¤å¨ç转å模å¼ãå
·ä½åå¼å
æ¬ï¼
ASYNCãERRORãFORWARDãINCLUDEãREQUESTã
initParams WebInitParam[] æå®ä¸ç»è¿æ»¤å¨åå§ååæ°ï¼çä»·äº <init-param> æ ç¾ã
asyncSupported
boolean 声æè¿æ»¤å¨æ¯å¦æ¯æå¼æ¥æä½æ¨¡å¼ï¼çä»·äº <async-supported> æ ç¾ã
description String 该è¿æ»¤å¨çæè¿°ä¿¡æ¯ï¼çä»·äº <description> æ ç¾ã
displayName String 该è¿æ»¤å¨çæ¾ç¤ºåï¼é常é
åå·¥å
·ä½¿ç¨ï¼çä»·äº <display-name> æ ç¾ã
ä¸é¢æ¯ä¸ä¸ªç®åç示ä¾ï¼
@WebFilter(servletNames = {"SimpleServlet"},filterName="SimpleFilter")
public class LessThanSixFilter implements Filter{...}
çä»·äºweb.xmlä¸ä¸ä¸æ件ï¼
<filter>
<filter-name>SimpleFilter</filter-name>
<filter-class>xxx</filter-class>
</filter>
<filter-mapping>
<filter-name>SimpleFilter</filter-name>
<servlet-name>SimpleServlet</servlet-name>
</filter-mapping>
@WebListener
该注解ç¨äºå°ç±»å£°æ为çå¬å¨ï¼è¢« @WebListener æ 注çç±»å¿
é¡»å®ç°ä»¥ä¸è³å°ä¸ä¸ªæ¥å£ï¼
• ServletContextListener
• ServletContextAttributeListener
• ServletRequestListener
• ServletRequestAttributeListener
• HttpSessionListener
• HttpSessionAttributeListener
表 4. @WebListener ç常ç¨å±æ§
å±æ§å ç±»å
æ¯å¦å¯é æè¿°
value String
æ¯ è¯¥çå¬å¨çæè¿°ä¿¡æ¯ã
ä¾åï¼
@WebListener("This is only a demo listener")
public class SimpleListener implements ServletContextListener{...}
çä»·äºï¼
<listener>
<listener-class>footmark.servlet.SimpleListener</listener-class>
</listener>
@MultipartConfig
该注解主è¦æ¯ä¸ºäºè¾
å© Servlet 3.0 ä¸ HttpServletRequest æä¾ç对ä¸ä¼ æ件çæ¯æã该注解
æ æ³¨å¨ Servlet ä¸é¢ï¼ä»¥è¡¨ç¤ºè¯¥ Servlet å¸æå¤çç请æ±ç MIME ç±»åæ¯ multipart/form-dataã
å¦å¤ï¼å®è¿æä¾äºè¥å¹²å±æ§ç¨äºç®å对ä¸ä¼ æ件çå¤çãå
·ä½å¦ä¸ï¼
表 5. @MultipartConfig ç常ç¨å±æ§
å±æ§å ç±»å
æ¯å¦å¯é æè¿°
fileSizeThreshold
int æ¯ å½æ°æ®é大äºè¯¥å¼æ¶ï¼å
容å°è¢«åå
¥æ件ã
location String æ¯ åæ¾çæçæ件å°åã
maxFileSize long æ¯ å
许ä¸ä¼ çæ件æ大å¼ãé»è®¤å¼ä¸º -1ï¼è¡¨ç¤ºæ²¡æéå¶ã
maxRequestSize
long æ¯ é对该 multipart/form-data 请æ±çæ大æ°éï¼é»è®¤å¼ä¸º -1ï¼è¡¨ç¤ºæ²¡æéå¶ã
1.2.2å¢å æ件ä¸ä¼ ä¸è½½æ¯æï¼å¢å Partç±»ï¼å
¶å®æ¯fileUploadç±»çå°è£
@WebServlet(urlPatterns = {"/servletDemo1"}, asyncSupported = true,
loadOnStartup = -1, name = "SimpleServlet", displayName = "ss"
)
@MultipartConfig
public class ServletDemo1 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//response.getOutputStream().write("ss".getBytes());
Part part = request.getPart("file");
String name = part.getName();
String filename = name.substring(name.lastIndexOf("\\")+1, name.length()-1);
part.write(filename);
}
<form action="${pageContext.request.contextPath}/servletDemo1" method="post" enctype="multipart/form-data"><!--form表åè®°å¾æ·»å en..-->
<input type="text" name="input" /><br>
<input type="file" name ="file"><br>
<input type="submit" value="submit">
</form>
1.2.3å¢å éè¿servletContextåå§åservletãfilter
å¾
å¦
1.2.4å¢å å¼æ¥å¤çæ¯æï¼ææ¶æ ç¨ï¼ä½¿ç¨Ajaxï¼
1.2.5å¢å å¯ææ§ï¼
使ç¨è¯¥ç¹æ§ï¼ç°å¨æ们å¯ä»¥å¨ä¸ä¿®æ¹å·²æ Web åºç¨çåæä¸ï¼åªéå°æç
§ä¸å®æ ¼å¼ææç JAR å
æ¾å° WEB-INF/lib ç®å½ä¸ï¼å³å¯å®ç°æ°åè½çæ©å
ï¼ä¸éè¦é¢å¤ çé
ç½®ãServlet 3.0 å¼å
¥äºç§°ä¹ä¸ºâWeb 模åé¨ç½²æ述符ç段âç web-fragment.xml é¨ç½²æè¿°æ件ï¼è¯¥æ件å¿
é¡»åæ¾å¨ JAR æ件ç META-INF ç®å½ä¸ï¼è¯¥é¨ç½²æè¿° æ件å¯ä»¥å
å«ä¸åå¯ä»¥å¨ web.xml ä¸å®ä¹çå
容ãJAR å
é常æ¾å¨ WEB-INF/lib ç®å½ä¸ï¼é¤æ¤ä¹å¤ï¼ææ该模å使ç¨çèµæºï¼å
æ¬ class æ件ãé
ç½®æ件çï¼åªé è¦è½å¤è¢«å®¹å¨çç±»å è½½å¨é¾å è½½çè·¯å¾ä¸ï¼æ¯å¦ classes ç®å½çã
ç°å¨ï¼ä¸ºä¸ä¸ª Web åºç¨å¢å ä¸ä¸ª Servlet é
ç½®æå¦ä¸ä¸ç§æ¹å¼ ( è¿æ»¤å¨ãçå¬å¨ä¸ Servlet ä¸è
çé
ç½®é½æ¯çä»·çï¼æ
å¨æ¤ä»¥ Servlet é
置为ä¾è¿è¡è®²è¿°ï¼è¿æ»¤å¨ åçå¬å¨å
·æä¸ä¹é常类似çç¹æ§ )ï¼
• ç¼åä¸ä¸ªç±»ç»§æ¿èª HttpServletï¼å°è¯¥ç±»æ¾å¨ classes ç®å½ä¸ç对åºå
ç»æä¸ï¼ä¿®æ¹ web.xmlï¼å¨å
¶ä¸å¢å ä¸ä¸ª Servlet 声æãè¿æ¯æåå§çæ¹å¼ï¼
• ç¼åä¸ä¸ªç±»ç»§æ¿èª HttpServletï¼å¹¶ä¸å¨è¯¥ç±»ä¸ä½¿ç¨ @WebServlet 注解å°è¯¥ç±»å£°æ为 Servletï¼å°è¯¥ç±»æ¾å¨ classes ç®å½ä¸ç对åºå
ç»æä¸ï¼æ éä¿®æ¹ web.xml æ件ã
• ç¼åä¸ä¸ªç±»ç»§æ¿èª HttpServletï¼å°è¯¥ç±»ææ JAR å
ï¼å¹¶ä¸å¨ JAR å
ç META-INF ç®å½ä¸æ¾ç½®ä¸ä¸ª web-fragment.xml æ件ï¼è¯¥æ件ä¸å£°æäºç¸åºç Servlet é
ç½®ãweb-fragment.xml æ件
web-fragment.xml æ件示ä¾å¦ä¸ï¼
<?xml version="1.0" encoding="UTF-8"?>
<web-fragment
xmlns=
http://java.sun.com/xml/ns/javaeexmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" version="3.0"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"
metadata-complete="true">
<servlet>
<servlet-name>fragment</servlet-name>
<servlet-class>footmark.servlet.FragmentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>fragment</servlet-name>
<url-pattern>/fragment</url-pattern>
</servlet-mapping>
</web-fragment>
1.2.51å 载顺åºé®é¢
ç±äºä¸ä¸ª Web åºç¨ä¸å¯ä»¥åºç°å¤ä¸ª web-fragment.xml 声ææ件ï¼å ä¸ä¸ä¸ª web.xml æ件ï¼å 载顺åºé®é¢ä¾¿æäºä¸å¾ä¸é¢å¯¹çé®é¢ã
web-fragment.xml å
å«äºä¸¤ä¸ªå¯éç顶å±æ ç¾ï¼<name> å <ordering>ï¼å¦æå¸æ为å½åçæ件æå®æç¡®çå 载顺åºï¼é常éè¦ä½¿ç¨è¿ä¸¤ä¸ªæ ç¾ï¼
<name> 主è¦ç¨äºæ è¯å½åçæ件ï¼è <ordering> åç¨äºæå®å
å顺åºãä¸ä¸ªç®åç示ä¾å¦ä¸ï¼
<web-fragment...>
<name>FragmentA</name>
<ordering>
<after>
<name>FragmentB</name>
<name>FragmentC</name>
</after>
<before>
<others/>
</before>
</ordering>
...
</web-fragment>