- 浏览: 52668 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
yekai584341028:
楼主太搞笑了,还和服务器扯皮呵呵。
捕获异常要捕获根源异常。
j2me 联网技术分析总结 -
wcjhaoa:
那个一次排序时的交换情况我想半天没明白你为什么要这样写的... ...
快速排序java实现 -
lei511:
android 连接 有问题
[2010-05-04 10 ...
eclipse真机调试J2me程序 -
xmmarmy007:
java.io.IOException: Couldn't r ...
j2me 联网技术分析总结
servletè¿æ»¤å¨
Servletè¿æ»¤å¨æ¯Servletçä¸ç§ç¹æ®ç¨æ³ï¼ä¸»è¦ç¨æ¥å®æä¸äºéç¨çæä½ãæ¯å¦ç¼ç çè¿æ»¤ï¼å¤æç¨æ·çç»éç¶æççãServletè¿æ»¤å¨çéç¨åºåï¼
Aï¼è®¤è¯è¿æ»¤
Bï¼ç»å½åå®¡æ ¸è¿æ»¤
Cï¼å¾å转æ¢è¿æ»¤
Dï¼æ°æ®åç¼©è¿æ»¤
Eï¼å å¯è¿æ»¤
Fï¼ä»¤çè¿æ»¤
Gï¼èµæºè®¿é®è§¦åäºä»¶è¿æ»¤
Servletè¿æ»¤å¨æ¥å£çææï¼
ææçServletè¿æ»¤å¨ç±»é½å¿ é¡»å®ç°javax.servlet.Filteræ¥å£ãè¿ä¸ªæ¥å£å«æ3ä¸ªè¿æ»¤å¨ç±»å¿ é¡»å®ç°çæ¹æ³ï¼
æ¹æ³ 说æ
init(FilterConfig cfg) è¿æ¯Servletè¿æ»¤å¨çåå§åæ¹æ³ï¼æ§è´¨çåä¸servletçinitæ¹æ³ã
doFilter(ServletRequest,ServletResponse,FilterChain) 宿å®é çè¿æ»¤æä½ï¼å½è¯·æ±è®¿é®è¿æ»¤å¨å ³èçURLæ¶ï¼Servlet容å¨å°å è°ç¨è¿æ»¤å¨çdoFilteræ¹æ³ãFilterChainåæ°ç¨äºè®¿é®åç»è¿æ»¤å¨
destroy() Servlet容å¨å¨éæ¯è¿æ»¤å¨å®ä¾åè°ç¨è¯¥æ¹æ³ï¼è¿ä¸ªæ¹æ³ä¸å¯ä»¥éæ¾Servletè¿æ»¤å¨å ç¨çèµæºãæ§è´¨çåä¸servletçdestory()æ¹æ³ã
Servletè¿æ»¤å¨çå建æ¥éª¤ï¼
Aï¼å®ç°javax.servlet.Filteræ¥å£çservletç±»
Bï¼å®ç°initæ¹æ³ï¼è¯»åè¿æ»¤å¨çåå§å彿°
Cï¼å®ç°doFilteræ¹æ³ï¼å®æå¯¹è¯·æ±æè¿æ»¤çååº
Dï¼è°ç¨FilterChainæ¥å£å¯¹è±¡çdoFilteræ¹æ³ï¼ååç»çè¿æ»¤å¨ä¼ éè¯·æ±æååº
F.å¨web.xmlä¸é ç½®Filter
2.使ç¨è¿æ»¤å¨å¤ç䏿é®é¢
å½ç¨ç¨æ·ç»é页é¢è¾å ¥å¸å·æ¶ï¼å¦æè¾å ¥æ¯ä¸æï¼åå°servlet忬¡è¾åºè¿ä¸ªå 容æ¶ï¼å¯è½å°±ä¼æ¯ä¹±ç ï¼è¿æ¯å 为serlvetä¸é»è®¤æ¯ä»¥ISO-8859-1æ ¼å¼ç¼ç çï¼å¦æåå°æå¤ä¸ªServlet,å¤ä¸ªåæ°ï¼è¿æ ·å°±ä¸åéï¼è¿ä¸ªé®é¢ï¼æä»¬å¯ä»¥éè¿ä¸ä¸ªè¿æ»¤å¨ç»ä¸è§£å³ï¼ä½¿åå°çè¾åºè¾åºé½æ¯æä¸æï¼å°ISO-8859-1转ç 为GBKç飿®µä»£ç ï¼
3.使ç¨è¿æ»¤å¨è®¤è¯ç¨æ·ï¼
æ¯ä¸ªè¿æ»¤å¨ä¹å¯ä»¥é ç½®åå§ååæ°ï¼å¯ä»¥å°ä¸éè¦è¿æ»¤çå°åé ç½®å°è¿ä¸ªFilterçé ç½®åæ°ä¸ï¼è¿æ»¤æ¶ï¼å¦æè¯·æ±å°åå¨é ç½®åæ°ä¸ï¼åæ¾è¡ï¼è¿æ · å°±é¿å äºå¨ç¨åºä¸ç¡¬ç¼ç ãæ¯ä¸ªFilterä¸åå§åæ¶ï¼é½å¯ä»¥å¾å°é 置对象ï¼å¨Filterä¸é ç½®äºä¸ªä¸éè¦è¿æ»¤çå°åï¼ä¸ä¸ªæ¯ç»é页é¢ï¼ä¸ä¸ªæ¯æ§è¡ç»é 认è¯çservletï¼
4.Servletçå¬å¨
类似ä¸Swingçé¢åºç¨å¼åï¼Servletä¹å¯ä»¥å建çå¬å¨ï¼ä»¥å¯¹Servlet容å¨ï¼æServletä¸ä»¥è±¡çäºä»¶ååºååºãServletçå¬å¨ä¸»è¦æä»¥ä¸å ç§ï¼
ServletRequestListener ,ServletRequestAttributeListenerï¼
HttpSessionActivationListener ,HttpSessionBindingListener ,
HttpSessionAttributeListener,HttpSessionListener,
ServletContextListenerççã
è¿äºçå¬å¨ä¸»è¦ç¨æ¥çå¬session,request,applicationè¿ä¸ä¸ªå¯¹è±¡éååæ°æ®çååã
----------------------------------------------------------------------------------------------------------------
servlet API䏿éè¦çä¸ä¸ªåè½å°±æ¯è½å¤ä¸ºservletåJSP页é¢å®ä¹è¿æ»¤å¨ãè¿æ»¤å¨æä¾äºæäºæ©ææå¡å¨ææ¯æçéæ å“servlet龿¥”çä¸ç§åè½å¼ºå¤§ä¸æ åçæ¿ä»£åã
è¿æ»¤å¨æ¯ä¸ä¸ªç¨åºï¼å®å
äºä¸ä¹ç¸å
³çservletæJSP页é¢è¿è¡å¨æå¡å¨ä¸ãè¿æ»¤å¨å¯éå å°ä¸ä¸ªæå¤ä¸ªservletæJSP页é¢ä¸ï¼å¹¶ä¸å¯ä»¥æ£æ¥è¿å
¥è¿äºèµæºç请æ±ä¿¡æ¯ãå¨è¿ä¹åï¼è¿æ»¤å¨å¯ä»¥ä½å¦ä¸çéæ©ï¼
1. 以常è§çæ¹å¼è°ç¨èµæºï¼å³ï¼è°ç¨servletæJSP页é¢ï¼ã
2.å©ç¨ä¿®æ¹è¿ç请æ±ä¿¡æ¯è°ç¨èµæºã
3. è°ç¨èµæºï¼ä½å¨åéååºå°å®¢æ·æºå对å
¶è¿è¡ä¿®æ¹
4. 黿¢è¯¥èµæºè°ç¨ï¼ä»£ä¹ä»¥è½¬å°å
¶ä»çèµæºï¼è¿åä¸ä¸ªç¹å®çç¶æä»£ç æçææ¿æ¢è¾åºã
è¿æ»¤å¨æä¾äºå 个éè¦å¥½å¤ ï¼
é¦å
ï¼å®ä»¥ä¸ç§æ¨¡ååçæå¯éç¨çæ¹å¼å°è£
å
Œ
±çè¡ä¸ºãä½ æ30个ä¸åçserlvetæJSP页é¢ï¼éè¦å缩å®ä»¬çå
容以åå°ä¸è½½æ¶é´åï¼æ²¡é®é¢ï¼æé ä¸ä¸ªåç¼©è¿æ»¤å¨ï¼ç¶åå°å®åºç¨å°30ä¸ªèµæºä¸å³å¯ã
å
¶æ¬¡ï¼å©ç¨å®è½å¤å°é«çº§è®¿é®å³çä¸è¡¨ç°ä»£ç ç¸å离ãè¿å¯¹äºJSPç¹å«æä»·å¼ï¼å
¶ä¸ä¸è¬å¸æå°å 乿´ä¸ªé¡µé¢éä¸å¨è¡¨ç°ä¸ï¼è䏿¯éä¸å¨ä¸å¡é»è¾ä¸ãä¾å¦ï¼å¸
æé»å¡æ¥èªæäºç«ç¹ç访é®èä¸ç¨ä¿®æ¹å页é¢ï¼è¿äºé¡µé¢åå°è®¿é®éå¶ï¼åï¼æ²¡é®é¢ï¼å»ºç«ä¸ä¸ªè®¿é®éå¶è¿æ»¤å¨å¹¶æå®åºç¨å°æ³è¦éå¶è®¿é®ç页é¢ä¸å³å¯ã
æåï¼è¿æ»¤å¨ä½¿ä½ è½å¤å¯¹è®¸å¤ä¸åçèµæºè¿è¡æ¹éæ§çæ´æ¹ãä½ æè®¸å¤ç°åèµæºï¼è¿äºèµæºé¤äºå
¬å¸åè¦æ´æ¹å¤å
¶ä»çä¿æä¸åï¼è½åå°ä¹ï¼æ²¡é®é¢ï¼æé ä¸ä¸ªä¸²æ¿æ¢è¿æ»¤å¨ï¼åªè¦åé就使ç¨å®ã
ä½è¦æ³¨æï¼è¿æ»¤å¨åªå¨ä¸servletè§è2.3çå
¼å®¹çæå¡å¨ä¸æä½ç¨ãå¦æä½ çWebåºç¨éè¦æ¯ææ§çæå¡å¨ï¼å°±ä¸è½ä½¿ç¨è¿æ»¤å¨ã
1ï¼ å»ºç«åºæ¬è¿æ»¤å¨
建ç«ä¸ä¸ªè¿æ»¤å¨æ¶åä¸åäºä¸ªæ¥éª¤ï¼
1ï¼å»ºç«ä¸ä¸ªå®ç°Filteræ¥å£çç±»ãè¿ä¸ªç±»éè¦ä¸ä¸ªæ¹æ³ï¼å嫿¯ï¼doFilterãinitådestroyã
doFilteræ¹æ³å
å«ä¸»è¦çè¿æ»¤ä»£ç ï¼è§ç¬¬2æ¥ï¼ï¼initæ¹æ³å»ºç«è®¾ç½®æä½ï¼èdestroyæ¹æ³è¿è¡æ¸
æ¥ã
2ï¼å¨doFilteræ¹æ³ä¸æ¾å
¥è¿æ»¤è¡ä¸ºãdoFilteræ¹æ³ç第ä¸ä¸ªåæ°ä¸ºServletRequestå¯¹è±¡ãæ¤å¯¹è±¡ç»è¿æ»¤å¨æä¾äºå¯¹è¿å
¥çä¿¡æ¯
ï¼å
æ¬è¡¨åæ°æ®ãcookieåHTTP请æ±å¤´ï¼çå®å
¨è®¿é®ã第äºä¸ªåæ°ä¸ºServletResponseï¼é常å¨ç®åçè¿æ»¤å¨ä¸å¿½ç¥æ¤åæ°ãæåä¸ä¸ªå
æ°ä¸ºFilterChainï¼å¦ä¸ä¸æ¥æè¿°ï¼æ¤åæ°ç¨æ¥è°ç¨servletæJSP页ã
3ï¼è°ç¨FilterChain对象çdoFilteræ¹æ³ãFilteræ¥å£çdoFilteræ¹æ³åä¸ä¸ªFilterChain对象ä½ä¸ºå®çä¸ä¸ªå
æ°ãå¨è°ç¨æ¤å¯¹è±¡çdoFilteræ¹æ³æ¶ï¼æ¿æ´»ä¸ä¸ä¸ªç¸å
³çè¿æ»¤å¨ãå¦ææ²¡æå¦ä¸ä¸ªè¿æ»¤å¨ä¸servletæJSP页é¢å
³èï¼åservletæJSP
页é¢è¢«æ¿æ´»ã
4ï¼å¯¹ç¸åºçservletåJSP页颿³¨åè¿æ»¤å¨ãå¨é¨ç½²æè¿°ç¬¦æä»¶ï¼web.xmlï¼ä¸ä½¿ç¨filteråfilter-mappingå
ç´ ã
5ï¼ç¦ç¨æ¿æ´»å¨servletã鲿¢ç¨æ·å©ç¨ç¼ºçservlet URLç»è¿è¿æ»¤å¨è®¾ç½®ã
1.1 建ç«ä¸ä¸ªå®ç°Filteræ¥å£çç±»
ææè¿æ»¤å¨é½å¿
é¡»å®ç°javax.servlet.Filterãè¿ä¸ªæ¥å£å
å«ä¸ä¸ªæ¹æ³ï¼åå«ä¸ºdoFilterãinitådestroyã
public void doFilter(ServletRequset request,
ServletResponse response,
FilterChain chain)
thows ServletException, IOException
æ¯å½è°ç¨ä¸ä¸ªè¿æ»¤å¨ï¼å³ï¼æ¯æ¬¡è¯·æ±ä¸æ¤è¿æ»¤å¨ç¸å
³çservletæJSP页é¢ï¼æ¶ï¼å°±æ§è¡å
¶doFilteræ¹æ³ãæ£æ¯è¿ä¸ªæ¹æ³å
å«äºå¤§é¨åè¿æ»¤é»è¾ã
第ä¸ä¸ªåæ°ä¸ºä¸ä¼ å
¥è¯·æ±æå
³çServletRequestã对äºç®åçè¿æ»¤å¨ï¼å¤§å¤æ°è¿æ»¤é»è¾æ¯åºäºè¿ä¸ªå¯¹è±¡çã妿å¤çHTTP请æ±ï¼å¹¶ä¸éè¦è®¿é®è¯¸
å¦getHeaderægetCookiesçå¨ServletRequest䏿 æ³å¾å°çæ¹æ³ï¼å°±è¦ææ¤å¯¹è±¡æé æ
HttpServletRequestã
第äºä¸ªåæ°ä¸ºServletResponseãé¤äºå¨ä¸¤ä¸ªæ
å½¢ä¸è¦ä½¿ç¨å®ä»¥å¤ï¼é常忽ç¥è¿ä¸ªåæ°ãé¦å
ï¼å¦æå¸æå®å
¨é»å¡å¯¹ç¸å
³servletæJSP页
é¢ç访é®ãå¯è°ç¨response.getWriterå¹¶ç´æ¥åéä¸ä¸ªååºå°å®¢æ·æºãå
¶æ¬¡ï¼å¦æå¸æä¿®æ¹ç¸å
³çservletæJSP页é¢çè¾åºï¼å¯æå
åºå
å«å¨ä¸ä¸ªæ¶éææåéå°å®çè¾åºç对象ä¸ãç¶åï¼å¨è°ç¨serlvetæJSP页é¢åï¼è¿æ»¤å¨å¯æ£æ¥è¾åºï¼å¦æåé就修æ¹å®ï¼ä¹ååéå°å®¢æ·æºã
DoFilterçæåä¸ä¸ªåæ°ä¸ºFilterChain对象ã对æ¤å¯¹è±¡è°ç¨doFilterä»¥æ¿æ´»ä¸servletæJSP页é¢ç¸å
³çä¸ä¸ä¸ªè¿æ»¤å¨ãå¦ææ²¡æå¦ä¸ä¸ªç¸å
³çè¿æ»¤å¨ï¼å对doFilterçè°ç¨æ¿æ´»servletæJSPæ¬èº«ã
public void init(FilterConfig config) thows ServletException
initæ¹æ³åªå¨æ¤è¿æ»¤å¨ç¬¬ä¸æ¬¡åå§åæ¶æ§è¡ï¼ä¸æ¯æ¯æ¬¡è°ç¨è¿æ»¤å¨é½æ§è¡å®ã对äºç®åçè¿æ»¤å¨ï¼å¯æä¾æ¤æ¹æ³çä¸ä¸ªç©ºä½ï¼ä½æä¸¤ä¸ªåå éè¦ä½¿ç¨initã
é¦å
ï¼FilterConfig对象æä¾å¯¹servletç¯å¢åweb.xmlæä»¶ä¸ææ´¾çè¿æ»¤å¨åç访é®ãå æ¤ï¼æ®éçåæ³æ¯å©ç¨initå°
FilterConfigå¯¹è±¡åæ¾å¨ä¸ä¸ªå段ä¸ï¼ä»¥ä¾¿doFilteræ¹æ³è½å¤è®¿é®servletç¯å¢æè¿æ»¤å¨å.å
¶æ¬¡ï¼FilterConfig对象å
·
æä¸ä¸ªgetInitParameteræ¹æ³ï¼å®è½å¤è®¿é®é¨ç½²æè¿°ç¬¦æä»¶ï¼web.xmlï¼ä¸åé
çè¿æ»¤å¨åå§ååæ°ã
public void destroy( )
大夿°è¿æ»¤å¨ç®åå°ä¸ºæ¤æ¹æ³æä¾ä¸ä¸ªç©ºä½ï¼ä¸è¿ï¼å¯å©ç¨å®æ¥å®æè¯¸å¦å
³éè¿æ»¤å¨ä½¿ç¨çæä»¶ææ°æ®åºè¿æ¥æ± çæ¸
é¤ä»»å¡ã
1.2 å°è¿æ»¤è¡ä¸ºæ¾å
¥doFilteræ¹æ³
doFilteræ¹æ³ä¸ºå¤§å¤æ°è¿æ»¤å¨å°å
³é®é¨åãæ¯å½è°ç¨ä¸ä¸ªè¿æ»¤å¨æ¶ï¼é½è¦æ§è¡doFilterã对äºå¤§å¤æ°è¿æ»¤å¨æ¥è¯´ï¼doFilteræ§è¡çæ¥éª¤æ¯
åºäºä¼ å
¥çä¿¡æ¯çãå æ¤ï¼å¯è½è¦å©ç¨ä½ä¸ºdoFilterç第ä¸ä¸ªåæ°æä¾çServletRequestãè¿ä¸ªå¯¹è±¡å¸¸å¸¸æé 为
HttpServletRequestç±»åï¼ä»¥æä¾å¯¹è¯¥ç±»çæ´ç¹æ®æ¹æ³ç访é®ã
1.3 è°ç¨FilterChain对象çdoFilteræ¹æ³
Filteræ¥å£çdoFilteræ¹æ³ä»¥ä¸ä¸ªFilterChain对象ä½ä¸ºå®ç第ä¸ä¸ªåæ°ãå¨è°ç¨è¯¥å¯¹è±¡çdoFilteræ¹æ³æ¶ï¼æ¿æ´»ä¸ä¸ä¸ªç¸å
³ç
è¿æ»¤å¨ãè¿ä¸ªè¿ç¨ä¸è¬æç»å°é¾ä¸æåä¸ä¸ªè¿æ»¤å¨ä¸ºæ¢ã卿åä¸ä¸ªè¿æ»¤å¨è°ç¨å
¶FilterChain对象çdoFilteræ¹æ³æ¶ï¼æ¿æ´»servletæ
页é¢èªèº«ã
使¯ï¼é¾ä¸çä»»æè¿æ»¤å¨é½å¯ä»¥éè¿ä¸è°ç¨å
¶FilterChainçdoFilteræ¹æ³ä¸æè¿ä¸ªè¿ç¨ãå¨è¿æ ·çæ
åµä¸ï¼ä¸åè°ç¨JSP页é¢çserlvetï¼å¹¶ä¸ä¸ææ¤è°ç¨è¿ç¨çè¿æ»¤å¨è´è´£å°è¾åºæä¾ç»å®¢æ·æºã
1.4 对éå½çservletåJSP页颿³¨åè¿æ»¤å¨
é¨ç½²æè¿°ç¬¦æä»¶ç2.3çæ¬å¼å
¥äºä¸¤ä¸ªç¨äºè¿æ»¤å¨çå
ç´ ï¼å嫿¯ï¼filteråfilter-mappingãfilterå
ç´ åç³»ç»æ³¨åä¸ä¸ªè¿æ»¤å¯¹è±¡ï¼filter-mappingå
ç´ æå®è¯¥è¿æ»¤å¯¹è±¡æåºç¨çURLã
1.filterå
ç´
filterå
ç´ ä½äºé¨ç½²æè¿°ç¬¦æä»¶ï¼web.xmlï¼çåé¨ï¼ææfilter-mappingãservletæservlet-mappingå
ç´ ä¹åãfilterå
ç´ å
·æå¦ä¸å
个å¯è½çåå
ç´ ï¼
1ã icon è¿æ¯ä¸ä¸ªå¯éçå
ç´ ï¼å®å£°æIDEè½å¤ä½¿ç¨çä¸ä¸ªå¾è±¡æä»¶ã
2ãfilter-name è¿æ¯ä¸ä¸ªå¿
éçå
ç´ ï¼å®ç»è¿æ»¤å¨åé
ä¸ä¸ªéå®çååã
3ãdisplay-name è¿æ¯ä¸ä¸ªå¯éçå
ç´ ï¼å®ç»åºIDE使ç¨ççåç§°ã
4ã description è¿ä¹æ¯ä¸ä¸ªå¯éçå
ç´ ï¼å®ç»åºIDEçä¿¡æ¯ï¼æä¾ææ¬ææ¡£ã
5ã filter-class è¿æ¯ä¸ä¸ªå¿
éçå
ç´ ï¼å®æå®è¿æ»¤å¨å®ç°ç±»çå®å
¨éå®åã
6ã init-param è¿æ¯ä¸ä¸ªå¯éçå
ç´ ï¼å®å®ä¹å¯å©ç¨FilterConfigçgetInitParameteræ¹æ³è¯»åçåå§ååæ°ãåä¸ªè¿æ»¤å¨å
ç´ å¯å
å«å¤ä¸ªinit-paramå
ç´ ã
请注æï¼è¿æ»¤æ¯å¨serlvetè§è2.3çä¸å次å¼å
¥çãå æ¤ï¼web.xmlæä»¶å¿
须使ç¨DTDç2.3çæ¬ãä¸é¢ä»ç»ä¸ä¸ªç®åçä¾åï¼
<xml version="1.0" encoding="ISO-8859-1"?>
DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<filter>
<filter-name>MyFilterfilter-name>
<filter-class>myPackage.FilterClassfilter-class>
filter>
<filter-mapping>...filter-mapping>
<web-app>
2.filter-mappingå
ç´
filter-mappingå
ç´ ä½äºweb.xmlæä»¶ä¸filterå
ç´ ä¹åserlvetå
ç´ ä¹åãå®å
å«å¦ä¸ä¸ä¸ªå¯è½çåå
ç´ ï¼
1ã filter-name è¿ä¸ªå¿
éçå
ç´ å¿
é¡»ä¸ç¨filterå
ç´ å£°ææ¶ç»äºè¿æ»¤å¨çåç§°ç¸å¹é
ã
2ã url-pattern
æ¤å
ç´ å£°æä¸ä¸ªä»¥ææ ï¼/ï¼å¼å§ç模å¼ï¼å®æå®è¿æ»¤å¨åºç¨çURLãææfilter-mappingå
ç´ ä¸å¿
é¡»æä¾url-patternæ
servlet-nameãä½ä¸è½å¯¹å个filter-mappingå
ç´ æä¾å¤ä¸ªurl-patternå
ç´ é¡¹ãå¦æå¸æè¿æ»¤å¨éç¨äºå¤ä¸ªæ¨¡å¼ï¼å¯éå¤
æ´ä¸ªfilter-mappingå
ç´ ã
3ã servlet-name
æ¤å
ç´ ç»åºä¸ä¸ªåç§°ï¼æ¤åç§°å¿
é¡»ä¸å©ç¨servletå
ç´ ç»äºservletæJSP页é¢çåç§°ç¸å¹é
ãä¸è½ç»å个filter-mappingå
ç´ æä¾
å¤ä¸ªservlet-nameå
ç´ é¡¹ãå¦æå¸æè¿æ»¤å¨éåäºå¤ä¸ªservletåï¼å¯éå¤è¿ä¸ªfilter-mappingå
ç´ ã
ä¸é¢ä¸¾ä¸ä¸ªä¾åï¼
xml version="1.0" encoding="ISO-8859-1"?>
DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<filter>
<filter-name>MyFilterfilter-name>
<filter-class>myPackage.FilterClassfilter-class>
filter>
<filter-mapping>
<filter-name>MyFilterfilter-name>
<url-pattern>/someDirectory/SomePage.jspurl-pattern>
filter-mapping>
web-app>
1.5 ç¦ç¨æ¿æ´»å¨servlet
å¨å¯¹èµæºåºç¨è¿æ»¤å¨æ¶ï¼å¯éè¿æå®è¦åºç¨è¿æ»¤å¨çURLæ¨¡å¼æservlet忥宿ã妿æä¾servletåï¼åæ¤åç§°å¿
é¡»ä¸web.xmlç
servletå
ç´ ä¸ç»åºçåç§°ç¸å¹é
ãå¦æä½¿ç¨åºç¨å°ä¸ä¸ªserlvetçURL模å¼ï¼åæ¤æ¨¡å¼å¿
é¡»ä¸å©ç¨web.xmlçå
ç´ servlet-
mappingæå®ç模å¼ç¸å¹é
ã使¯ï¼å¤æ°æå¡å¨ä½¿ç¨“æ¿æ´»å¨servlet”为servletä½ç»ä¸ä¸ªç¼ºççURLï¼http:
//host/WebAppPrefix/servlet/ServletNameãéè¦ä¿è¯ç¨æ·ä¸å©ç¨è¿ä¸ªURL访é®servletï¼è¿æ ·ä¼ç»è¿è¿æ»¤å¨
设置ï¼ã
ä¾å¦ï¼åå¦å©ç¨filteråfilter-mappingæç¤ºå为SomeFilterçè¿æ»¤å¨åºç¨å°å为SomeServletçservletï¼åå¦ä¸ï¼
<filter>
<filter-name>SomeFilterfilter-name>
<filter-class>somePackage.SomeFilterClassfilter-class>
<filter>
<filter-mapping>
<filter-name>SomeFilterfilter-name>
<servlet-name>SomeServletservlet-name>
<filter-mapping>
æ¥çï¼ç¨servletåservlet-mappingè§å®URL http://host/webAppPrefix/Blah åºè¯¥è°ç¨SomeSerlvetï¼å¦ä¸æç¤ºï¼
<filter>
<filter-name>SomeFilterfilter-name>
<filter-class>somePackage.SomeFilterClassfilter-class>
filter>
<filter-mapping>
<filter-name>SomeFilterfilter-name>
<servlet-name>/Blahservlet-name>
<filter-mapping>
ç°å¨ï¼å¨å®¢æ·æºä½¿ç¨URL http://host/webAppPrefix/Blah æ¶å°±ä¼è°ç¨è¿æ»¤å¨ãè¿æ»¤å¨ä¸åºç¨å°
http://host/webAppPrefix/servlet/SomePackage.SomeServletClassã
尽管æå
³éæ¿æ´»å¨çæå¡å¨ä¸ç¨æ¹æ³ã使¯ï¼å¯ç§»æ¤æå¼ºçæ¹æ³æ¶éæ°æ å°Webåºç¨éç/servlet模å¼ï¼è¿æ ·ä½¿ææå
嫿¤æ¨¡å¼ç请æ±è¢«éå°ç¸åç
servletä¸ã为äºéæ°æ å°æ¤æ¨¡å¼ï¼é¦å
åºè¯¥å»ºç«ä¸ä¸ªç®åçservletï¼å®æå°ä¸æ¡éè¯¯æ¶æ¯ï¼æéå®åç¨æ·å°é¡¶å±é¡µãç¶åï¼ä½¿ç¨servletå
servlet-mappingå
ç´ åéå
å«/servlet模å¼ç请æ±å°è¯¥servletãç¨åºæ¸
å9-1ç»åºäºä¸ä¸ªç®ççä¾åã
ç¨åºæ¸
å9-1 web.xmlï¼éå®å缺çservlet URLçæå½ï¼
xml version="1.0" encoding="ISO-8859-1"?>
DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>Errorservlet-name>
<servlet-class>somePackage.ErrorServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>Errorservlet-name>
<url-pattern>/servlet/*url-pattern>
servlet-mapping>
<web-app>
è§£å³ä¹±ç
web.xmlå é ç½®
<!-- è¿æ»¤å¨ -->
<filter>
<filter-name>Filter</filter-name>
<filter-class>
com.util.EncodingFilter<!-- è¿æ»¤å¨ç±» -->
</filter-class>
<init-param>
<param-name>Encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
EncodingFilter.java
package com.hibernate.util;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodingFilter implements Filter {
protected FilterConfig config;
protected String Encoding = null;
public void init(FilterConfig config) throws ServletException {
this.config = config;
this.Encoding = config.getInitParameter("Encoding");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (request.getCharacterEncoding() == null) {
if (Encoding != null) {
request.setCharacterEncoding(Encoding);
response.setCharacterEncoding(Encoding);
}
}
chain.doFilter(request,response);
}
public void destroy() {}
}
OK!!!
----------------------------------------------------------------------------------------------------å¾ç®åçè¿æ»¤å¨ï¼å°±æ¯ä¸ºäºè®°å½ä¸ä¸ªurlçè¯·æ±æ¶é´ filter:
- package com.javaeye.wqf;
- import javax.servlet.*;
- public class CounterFilter implements Filter {
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- long start = System.currentTimeMillis();
- System.out.println("Filter start at "+start);
- chain.doFilter(request, response);
- long end = System.currentTimeMillis();
- System.out.println("Filter end at "+end);
- }
- }
- <filter>
- <filter-name>test</filter-name>
- <filter-class>com.javaeye.wqf.CounterFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>test</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
å°±ä¼åç°filter并没æè¿åï¼ä¹å°±æ¯è¯´
- System.out.println("Filter end at "+end);
chain.doFilter(request, response);
æ§è¡å°è¿éæ¶ä¼ä»è¿éè°ç¨å©ä¸çfilteråservletï¼æä»¥è¿ä¸ªè°ç¨å°ä¼æ¯ä¸ä¸ªå¾é¿çè¿ç¨ã
å¨è¿ä¸ªè°ç¨éï¼å°ä¼å®å ¨éè¿requeståresonse廿ä½è¿æ¥ï¼åå¾/åéæ°æ®ï¼å¦æè¿æ¥åºç°å¼å¸¸ï¼å°ç´æ¥å¼¹åºException
ä½ ç代ç éæ²¡ææè·å¼å¸¸ï¼æä»¥å¦æåºç°å¼å¸¸ï¼chain.doFilteråé¢çå°±ä¸ä¼æ§è¡ã
å¯ä»¥æchain.doFilteræ¾å°try finallyç»æä¸ï¼ä¿è¯åç»ä¼è¢«æ§è¡
相关推荐
2. **3.14 åºäºå¸§é´å·®åæ³çè¿å¨ç®æ æ£æµ.rar**:这部分可能讲解了图像平滑处理,例如使用滤波器(如高斯滤波器)来减少噪声或消除图像的不规则部分。...
基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档
内容概要:本文详细介绍了利用虚拟惯性控制技术,使双馈风机参与到三机九节点电力系统的一次调频过程中。首先,文章阐述了双馈风机的基本特性和虚拟惯性控制的工作原理,即通过调节转速响应模块,在电网频率波动时快速提供有功功率支持。接着,构建了一个包含两个双馈风机、一个常规发电机及相关无功源的三机九节点系统模型,并详细描述了各组件之间的连接方式及其参数配置。随后,展示了具体的Matlab/Simulink模型搭建步骤,包括系统结构、模块连接、参数设定等方面的内容。通过仿真实验,验证了所提出的虚拟惯性控制方法在电网频率波动情况下的有效性,结果显示该方法能够在频率波动范围内提供有效的有功功率调节,显著提高了系统的调频效率。 适合人群:对电力系统调频技术和双馈风机控制感兴趣的科研人员、工程师和技术爱好者。 使用场景及目标:适用于希望深入了解双馈风机在电力系统中发挥调频作用的研究者,旨在探索如何通过改进控制策略提升电力系统的稳定性和可靠性。 其他说明:文中提供了详细的仿真代码片段和关键算法解析,有助于读者更好地理解和复现研究成果。同时,强调了参数调整的重要性,并给出了优化建议。
内容概要:本文详细介绍了下垂控制的两电平三相桥式逆变器的工作原理、控制策略及MATLAB仿真实现。首先解释了逆变器能够根据负载变化自动调整输出电压的频率和幅值,确保输出稳定。文中重点讨论了ABC到dq坐标系的解耦变换方法,以及电压电流双闭环控制的具体实现步骤。此外,还深入探讨了下垂控制的作用及其核心方程,展示了如何通过MATLAB进行仿真测试,验证控制策略的有效性。 适合人群:从事电力电子、自动化控制领域的研究人员和技术人员,尤其是对逆变器控制策略感兴趣的读者。 使用场景及目标:适用于研究和开发微电网和分布式电源系统中的逆变器控制策略。主要目标是帮助读者理解下垂控制的工作机制,掌握电压电流双闭环控制的设计方法,并能够在MATLAB环境中进行相关仿真。 其他说明:文中提供的MATLAB代码和仿真模型可以作为实际项目的参考,有助于提高逆变器系统的稳定性和响应速度。同时,文中提到的调试经验和常见问题也为实际应用提供了宝贵的指导。
内容概要:本文详细介绍了直驱式永磁风电并网控制系统在Simulink中的建模与实现,尤其是最大功率追踪(MPPT)控制。首先,文章讲解了风机建模的基本原理,包括风力机特性方程及其关键参数如空气密度、扫掠面积、风速和风能利用系数等。接着,讨论了最大功率追踪控制的方法,特别是爬山法的具体实现步骤。最后,文章展示了如何将这两部分内容整合成完整的最大功率追踪运行程序,并提到了一些实用技巧,如永磁同步电机参数设置、锁相环设计、仿真步长选择等。 适合人群:从事风力发电系统设计与仿真的工程师和技术人员,以及对新能源技术和电力电子感兴趣的科研人员。 使用场景及目标:适用于希望深入了解直驱式永磁风电并网控制原理的研究者,或者正在参与相关项目开发的技术团队。主要目标是帮助读者掌握基于Simulink的最大功率追踪控制方法,提高风力发电系统的效率和可靠性。 其他说明:文中提供了大量具体的Matlab/Simulink代码片段和配置建议,便于读者快速上手实践。同时强调了理论与实际相结合的重要性,鼓励读者根据实际情况调整模型参数,确保仿真结果贴近现实工况。
内容概要:本文详细介绍了基于Matlab/Simulink平台构建的DSTATCOM无功补偿风电并网模型。该模型包括两种不同类型的风力发电机(双馈风机DFIG和感应风机),并通过DSTATCOM装置对风电并网过程中可能出现的电压波动进行有效补偿。文中通过具体的仿真案例展示了在风速突变情况下,DSTATCOM如何迅速响应并稳定电压,确保电力系统的可靠运行。此外,文章还探讨了DSTATCOM在低电压穿越方面的应用及其控制策略。 适合人群:从事风电并网研究的技术人员、电力系统工程师以及相关领域的研究人员。 使用场景及目标:适用于希望深入了解风电并网技术细节的研究者和技术开发者,旨在帮助他们掌握DSTATCOM的工作原理及其在实际工程中的应用方法。 其他说明:文章提供了详细的仿真代码示例和参数调整技巧,有助于读者更好地理解和实践DSTATCOM在风电并网中的重要作用。
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 编译闪电般迅速,并发性能卓越,部署轻松简单!Go 语言以极简设计理念和出色工程性能,成为云原生时代的首选编程语言。从 Docker 到 Kubernetes,全球顶尖科技企业都在采用 Go。点击了解 Go 语言的核心优势、实战窍门和未来走向,开启高效编程的全新体验!
本电路默认最大功率追踪电压为18V。 太阳能板最大功率点电压VMPPT=1.205×(1+(Rmh1+Rmh2)/Rml)。 充电电压不能大于25V,最大充电电流小于等于4A
一类四正则小世界网络的生成树数目的算法.pdf
内容概要:本文详细介绍了基于Matlab 2021a的异步电机矢量控制系统中电流滞环控制的实现过程。首先,文章解释了电流环的整体结构,包括定子电流的坐标变换、转矩分量和励磁分量的分离以及旋转变压器模块的应用。接着,展示了电流滞环控制的核心代码,强调了带积分修正的滞环控制机制,并讨论了SVPWM模块的实现技巧。此外,文章探讨了速度环PI参数的自整定设计、谐波分析、磁链观测器的改进方案以及仿真加速技巧。最后,分享了一些实用的调试经验和仿真优化方法,如参数自适应调整、变步长求解器的选择和数据存储格式的优化。 适合人群:从事电机控制领域的研究人员和技术人员,尤其是对异步电机矢量控制和电流滞环控制感兴趣的读者。 使用场景及目标:适用于希望深入了解异步电机矢量控制系统中电流滞环控制实现细节的研究人员和技术人员。目标是帮助读者掌握电流滞环控制的关键技术和调试技巧,提高仿真实践能力。 其他说明:文中提供了丰富的代码片段和调试经验,有助于读者更好地理解和应用所介绍的技术。同时,报告中还包括详细的故障分析和解决方案,确保读者能够避免常见陷阱并顺利进行仿真。
内容概要:本文详细探讨了储能系统中双向DC/DC变换器并联运行时的下垂控制技术及其电流分配优化方法。首先介绍了下垂控制的基本概念,即通过虚拟电阻实现电流按比例分配,避免个别模块过载或欠载。接着讨论了电压补偿机制,防止负载变化引起母线电压大幅波动。文中提供了具体的Python代码示例,展示了如何模拟和实现下垂控制以及电压补偿。此外,还涉及了参数整定技巧,如虚拟电阻的选择、下垂系数的调整,并提出了动态虚拟阻抗的概念。最后,强调了实际调试过程中需要注意的问题,如线路阻抗的影响、低频振荡的抑制等。 适合人群:从事电力电子、储能系统设计与维护的技术人员,对下垂控制感兴趣的科研人员。 使用场景及目标:适用于储能系统的设计与优化,特别是多个双向DC/DC变换器并联运行的场合。主要目标是提高系统的稳定性和效率,确保电流均匀分配,同时保持良好的电压质量。 其他说明:文中提供的代码片段和调试经验有助于理解和实施下垂控制技术,对于实际工程项目具有较高的参考价值。
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!
内容概要:本文详细介绍了威纶通触摸屏与施耐德ATV12变频器之间的Modbus通讯方法,涵盖硬件接线、参数设置、控制程序编写以及调试技巧。首先,文章讲解了正确的硬件连接方式,强调了接线规范和注意事项,如使用带屏蔽的双绞线并确保正确接地。接着,针对ATV12变频器的具体参数设置进行了详尽说明,包括通信模式的选择、波特率、校验位等重要参数的配置。随后,文章展示了如何在威纶通触摸屏上创建Modbus RTU设备,并提供了具体的配置参数和控制命令示例。此外,文中还分享了一些常见的调试问题及其解决办法,如通讯超时、频率设定异常等。最后,给出了实用的调试建议,如使用串口助手抓包分析和加入通讯心跳检测等功能。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些负责PLC编程、HMI界面开发以及设备集成工作的专业人员。 使用场景及目标:适用于需要将威纶通触摸屏与施耐德ATV12变频器进行Modbus通讯连接的实际工程项目中,帮助技术人员顺利完成设备间的通讯配置,确保系统稳定可靠运行。 其他说明:本文不仅提供了详细的理论指导,还结合了丰富的实践经验,能够有效地提高读者在实际工作中解决问题的能力。同时提醒读者,在进行相关操作前务必仔细阅读官方文档,避免因误操作造成不必要的损失。
内容概要:本文详细记录了BLDC(无刷直流电机)在空载和带载条件下的转速阶跃响应及抗负载扰动的实验过程和结果。通过对不同条件下电机转速的变化进行模拟和实际测量,探讨了电机在不同工况下的表现及其背后的控制机制。文中不仅提供了具体的Python和C代码片段用于解释控制逻辑,还讨论了PID控制器的参数调整方法及其对电机性能的影响。此外,作者还分享了一些实验中遇到的问题及解决方案,如霍尔信号处理、PWM占空比控制、电流环检测等。 适合人群:从事电机控制研究的技术人员、电子工程专业的学生、对BLDC电机有兴趣的研究爱好者。 使用场景及目标:①理解BLDC电机在不同负载条件下的动态特性;②掌握PID控制器参数调整技巧;③学习如何处理电机控制中的常见问题,如霍尔信号处理、PWM控制等。 其他说明:文章通过生动的比喻和详细的代码解析,使复杂的电机控制概念变得易于理解。同时,作者分享了许多实践经验,有助于读者更好地理解和应用相关知识。
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 编译闪电般迅速,并发性能卓越,部署轻松简单!Go 语言以极简设计理念和出色工程性能,成为云原生时代的首选编程语言。从 Docker 到 Kubernetes,全球顶尖科技企业都在采用 Go。点击了解 Go 语言的核心优势、实战窍门和未来走向,开启高效编程的全新体验!
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 编译闪电般迅速,并发性能卓越,部署轻松简单!Go 语言以极简设计理念和出色工程性能,成为云原生时代的首选编程语言。从 Docker 到 Kubernetes,全球顶尖科技企业都在采用 Go。点击了解 Go 语言的核心优势、实战窍门和未来走向,开启高效编程的全新体验!
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!
互联网大厂裁员背后的经济规律与增长天花板.mp4
内容概要:本文探讨了如何通过MATLAB实现含冰蓄冷装置的冷电联供型微网经济优化运行。首先介绍了优化模型的构建,涵盖了光伏、风电、微型燃气轮机等能源设备以及电储能和冰蓄冷储能装置。接着详细解释了目标设定与求解方法,采用了混合线性整数规划并通过CPLEX求解器进行求解。随后进行了算例分析,比较了不同储能模式下的运行成本,证明了电储能和冰蓄冷储能结合能够显著降低成本。最后讨论了模型的局限性及其改进方向。 适合人群:从事能源管理和优化的研究人员和技术人员,尤其是对MATLAB和CPLEX有一定了解的从业者。 使用场景及目标:适用于希望优化冷电联供型微网运行成本的企业和个人。主要目标是通过合理的能源调度和储能策略,减少运行成本,提高能源利用效率。 其他说明:文中提供的MATLAB代码片段有助于理解和实现具体的优化模型。此外,还指出了模型的实际应用中需要注意的问题,如设备老化、光伏预测误差等。