{"id":453,"date":"2020-04-01T18:59:56","date_gmt":"2020-04-01T10:59:56","guid":{"rendered":"https:\/\/qtvz.com\/?p=453"},"modified":"2020-04-03T17:49:54","modified_gmt":"2020-04-03T09:49:54","slug":"java-web-xml%e8%af%a6%e8%a7%a3","status":"publish","type":"post","link":"https:\/\/qtvz.com\/453.html","title":{"rendered":"JAVA Web.xml\u8be6\u89e3"},"content":{"rendered":"<!--wp-compress-html--><!--wp-compress-html no compression-->\n<p>\u539f\u6587\u94fe\u63a5\uff1ahttps:\/\/blog.csdn.net\/believejava\/article\/details\/43229361<\/p>\n\n\n<h2><strong>1.web.xml\u52a0\u8f7d\u8fc7\u7a0b\uff08\u6b65\u9aa4\uff09<\/strong><\/h2>\n\n\n<p> \u9996\u5148\u7b80\u5355\u8bb2\u4e00\u4e0b\uff0cweb.xml\u7684\u52a0\u8f7d\u8fc7\u7a0b\u3002\u5f53\u542f\u52a8\u4e00\u4e2a<a href=\"https:\/\/qtvz.com\/tag\/web\" class=\"tag-tooltip\" data-toggle=\"tooltip\" title=\"\u67e5\u770b\u66f4\u591a\u5173\u4e8e WEB \u7684\u6587\u7ae0\" target=\"_blank\">WEB<\/a>\u9879\u76ee\u65f6\uff0c\u5bb9\u5668\u5305\u62ec\uff08JBoss\u3001Tomcat\u7b49\uff09\u9996\u5148\u4f1a\u8bfb\u53d6\u9879\u76eeweb.xml\u914d\u7f6e\u6587\u4ef6\u91cc\u7684\u914d\u7f6e\uff0c\u5f53\u8fd9\u4e00\u6b65\u9aa4\u6ca1\u6709\u51fa\u9519\u5e76\u4e14\u5b8c\u6210\u4e4b\u540e\uff0c\u9879\u76ee\u624d\u80fd\u6b63\u5e38\u5730\u88ab\u542f\u52a8\u8d77\u6765\u3002 <\/p>\n\n\n<p>1\u3001 \u542f\u52a8<a href=\"https:\/\/qtvz.com\/tag\/web\" class=\"tag-tooltip\" data-toggle=\"tooltip\" title=\"\u67e5\u770b\u66f4\u591a\u5173\u4e8e WEB \u7684\u6587\u7ae0\" target=\"_blank\">WEB<\/a>\u9879\u76ee\u7684\u65f6\u5019\uff0c\u5bb9\u5668\u9996\u5148\u4f1a\u53bb\u5b83\u7684\u914d\u7f6e\u6587\u4ef6web.xml\u8bfb\u53d6\u4e24\u4e2a\u8282\u70b9:&nbsp; &lt;listener&gt;&lt;\/listener&gt;\u548c&lt;context-param&gt;&lt;\/context-param&gt;\u3002 <\/p>\n\n\n<p>2\u3001 \u7d27\u63a5\u7740\uff0c\u5bb9\u5668\u521b\u5efa\u4e00\u4e2aServletContext\uff08Application\uff09\uff0c\u8fd9\u4e2aWEB\u9879\u76ee\u6240\u6709\u90e8\u5206\u90fd\u5c06\u5171\u4eab\u8fd9\u4e2a\u4e0a\u4e0b\u6587\u3002 <\/p>\n\n\n<p>3\u3001 \u5bb9\u5668\u4ee5&lt;context-param&gt;&lt;\/context-param&gt;\u7684name\u4f5c\u4e3a\u952e\uff0cvalue\u4f5c\u4e3a\u503c\uff0c\u5c06\u5176\u8f6c\u5316\u4e3a\u952e\u503c\u5bf9\uff0c\u5b58\u5165ServletContext\u3002 <\/p>\n\n\n<p>4\u3001 \u5bb9\u5668\u521b\u5efa\u4e2d\u7684\u7c7b\u5b9e\u4f8b\uff0c\u6839\u636e\u914d\u7f6e\u7684class\u7c7b\u8def\u5f84\u6765\u521b\u5efa\u76d1\u542c\uff0c\u5728\u76d1\u542c\u4e2d\u4f1a\u6709contextInitialized(ServletContextEvent args)\u521d\u59cb\u5316\u65b9\u6cd5\uff0c\u542f\u52a8Web\u5e94\u7528\u65f6\uff0c\u7cfb\u7edf\u8c03\u7528Listener\u7684\u8be5\u65b9\u6cd5\uff0c\u5728\u8fd9\u4e2a\u65b9\u6cd5\u4e2d\u83b7\u5f97\uff1aServletContext application = ServletContextEvent.getServletContext();&nbsp;context-param\u7684\u503c =&nbsp;application.getInitParameter(\"context-param\u7684\u952e\");&nbsp;\u5f97\u5230\u8fd9\u4e2acontext-param\u7684\u503c\u4e4b\u540e\uff0c\u4f60\u5c31\u53ef\u4ee5\u505a\u4e00\u4e9b\u64cd\u4f5c\u4e86\u3002 <\/p>\n\n\n<p>5\u3001 \u4e3e\u4f8b\uff1a\u4f60\u53ef\u80fd\u60f3\u5728\u9879\u76ee\u542f\u52a8\u4e4b\u524d\u5c31\u6253\u5f00\u6570\u636e\u5e93\uff0c\u90a3\u4e48\u8fd9\u91cc\u5c31\u53ef\u4ee5\u5728\u4e2d\u8bbe\u7f6e\u6570\u636e\u5e93\u7684\u8fde\u63a5\u65b9\u5f0f\uff08\u9a71\u52a8\u3001url\u3001user\u3001password\uff09\uff0c\u5728\u76d1\u542c\u7c7b\u4e2d\u521d\u59cb\u5316\u6570\u636e\u5e93\u7684\u8fde\u63a5\u3002\u8fd9\u4e2a\u76d1\u542c\u662f\u81ea\u5df1\u5199\u7684\u4e00\u4e2a\u7c7b\uff0c\u9664\u4e86\u521d\u59cb\u5316\u65b9\u6cd5\uff0c\u5b83\u8fd8\u6709\u9500\u6bc1\u65b9\u6cd5\uff0c\u7528\u4e8e\u5173\u95ed\u5e94\u7528\u524d\u91ca\u653e\u8d44\u6e90\u3002\u6bd4\u5982:\u8bf4\u6570\u636e\u5e93\u8fde\u63a5\u7684\u5173\u95ed\uff0c\u6b64\u65f6\uff0c\u8c03\u7528contextDestroyed(ServletContextEvent args)\uff0c\u5173\u95edWeb\u5e94\u7528\u65f6\uff0c\u7cfb\u7edf\u8c03\u7528Listener\u7684\u8be5\u65b9\u6cd5\u3002 <\/p>\n\n\n<p>6\u3001 \u63a5\u7740\uff0c\u5bb9\u5668\u4f1a\u8bfb\u53d6&lt;filter&gt;&lt;\/filter&gt;\uff0c\u6839\u636e\u6307\u5b9a\u7684\u7c7b\u8def\u5f84\u6765\u5b9e\u4f8b\u5316\u8fc7\u6ee4\u5668\u3002 <\/p>\n\n\n<p>7\u3001 \u4ee5\u4e0a\u90fd\u662f\u5728WEB\u9879\u76ee\u8fd8\u6ca1\u6709\u5b8c\u5168\u542f\u52a8\u8d77\u6765\u7684\u65f6\u5019\u5c31\u5df2\u7ecf\u5b8c\u6210\u4e86\u7684\u5de5\u4f5c\u3002\u5982\u679c\u7cfb\u7edf\u4e2d\u6709Servlet\uff0c\u5219Servlet\u662f\u5728\u7b2c\u4e00\u6b21\u53d1\u8d77\u8bf7\u6c42\u7684\u65f6\u5019\u88ab\u5b9e\u4f8b\u5316\u7684\uff0c\u800c\u4e14\u4e00\u822c\u4e0d\u4f1a\u88ab\u5bb9\u5668\u9500\u6bc1\uff0c\u5b83\u53ef\u4ee5\u670d\u52a1\u4e8e\u591a\u4e2a\u7528\u6237\u7684\u8bf7\u6c42\u3002\u6240\u4ee5\uff0cServlet\u7684\u521d\u59cb\u5316\u90fd\u8981\u6bd4\u4e0a\u9762\u63d0\u5230\u7684\u90a3\u51e0\u4e2a\u8981\u8fdf\u3002 <\/p>\n\n\n<p>8\u3001 \u603b\u7684\u6765\u8bf4\uff0cweb.xml\u7684\u52a0\u8f7d\u987a\u5e8f\u662f:&lt;context-param&gt;<strong>-&gt;<\/strong>&lt;listener&gt;<strong>-&gt;<\/strong>&lt;filter&gt;<strong>-&gt;<\/strong>&lt;servlet&gt;\u3002\u5176\u4e2d\uff0c\u5982\u679cweb.xml\u4e2d\u51fa\u73b0\u4e86\u76f8\u540c\u7684\u5143\u7d20\uff0c\u5219\u6309\u7167\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u51fa\u73b0\u7684\u5148\u540e\u987a\u5e8f\u6765\u52a0\u8f7d\u3002 <\/p>\n\n\n<p>9\u3001 \u5bf9\u4e8e\u67d0\u7c7b\u5143\u7d20\u800c\u8a00\uff0c\u4e0e\u5b83\u4eec\u51fa\u73b0\u7684\u987a\u5e8f\u662f\u6709\u5173\u7684\u3002\u4ee5\u4e3a\u4f8b\uff0cweb.xml\u4e2d\u5f53\u7136\u53ef\u4ee5\u5b9a\u4e49\u591a\u4e2a\uff0c\u4e0e\u76f8\u5173\u7684\u4e00\u4e2a\u5143\u7d20\u662f\uff0c\u6ce8\u610f\uff0c\u5bf9\u4e8e\u62e5\u6709\u76f8\u540c\u7684\u548c\u5143\u7d20\u800c\u8a00\uff0c\u5fc5\u987b\u51fa\u73b0\u5728\u4e4b\u540e\uff0c\u5426\u5219\u5f53\u89e3\u6790\u5230\u65f6\uff0c\u5b83\u6240\u5bf9\u5e94\u7684\u8fd8\u672a\u5b9a\u4e49\u3002web\u5bb9\u5668\u542f\u52a8\u521d\u59cb\u5316\u6bcf\u4e2a\u65f6\uff0c\u6309\u7167\u51fa\u73b0\u7684\u987a\u5e8f\u6765\u521d\u59cb\u5316\u7684\uff0c\u5f53\u8bf7\u6c42\u8d44\u6e90\u5339\u914d\u591a\u4e2a\u65f6\uff0c\u62e6\u622a\u8d44\u6e90\u662f\u6309\u7167\u5143\u7d20\u51fa\u73b0\u7684\u987a\u5e8f\u6765\u4f9d\u6b21\u8c03\u7528doFilter()\u65b9\u6cd5\u7684\u3002\u540c\u7c7b\u4f3c\uff0c\u6b64\u5904\u4e0d\u518d\u8d58\u8ff0\u3002 <\/p>\n\n\n<h2><strong>2.web.xml\u6807\u7b7e\u8be6\u89e3<\/strong><\/h2>\n\n\n<p><strong>1. XML\u6587\u6863\u6709\u6548\u6027\u68c0\u67e5<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><code><!DOCTYPE web-app PUBLIC\"-\/\/Sun Microsystems, Inc.\/\/DTD Web Application 2.3\/\/EN\"\"https:\/\/qtvz.com\/redirect\/aHR0cDovL2phdmEuc3VuLmNvbS9kdGQvd2ViLWFwcF8yXzMuZHRk\" target=\"_blank\" ><\/code><\/pre>\n\n\n<p>\u8fd9\u6bb5\u4ee3\u7801\u6307\u5b9a\u6587\u4ef6\u7c7b\u578b\u5b9a\u4e49\uff08DTD\uff09\uff0c\u53ef\u4ee5\u901a\u8fc7\u5b83\u68c0\u67e5XML\u6587\u6863\u7684\u6709\u6548\u6027\u3002\u4e0b\u9762\u663e\u793a\u7684\u5143\u7d20\u6709\u51e0\u4e2a\u7279\u6027\uff0c\u8fd9\u4e9b\u7279\u6027\u544a\u8bc9\u6211\u4eec\u5173\u4e8eDTD\u7684\u4fe1\u606f\uff1a&nbsp;<\/p>\n\n\n<ul><li> web-app\u5b9a\u4e49\u8be5\u6587\u6863\uff08\u90e8\u7f72\u63cf\u8ff0\u7b26\uff0c\u4e0d\u662fDTD\u6587\u4ef6\uff09\u7684\u6839\u5143\u7d20&nbsp; <\/li><li> PUBLIC\u610f\u5473\u7740DTD\u6587\u4ef6\u53ef\u4ee5\u88ab\u516c\u5f00\u4f7f\u7528&nbsp; <\/li><li> -\/\/Sun Microsystems, Inc.\/\/DTD Web Application 2.3\/\/EN\u201d\u610f\u5473\u7740DTD\u7531Sun&nbsp;Microsystems, Inc.\u7ef4\u62a4\u3002\u8be5\u4fe1\u606f\u4e5f\u8868\u793a\u5b83\u63cf\u8ff0\u7684\u6587\u6863\u7c7b\u578b\u662fDTD Web Application 2.3\uff0c\u800c\u4e14DTD\u662f\u7528\u82f1\u6587\u4e66\u5199\u7684\u3002 <\/li><li> URL\u201c<a href=\"https:\/\/qtvz.com\/redirect\/aHR0cDovL2phdmEuc3VuLmNvbS9kdGQvd2ViLWFwcF8yXzMuZHRk\" target=\"_blank\">http:\/\/java.sun.com\/dtd\/web-app_2_3.dtd<\/a>\u201d\u8868\u793aD\u6587\u4ef6\u7684\u4f4d\u7f6e\u3002 <\/li><\/ul>\n\n\n<p><strong>2. &lt;web-app&gt;&lt;\/web-app&gt;<\/strong><\/p>\n\n\n<p> \u90e8\u7f72\u63cf\u8ff0\u7b26\u7684\u6839\u5143\u7d20\u662f&lt;web-app&gt;\uff0cDTD\u6587\u4ef6\u89c4\u5b9a&lt;web-app&gt;\u5143\u7d20\u7684\u5b50\u5143\u7d20\u7684\u8bed\u6cd5\u5982\u4e0b\uff1a <\/p>\n\n\n<pre class=\"wp-block-code\"><code><!ELEMENT web-app (icon?, display-name?, description?,distributable?, context-param*, filter*, filter-mapping*,listener*, servlet*, servlet-mapping*, session-config?,mime-mapping*, welcome-file-list?,error-page*, taglib*, resource-env-ref*, resource-ref*,security-constraint*, login-config?, security-role*,env-entry*,ejb-ref*, ejb-local-ref*)> <\/code><\/pre>\n\n\n<p>\u6b63\u5982\u60a8\u6240\u770b\u5230\u7684\uff0c\u8fd9\u4e2a\u5143\u7d20\u542b\u670923\u4e2a\u5b50\u5143\u7d20\uff0c\u800c\u4e14\u5b50\u5143\u7d20\u90fd\u662f\u53ef\u9009\u7684\u3002\u95ee\u53f7\uff08?\uff09\u8868\u793a\u5b50\u5143\u7d20\u662f\u53ef\u9009\u7684\uff0c\u800c\u4e14\u53ea\u80fd\u51fa\u73b0\u4e00\u6b21\u3002\u661f\u53f7\uff08*\uff09\u8868\u793a\u5b50\u5143\u7d20\u53ef\u5728\u90e8\u7f72\u63cf\u8ff0\u7b26\u4e2d\u51fa\u73b0\u96f6\u6b21\u6216\u591a\u6b21\u3002\u6709\u4e9b\u5b50\u5143\u7d20\u8fd8\u53ef\u4ee5\u6709\u5b83\u4eec\u81ea\u5df1\u7684\u5b50\u5143\u7d20\u3002web.xml\u6587\u4ef6\u4e2d\u5143\u7d20\u58f0\u660e\u7684\u662f\u4e0b\u9762\u6bcf\u4e2a\u5b50\u5143\u7d20\u7684\u58f0\u660e\u3002\u4e0b\u9762\u8bb2\u8ff0\u90e8\u7f72\u63cf\u8ff0\u7b26\u4e2d\u53ef\u80fd\u5305\u542b\u7684\u6240\u6709\u5b50\u5143\u7d20\u3002<\/p>\n\n\n<p>\u6ce8\u610f\uff1a\u5728Servlet 2.3\u4e2d\uff0c\u5b50\u5143\u7d20\u5fc5\u987b\u6309\u7167DTD\u6587\u4ef6\u8bed\u6cd5\u63cf\u8ff0\u4e2d\u6307\u5b9a\u7684\u987a\u5e8f\u51fa\u73b0\u3002\u6bd4\u5982\uff1a\u5982\u679c\u90e8\u7f72\u63cf\u8ff0\u7b26\u4e2d\u7684\u5143\u7d20\u6709\u548c\u4e24\u4e2a\u5b50\u5143\u7d20\uff0c\u5219\u5b50\u5143\u7d20\u5fc5\u987b\u51fa\u73b0\u5728\u5b50\u5143\u7d20\u4e4b\u524d\u3002\u5728Servlet2.4\u4e2d\uff0c\u987a\u5e8f\u5e76\u4e0d\u91cd\u8981\u3002<\/p>\n\n\n<p><strong>3. &lt;display-name&gt;&lt;\/display-name&gt;<\/strong><\/p>\n\n\n<p>test-hwp-web-application\u5b9a\u4e49\u4e86web\u5e94\u7528\u7684\u540d\u79f0\uff0c\u53ef\u4ee5\u5728http:\/\/localhost:8080\/manager\/html\u4e2d\u663e\u793a\u3002\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/qtvz.com\/wp-content\/uploads\/2020\/04\/d41d8cd98f00b204e9800998ecf8427e\" alt=\"\" alt=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c1\u5f20\" title=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c1\u5f20-Qtvz\" ><\/figure>\n\n\n<h3><strong>4. &lt;distributable\/&gt;<\/strong><\/h3>\n\n\n<p>&lt;distributable\/&gt;\u53ef\u4ee5\u4f7f\u7528distributable\u5143\u7d20\u6765\u544a\u8bc9servlet\/JSP\u5bb9\u5668\uff0cWeb\u5bb9\u5668\u4e2d\u90e8\u7f72\u7684\u5e94\u7528\u7a0b\u5e8f\u9002\u5408\u5728\u5206\u5e03\u5f0f\u73af\u5883\u4e0b\u8fd0\u884c\u3002<\/p>\n\n\n<h3><strong>5. &lt;context-param&gt;&lt;\/context-param&gt;<\/strong><\/h3>\n\n\n<p>\u4f7f\u7528\u4e0a\u4e0b\u6587\u521d\u59cb\u5316\u53c2\u6570<\/p>\n\n\n<pre class=\"wp-block-code\"><code><!--****************************\u4e0a\u4e0b\u6587\u521d\u59cb\u5316\u53c2\u6570***************************-->\n<context-param>\n    <param-name>webAppRootKey<\/param-name>\n    <param-value>business.root<\/param-value>\n<\/context-param>\n<!-- spring config -->\n<context-param>\n    <param-name>contextConfigLocation<\/param-name>\n    <param-value>\/WEB-INF\/spring-configuration\/*.xml<\/param-value>\n<\/context-param><\/code><\/pre>\n\n\n<p>5.1\u89e3\u91ca\uff1a<\/p>\n\n\n<p>\u5143\u7d20\u542b\u6709\u4e00\u5bf9\u53c2\u6570\u540d\u548c\u53c2\u6570\u503c\uff0c\u7528\u4f5c\u5e94\u7528\u7684Servlet\u4e0a\u4e0b\u6587\u521d\u59cb\u5316\u53c2\u6570\uff0c\u53c2\u6570\u540d\u5728\u6574\u4e2aWeb\u5e94\u7528\u4e2d\u5fc5\u987b\u662f\u60df\u4e00\u7684\uff0c\u5728web\u5e94\u7528\u7684\u6574\u4e2a\u751f\u547d\u5468\u671f\u4e2d\u4e0a\u4e0b\u6587\u521d\u59cb\u5316\u53c2\u6570\u90fd\u5b58\u5728\uff0c\u4efb\u610f\u7684Servlet\u548cjsp\u90fd\u53ef\u4ee5\u968f\u65f6\u968f\u5730\u8bbf\u95ee\u5b83\u3002<\/p>\n\n\n<ul><li> &lt;param-name&gt;\uff1a\u53c2\u6570\u540d <\/li><li> &lt;param-value&gt;\uff1a\u53c2\u6570\u503c\u3002\u4f5c\u4e3a\u9009\u62e9\uff0c\u53ef\u7528&lt;description&gt;\u6765\u63cf\u8ff0\u53c2\u6570\u3002 <\/li><\/ul>\n\n\n<p>5.2 \u4ec0\u4e48\u60c5\u51b5\u4e0b\u4f7f\u7528\uff0c\u4e3a\u4ec0\u4e48\u4f7f\u7528\uff1a<\/p>\n\n\n<p>\u6bd4\u5982\u5b9a\u4e49\u4e00\u4e2a\u7ba1\u7406\u5458email\u5730\u5740\u7528\u6765\u4ece\u7a0b\u5e8f\u53d1\u9001\u9519\u8bef\uff0c\u6216\u8005\u4e0e\u4f60\u6574\u4e2a\u5e94\u7528\u7a0b\u5e8f\u6709\u5173\u7684\u5176\u4ed6\u8bbe\u7f6e\u3002\u4f7f\u7528\u81ea\u5df1\u5b9a\u4e49\u7684\u8bbe\u7f6e\u6587\u4ef6\u9700\u8981\u989d\u5916\u7684\u4ee3\u7801\u548c\u7ba1\u7406\uff1b\u76f4\u63a5\u5728\u4f60\u7684\u7a0b\u5e8f\u4e2d\u4f7f\u7528\u786c\u7f16\u7801\uff08Hard-coding\uff09\u53c2\u6570\u503c\u4f1a\u7ed9\u4f60\u4e4b\u540e\u4fee\u6539\u7a0b\u5e8f\u5e26\u6765\u9ebb\u70e6\uff0c\u66f4\u56f0\u96be\u7684\u662f\uff0c\u8981\u6839\u636e\u4e0d\u540c\u7684\u90e8\u7f72\u4f7f\u7528\u4e0d\u540c\u7684\u8bbe\u7f6e\uff1b\u901a\u8fc7\u8fd9\u79cd\u529e\u6cd5\uff0c\u53ef\u4ee5\u8ba9\u5176\u4ed6\u5f00\u53d1\u4eba\u5458\u66f4\u5bb9\u6613\u627e\u5230\u76f8\u5173\u7684\u53c2\u6570\uff0c\u56e0\u4e3a\u5b83\u662f\u4e00\u4e2a\u7528\u4e8e\u8bbe\u7f6e\u8fd9\u79cd\u53c2\u6570\u7684\u6807\u51c6\u4f4d\u7f6e\u3002<\/p>\n\n\n<p>5.3 Spring\u914d\u7f6e\u6587\u4ef6\uff1a<\/p>\n\n\n<p>\u914d\u7f6eSpring\uff0c\u5fc5\u987b\u9700\u8981\uff0c\u800c\u53ef\u6709\u53ef\u65e0\uff0c\u5982\u679c\u5728web.xml\u4e2d\u4e0d\u5199\u914d\u7f6e\u4fe1\u606f\uff0c\u9ed8\u8ba4\u7684\u8def\u5f84\u662f\/WEB-INF\/applicationContext.xml\uff0c\u5728WEB-INF\u76ee\u5f55\u4e0b\u521b\u5efa\u7684xml\u6587\u4ef6\u7684\u540d\u79f0\u5fc5\u987b\u662fapplicationContext.xml\u3002\u5982\u679c\u662f\u8981\u81ea\u5b9a\u4e49\u6587\u4ef6\u540d\u53ef\u4ee5\u5728web.xml\u91cc\u52a0\u5165contextConfigLocation\u8fd9\u4e2acontext\u53c2\u6570\uff1a\u5728\u91cc\u6307\u5b9a\u76f8\u5e94\u7684xml\u6587\u4ef6\u540d\uff0c\u5982\u679c\u6709\u591a\u4e2axml\u6587\u4ef6\uff0c\u53ef\u4ee5\u5199\u5728\u4e00\u8d77\u5e76\u4ee5\u201c,\u201d\u53f7\u5206\u9694\uff0c\u6bd4\u5982\u5728business-client\u5de5\u7a0b\u4e2d\uff0c\u6211\u4eec\u91c7\u7528\u4e86\u81ea\u5b9a\u4e49\u914d\u7f6e\u65b9\u5f0f\uff0c\u914d\u7f6e\u5982\u4e0b\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\"><code><!-- spring config -->\n<context-param>\n    <param-name>contextConfigLocation<\/param-name>\n    <param-value>\/WEB-INF\/spring-configuration\/*.xml<\/param-value>\n<\/context-param>\n<listener>\n     <listener-class>org.springframework.web.context.ContextLoaderListener<\/listener-class>\n<\/listener><\/code><\/pre>\n\n\n<p> \u5bf9\u5e94\u5de5\u7a0b\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\u6240\u793a\uff1a <\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/qtvz.com\/wp-content\/uploads\/2020\/04\/d41d8cd98f00b204e9800998ecf8427e-1\" alt=\"\" alt=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c2\u5f20\" title=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c2\u5f20-Qtvz\" ><\/figure>\n\n\n<p> \u90e8\u7f72\u5728\u540c\u4e00\u5bb9\u5668\u4e2d\u7684\u591a\u4e2aWeb\u9879\u76ee\uff0c\u8981\u914d\u7f6e\u4e0d\u540c\u7684webAppRootKey\uff0cweb.xml\u6587\u4ef6\u4e2d\u6700\u597d\u5b9a\u4e49webAppRootKey\u53c2\u6570\uff0c\u5982\u679c\u4e0d\u5b9a\u4e49\uff0c\u5c06\u4f1a\u7f3a\u7701\u4e3a\u201cwebapp.root\u201d\uff0c\u5982\u4e0b\uff1a <\/p>\n\n\n<pre class=\"wp-block-code\"><code><!-- \u5e94\u7528\u8def\u5f84  -->  \n<context-param>  \n    <param-name>webAppRootKey<\/param-name>  \n    <param-value>webapp.root<\/param-value>  \n<\/context-param> <\/code><\/pre>\n\n\n<p> \u5f53\u7136\u4e5f\u4e0d\u80fd\u91cd\u590d\uff0c\u5426\u5219\u62a5\u7c7b\u4f3c\u4e0b\u9762\u7684\u9519\u8bef\uff1a <\/p>\n\n\n<p class=\"has-text-color has-vivid-red-color\">Web app root system property already set to different value: 'webapp.root' = [\/home\/user\/tomcat\/webapps\/project1\/] instead of [\/home\/user\/tomcat\/webapps\/project2\/] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!&nbsp;&nbsp;<\/p>\n\n\n<p> \u610f\u601d\u662f\u201cwebapp.root\u201d\u8fd9\u4e2akey\u5df2\u7ecf\u6307\u5411\u4e86\u9879\u76ee1\uff0c\u4e0d\u53ef\u4ee5\u518d\u6307\u5411\u9879\u76ee2\u3002\u591a\u4e2a\u9879\u76ee\u8981\u5bf9webAppRootKey\u8fdb\u884c\u914d\u7f6e\uff0c\u6211\u4eec\u5de5\u7a0b\u4e3b\u8981\u662f\u8ba9log4j\u80fd\u5c06\u65e5\u5fd7\u5199\u5230\u5bf9\u5e94\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\uff0c\u6bd4\u5982\u6211\u4eec\u7684\u9879\u76ee\u7684webAppRootKey\u4e3a <\/p>\n\n\n<pre class=\"wp-block-code\"><code><!\u2014business-client\u5e94\u7528\u8def\u5f84  -->  \n<context-param>  \n    <param-name>webAppRootKey<\/param-name>  \n    <param-value>business.root<\/param-value>  \n<\/context-param>  \n<!\u2014public-base\u5e94\u7528\u8def\u5f84  -->  \n<context-param>  \n    <param-name>webAppRootKey<\/param-name>  \n    <param-value>pubbase.root<\/param-value>  \n<\/context-param>\n <\/code><\/pre>\n\n\n<p>\u8fd9\u6837\u5c31\u4e0d\u4f1a\u51fa\u73b0\u51b2\u7a81\u4e86\u3002\u5c31\u53ef\u4ee5\u5728\u8fd0\u884c\u65f6\u52a8\u6001\u5730\u627e\u5230\u9879\u76ee\u8def\u5f84\uff0c\u5728log4j.properties\u914d\u7f6e\u6587\u4ef6\u4e2d\u53ef\u4ee5\u6309\u4e0b\u9762\u7684\u65b9\u5f0f\u4f7f\u7528${webapp.root}\uff1alog4j.appender.file.File=${webapp.root}\/WEB-INF\/logs\/sample.log\uff0c\u5c31\u53ef\u4ee5\u5728\u8fd0\u884c\u65f6\u52a8\u6001\u5730\u627e\u51fa\u9879\u76ee\u7684\u8def\u5f84\u3002<\/p>\n\n\n<p>5.4 \u591a\u4e2a\u914d\u7f6e\u6587\u4ef6\u5f15\u7528\u5904\u7406\uff1a<\/p>\n\n\n<p>\u5982\u679cweb.xml\u4e2d\u6709contextConfigLocation\u53c2\u6570\u6307\u5b9a\u7684Spring\u914d\u7f6e\u6587\u4ef6\uff0c\u5219\u4f1a\u53bb\u52a0\u8f7d\u76f8\u5e94\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u800c\u4e0d\u4f1a\u53bb\u52a0\u8f7d\/WEB-INF\/\u4e0b\u7684applicationContext.xml\u3002\u4f46\u662f\u5982\u679c\u6ca1\u6709\u6307\u5b9a\u7684\u8bdd\uff0c\u9ed8\u8ba4\u4f1a\u53bb\/WEB-INF\/\u4e0b\u52a0\u8f7dapplicationContext.xml\u3002\u5728\u4e00\u4e2aSpring\u7684\u5b9e\u9645\u9879\u76ee\u4e2d\uff0c\u5982\u679c\u6709\u591a\u4e2aSpring\u914d\u7f6e\u6587\u4ef6\uff0c\u591a\u4e2a\u914d\u7f6e\u6587\u4ef6\u53ef\u4ee5\u5728web.xml\u91cc\u7528\u7a7a\u683c\u5206\u9694\u5199\u5165\uff0c\u5982\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\"><code><context-param>\n   <param-name>contextConfigLocation<\/param-name>\n   <param-value> applicationContext-database.xml,applicationContext.xml<\/param-value>  \n<context-param><\/code><\/pre>\n\n\n<p> \u591a\u4e2a\u914d\u7f6e\u6587\u4ef6\u91cc\u7684\u4ea4\u53c9\u5f15\u7528\u53ef\u4ee5\u7528ref\u7684external\u6216bean\u89e3\u51b3\uff0c <\/p>\n\n\n<pre class=\"wp-block-code\"><code><bean id=\"userService\" class=\"domain.user.service.impl.UserServiceImpl\"> \n   <property name=\"dbbean\">\n      <ref bean=\"dbBean\"\/>\n   <\/property> \n<\/bean><\/code><\/pre>\n\n\n<p> <strong>5.5 \u5728\u4e0d\u540c\u73af\u5883\u4e0b\u5982\u4f55\u83b7\u53d6\uff0c<\/strong> <\/p>\n\n\n<pre class=\"wp-block-code\"><code><context-param>\n   <param-name>param_name<\/param-name>\n   <param-value>param_value<\/param-value>\n<\/context-param><\/code><\/pre>\n\n\n<p>\u6b64\u6240\u8bbe\u5b9a\u7684\u53c2\u6570\uff0c\u5728JSP\u7f51\u9875\u4e2d\u53ef\u4ee5\u4f7f\u7528\u4e0b\u5217\u65b9\u6cd5\u6765\u53d6\u5f97\uff1a${initParam.param_name}<\/p>\n\n\n<p>\u82e5\u5728Servlet\u53ef\u4ee5\u4f7f\u7528\u4e0b\u5217\u65b9\u6cd5\u6765\u83b7\u5f97\uff1aString param_name=getServletContext().getInitParamter(\"param_name\");Servlet\u7684ServletConfig\u5bf9\u8c61\u62e5\u6709\u8be5Servlet\u7684ServletContext\u7684\u4e00\u4e2a\u5f15\u7528\uff0c\u6240\u4ee5\u53ef\u8fd9\u6837\u53d6\u5f97\u4e0a\u4e0b\u6587\u521d\u59cb\u5316\u53c2\u6570\uff1agetServletConfig().getServletContext().getInitParameter()\u4e5f\u53ef\u4ee5\u5728Servlet\u4e2d\u76f4\u63a5\u8c03\u7528getServletContext().getInitParameter()\uff0c\u4e24\u8005\u662f\u7b49\u4ef7\u7684\u3002<\/p>\n\n\n<p><strong>6. &lt;session-config&gt;&lt;\/session-config&gt;<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><code><!-- Set timeout to 120 minutes -->\n<session-config> \n   <session-timeout>120<\/session-timeout> \n<\/session-config> <\/code><\/pre>\n\n\n<p>&nbsp;\u7528\u4e8e\u8bbe\u7f6e\u5bb9\u5668\u7684session\u53c2\u6570\uff0c\u6bd4\u5982\uff1a&nbsp;\u7528\u4e8e\u6307\u5b9ahttp session\u7684\u5931\u6548\u65f6\u95f4\u3002\u9ed8\u8ba4\u65f6\u95f4\u8bbe\u7f6e\u5728\/conf\/web.xml (30 minutes)\u3002\u7528\u6765\u6307\u5b9a\u9ed8\u8ba4\u7684\u4f1a\u8bdd\u8d85\u65f6\u65f6\u95f4\u95f4\u9694\uff0c\u4ee5\u5206\u949f\u4e3a\u5355\u4f4d\u3002\u8be5\u5143\u7d20\u503c\u5fc5\u987b\u4e3a\u6574\u6570\u3002\u5982\u679c&nbsp;session-timeout\u5143\u7d20\u7684\u503c\u4e3a\u96f6\u6216\u8d1f\u6570\uff0c\u5219\u8868\u793a\u4f1a\u8bdd\u5c06\u6c38\u8fdc\u4e0d\u4f1a\u8d85\u65f6\u3002<\/p>\n\n\n<p><strong>7. &lt;listener&gt;&lt;\/listener&gt;<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><code><!--****************************\u76d1\u542c\u5668\u914d\u7f6e*********************************-->\n<!-- Spring\u7684log4j\u76d1\u542c\u5668 -->\n<listener>\n    <listener-class>org.springframework.web.util.Log4jConfigListener<\/listener-class>\n<\/listener>\n<listener>\n    <listener-class>org.springframework.web.context.ContextLoaderListener<\/listener-class>\n<\/listener>\n<!-- \u4e0eCAS Single Sign Out Filter\u914d\u5408\uff0c\u6ce8\u9500\u767b\u5f55\u4fe1\u606f  --> \n<listener>\n    <listener-class>com.yonyou.mcloud.cas.client.session.SingleSignOutHttpSessionListener<\/listener-class>\n<\/listener><\/code><\/pre>\n\n\n<p><strong>7.1 Listener\u4ecb\u7ecd\uff1a<\/strong><\/p>\n\n\n<p>&lt;listener&gt;\u4e3aweb\u5e94\u7528\u7a0b\u5e8f\u5b9a\u4e49\u76d1\u542c\u5668\uff0c\u76d1\u542c\u5668\u7528\u6765\u76d1\u542c\u5404\u79cd\u4e8b\u4ef6\uff0c\u6bd4\u5982\uff1aApplication\u548cSession\u4e8b\u4ef6\uff0c\u6240\u6709\u7684\u76d1\u542c\u5668\u6309\u7167\u76f8\u540c\u7684\u65b9\u5f0f\u5b9a\u4e49\uff0c\u529f\u80fd\u53d6\u51b3\u53bb\u5b83\u4eec\u5404\u81ea\u5b9e\u73b0\u7684\u63a5\u53e3\uff0c\u5e38\u7528\u7684Web\u4e8b\u4ef6\u63a5\u53e3\u6709\u5982\u4e0b\u51e0\u4e2a\uff1a<\/p>\n\n\n<ul><li> ServletContextListener\uff1a\u7528\u4e8e\u76d1\u542cWeb Application\u7684\u542f\u52a8\u548c\u5173\u95ed\uff1b <\/li><li> ServletContextAttributeListener\uff1a\u7528\u4e8e\u76d1\u542cServletContext\u8303\u56f4\uff08Application\uff09\u5185\u5c5e\u6027\u7684\u6539\u53d8\uff1b <\/li><li> ServletRequestListener\uff1a\u7528\u4e8e\u76d1\u542c\u7528\u6237\u7684\u8bf7\u6c42\uff1b <\/li><li> ServletRequestAttributeListener\uff1a\u7528\u4e8e\u76d1\u542cServletRequest\u8303\u56f4\uff08Request\uff09\u5185\u5c5e\u6027\u7684\u6539\u53d8\uff1b <\/li><li> HttpSessionListener\uff1a\u7528\u4e8e\u76d1\u542c\u7528\u6237session\u7684\u5f00\u59cb\u548c\u7ed3\u675f\uff1b <\/li><li> HttpSessionAttributeListener\uff1a\u7528\u4e8e\u76d1\u542cHttpSession\u8303\u56f4\uff08Session\uff09\u5185\u5c5e\u6027\u7684\u6539\u53d8\u3002 <\/li><\/ul>\n\n\n<p>\u4e3b\u8981\u7528\u4e8e\u76d1\u542cWeb\u5e94\u7528\u4e8b\u4ef6\uff0c\u5176\u4e2d\u6709\u4e24\u4e2a\u6bd4\u8f83\u91cd\u8981\u7684Web\u5e94\u7528\u4e8b\u4ef6\uff1aApplication\u7684\u542f\u52a8\u548c\u505c\u6b62\uff08starting up or shutting down\uff09\u548cSession\u7684\u521b\u5efa\u548c\u5931\u6548\uff08created or destroyed\uff09\u3002Application\u542f\u52a8\u4e8b\u4ef6\u53d1\u751f\u5728\u5e94\u7528\u7b2c\u4e00\u6b21\u88abServlet\u5bb9\u5668\u88c5\u8f7d\u548c\u542f\u52a8\u7684\u65f6\u5019\uff1b\u505c\u6b62\u4e8b\u4ef6\u53d1\u751f\u5728Web\u5e94\u7528\u505c\u6b62\u7684\u65f6\u5019\u3002Session\u521b\u5efa\u4e8b\u4ef6\u53d1\u751f\u5728\u6bcf\u6b21\u4e00\u4e2a\u65b0\u7684Session\u521b\u5efa\u7684\u65f6\u5019\uff0c\u7c7b\u4f3c\u5730Session\u5931\u6548\u4e8b\u4ef6\u53d1\u751f\u5728\u6bcf\u6b21\u4e00\u4e2aSession\u5931\u6548\u7684\u65f6\u5019\u3002\u4e3a\u4e86\u4f7f\u7528\u8fd9\u4e9bWeb\u5e94\u7528\u4e8b\u4ef6\u505a\u4e9b\u6709\u7528\u7684\u4e8b\u60c5\uff0c\u6211\u4eec\u5fc5\u987b\u521b\u5efa\u548c\u4f7f\u7528\u4e00\u4e9b\u7279\u6b8a\u7684\u201c\u76d1\u542c\u7c7b\u201d\u3002\u5b83\u4eec\u662f\u5b9e\u73b0\u4e86\u4ee5\u4e0b\u4e24\u4e2a\u63a5\u53e3\u4e2d\u4efb\u4f55\u4e00\u4e2a\u63a5\u53e3\u7684\u7b80\u5355java\u7c7b\uff1ajavax.servlet.ServletContextListener\u6216javax.servlet.http.HttpSessionListener\uff0c\u5982\u679c\u60f3\u8ba9\u4f60\u7684\u7c7b\u76d1\u542cApplication\u7684\u542f\u52a8\u548c\u505c\u6b62\u4e8b\u4ef6\uff0c\u4f60\u5c31\u5f97\u5b9e\u73b0ServletContextListener\u63a5\u53e3\uff1b\u60f3\u8ba9\u4f60\u7684\u7c7b\u53bb\u76d1\u542cSession\u7684\u521b\u5efa\u548c\u5931\u6548\u4e8b\u4ef6\uff0c\u90a3\u4f60\u5c31\u5f97\u5b9e\u73b0HttpSessionListener\u63a5\u53e3\u3002<\/p>\n\n\n<p>7.2 Listener\u914d\u7f6e\uff1a<\/p>\n\n\n<p>\u914d\u7f6eListener\u53ea\u8981\u5411Web\u5e94\u7528\u6ce8\u518cListener\u5b9e\u73b0\u7c7b\u5373\u53ef\uff0c\u65e0\u5e8f\u914d\u7f6e\u53c2\u6570\u4e4b\u7c7b\u7684\u4e1c\u897f\uff0c\u56e0\u4e3aListener\u83b7\u53d6\u7684\u662fWeb\u5e94\u7528ServletContext\uff08Application\uff09\u7684\u914d\u7f6e\u53c2\u6570\u3002\u4e3aWeb\u5e94\u7528\u914d\u7f6eListener\u7684\u4e24\u79cd\u65b9\u5f0f\uff1a<\/p>\n\n\n<ul><li> \u4f7f\u7528@WebListener\u4fee\u9970Listener\u5b9e\u73b0\u7c7b\u5373\u53ef\u3002 <\/li><li> \u5728web.xml\u6587\u6863\u4e2d\u4f7f\u7528&lt;listener&gt;\u8fdb\u884c\u914d\u7f6e\u3002 <\/li><\/ul>\n\n\n<p> \u6211\u4eec\u9009\u62e9web.xml\u8fd9\u79cd\u914d\u7f6e\u65b9\u5f0f\uff0c\u53ea\u6709\u4e00\u4e2a\u5143\u7d20&lt;listener-class&gt;\u6307\u5b9aListener\u7684\u5b9e\u73b0\u7c7b\uff0c\u5982\u4e0b\u6240\u793a\uff1a <\/p>\n\n\n<pre class=\"wp-block-code\"><listener>\n   <listener-class>org.springframework.web.context.ContextLoaderListener<\/listener-class>\n<\/listener><\/code><\/pre>\n\n\n<p>\u8fd9\u91cc\u7684&lt;listener&gt;\u7528\u4e8eSpring\u7684\u52a0\u8f7d\uff0cSpring\u52a0\u8f7d\u53ef\u4ee5\u5229\u7528ServletContextListener\u5b9e\u73b0\uff0c\u4e5f\u53ef\u4ee5\u91c7\u7528load-on-startup Servlet&nbsp;\u5b9e\u73b0\uff0c\u4f46\u662f\uff0c\u5f53&lt;filter&gt;\u9700\u8981\u7528\u5230bean\u65f6\uff0c\u52a0\u8f7d\u987a\u5e8f\u662f\u5148\u52a0\u8f7d&lt;filter&gt;\u540e\u52a0\u8f7d&lt;servlet&gt;\uff0c\u5219&lt;filter&gt;\u4e2d\u521d\u59cb\u5316\u64cd\u4f5c\u4e2d\u7684bean\u4e3anull\uff1b\u6240\u4ee5\uff0c\u5982\u679c&lt;filter&gt;\u4e2d\u8981\u4f7f\u7528\u5230bean\uff0c\u6b64\u65f6\u5c31\u53ef\u4ee5\u6839\u636e\u52a0\u8f7d\u987a\u5e8f&lt;listener&gt; -&gt; &lt;filter&gt; -&gt; &lt;servlet&gt;\uff0c\u5c06spring\u7684\u52a0\u8f7d\u6539\u6210Listener\u7684\u65b9\u5f0f\u3002<\/p>\n\n\n<ul><li> \u91c7\u7528load-on-startup Servlet&nbsp;\u5b9e\u73b0\uff1a <\/li><\/ul>\n\n\n<pre class=\"wp-block-code\"><code><servlet>  \n   <servlet-name>context<\/servlet-narne> \n   <servlet-class>org.springframework.web.context.ContextLoaderServlet<\/servlet-class>  \n   <load-on-startup>1<\/load-on-startup>  \n<\/servlet> <\/code><\/pre>\n\n\n<ul><li> \u5229\u7528ServletContextListener\u5b9e\u73b0\uff1a <\/li><\/ul>\n\n\n<pre class=\"wp-block-code\"><code><listener>\n   <listener-class>org.springframework.web.context.ContextLoaderListener<\/listener-class>\n<\/listener> <\/code><\/pre>\n\n\n<p>\u6211\u4eec\u9009\u62e9\u4e86\u7b2c\u4e8c\u79cd\u65b9\u5f0f\uff0c\u5728J2EE\u5de5\u7a0b\u4e2dweb\u670d\u52a1\u5668\u542f\u52a8\u7684\u65f6\u5019\u6700\u5148\u8c03\u7528web.xml\uff0c\u4e0a\u9762\u8fd9\u6bb5\u914d\u7f6e\u7684\u610f\u601d\u662f\u52a0\u8f7dspring\u7684\u76d1\u542c\u5668\uff0c\u5176\u4e2dContextLoaderListener\u7684\u4f5c\u7528\u5c31\u662f\u542f\u52a8Web\u5bb9\u5668\u65f6\uff0c\u81ea\u52a8\u88c5\u914dapplicationContext.xml\u7684\u914d\u7f6e\u4fe1\u606f\uff0c\u6267\u884c\u5b83\u6240\u5b9e\u73b0\u7684\u65b9\u6cd5\u3002<\/p>\n\n\n<p><strong>8. &lt;filter&gt;&lt;\/filter&gt;<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><code><!--****************************\u8fc7\u6ee4\u5668\u914d\u7f6e*********************************-->\n<!-- \u5b57\u7b26\u96c6\u8fc7\u6ee4\u5668 -->\n<filter>\n    <filter-name>CharacterEncodingFilter<\/filter-name>\n    <filter-class>org.springframework.web.filter.CharacterEncodingFilter<\/filter-class>\n    <init-param>\n        <param-name>encoding<\/param-name>\n        <param-value>UTF-8<\/param-value>\n    <\/init-param>\n    <init-param>\n        <param-name>forceEncoding<\/param-name>\n        <param-value>true<\/param-value>\n    <\/init-param>\n<\/filter>\n<!-- \u5355\u70b9\u767b\u51fa\u8fc7\u6ee4\u5668 -->\n<filter>\n    <filter-name>CAS Single Sign Out Filter<\/filter-name>\n    <filter-class>com.yonyou.mcloud.cas.client.session.SingleSignOutFilter<\/filter-class>\n<\/filter>\n<!-- \u8ba4\u8bc1\u8fc7\u6ee4\u5668 -->\n<filter>\n    <filter-name>CAS Authentication Filter<\/filter-name>\n    <filter-class>com.yonyou.mcloud.cas.client.authentication.ExpandAuthenticationFilter<\/filter-class>\n    <init-param>\n        <param-name>casServerLoginUrl<\/param-name>\n        <param-value>https:\/\/dev.yonyou.com:443\/sso-server\/login<\/param-value>\n    <\/init-param>\n    <init-param>\n        <!--\u8fd9\u91cc\u7684server\u662f\u670d\u52a1\u7aef\u7684IP -->\n        <param-name>serverName<\/param-name>\n        <param-value>http:\/\/10.1.215.40:80<\/param-value>\n    <\/init-param>\n<\/filter>\n<!-- \u9a8c\u8bc1ST\/PT\u8fc7\u6ee4\u5668 -->\n<filter>\n    <filter-name>CAS Validation Filter<\/filter-name>\n    <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter<\/filter-class>\n    <init-param>\n        <param-name>casServerUrlPrefix<\/param-name>\n        <param-value>https:\/\/dev.yonyou.com:443\/sso-server<\/param-value>\n    <\/init-param>\n    <init-param>\n        <param-name>serverName<\/param-name>\n        <param-value>http:\/\/10.1.215.40:80<\/param-value>\n    <\/init-param>\n    <init-param>\n        <param-name>proxyCallbackUrl<\/param-name>\n        <param-value>https:\/\/dev.yonyou.com:443\/business\/proxyCallback<\/param-value>\n    <\/init-param>\n    <init-param>\n        <param-name>proxyReceptorUrl<\/param-name>\n        <param-value>\/proxyCallback<\/param-value>\n    <\/init-param>\n    <init-param>\n        <param-name>proxyGrantingTicketStorageClass<\/param-name>\n        <param-value>com.yonyou.mcloud.cas.client.proxy.MemcachedBackedProxyGrantingTicketStorageImpl<\/param-value>\n    <\/init-param>\n    <!-- \u89e3\u51b3\u4e2d\u6587\u95ee\u9898 -->\n    <init-param>\n        <param-name>encoding<\/param-name>\n        <param-value>UTF-8<\/param-value>\n    <\/init-param>\n<\/filter>\n<filter>\n    <filter-name>CAS HttpServletRequest Wrapper Filter<\/filter-name>\n    <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter<\/filter-class>\n<\/filter>\n<filter>\n    <filter-name>CAS Assertion Thread Local Filter<\/filter-name>\n    <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter<\/filter-class>\n<\/filter>\n<filter>\n    <filter-name>NoCache Filter<\/filter-name>\n    <filter-class>com.yonyou.mcloud.cas.client.authentication.NoCacheFilter<\/filter-class>\n<\/filter>\n<!--****************************\u6620\u5c04\u5173\u7cfb\u914d\u7f6e********************************-->\n<filter-mapping>\n    <filter-name>CharacterEncodingFilter<\/filter-name>\n    <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping>\n<filter-mapping>\n    <filter-name>NoCache Filter<\/filter-name>\n    <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping>\n<filter-mapping>\n    <filter-name>CAS Single Sign Out Filter<\/filter-name>\n    <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping>\n<filter-mapping>\n    <filter-name>CAS Validation Filter<\/filter-name>\n    <url-pattern>\/proxyCallback<\/url-pattern>\n<\/filter-mapping>\n<filter-mapping>\n    <filter-name>CAS Authentication Filter<\/filter-name>\n    <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping>\n<filter-mapping>\n    <filter-name>CAS Validation Filter<\/filter-name>\n    <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping>\n<filter-mapping>\n    <filter-name>CAS HttpServletRequest Wrapper Filter<\/filter-name>\n    <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping>\n<filter-mapping>\n    <filter-name>CAS Assertion Thread Local Filter<\/filter-name>\n    <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping><\/code><\/pre>\n\n\n<p> <strong><strong>8.1 Filter\u4ecb\u7ecd\uff1a<\/strong><\/strong> <\/p>\n\n\n<p>Filter\u53ef\u8ba4\u4e3a\u662fServle\u7684\u4e00\u79cd\u201c\u52a0\u5f3a\u7248\u201d\uff0c\u4e3b\u8981\u7528\u4e8e\u5bf9\u7528\u6237\u8bf7\u6c42request\u8fdb\u884c\u9884\u5904\u7406\uff0c\u4e5f\u53ef\u4ee5\u5bf9Response\u8fdb\u884c\u540e\u5904\u7406\uff0c\u662f\u4e2a\u5178\u578b\u7684\u5904\u7406\u94fe\u3002\u4f7f\u7528Filter\u7684\u5b8c\u6574\u6d41\u7a0b\u662f\uff1aFilter\u5bf9\u7528\u6237\u8bf7\u6c42\u8fdb\u884c\u9884\u5904\u7406\uff0c\u63a5\u7740\u5c06\u8bf7\u6c42HttpServletRequest\u4ea4\u7ed9Servlet\u8fdb\u884c\u5904\u7406\u5e76\u751f\u6210\u54cd\u5e94\uff0c\u6700\u540eFilter\u518d\u5bf9\u670d\u52a1\u5668\u54cd\u5e94HttpServletResponse\u8fdb\u884c\u540e\u5904\u7406\u3002Filter\u4e0eServlet\u5177\u6709\u5b8c\u5168\u76f8\u540c\u7684\u751f\u547d\u5468\u671f\uff0c\u4e14Filter\u4e5f\u53ef\u4ee5\u901a\u8fc7\u6765\u914d\u7f6e\u521d\u59cb\u5316\u53c2\u6570\uff0c\u83b7\u53d6Filter\u7684\u521d\u59cb\u5316\u53c2\u6570\u5219\u4f7f\u7528FilterConfig\u7684getInitParameter()\u3002<\/p>\n\n\n<p>\u6362\u79cd\u8bf4\u6cd5\uff0cServlet\u91cc\u6709request\u548cresponse\u4e24\u4e2a\u5bf9\u8c61\uff0cFilter\u80fd\u591f\u5728\u4e00\u4e2arequest\u5230\u8fbeServlet\u4e4b\u524d\u9884\u5904\u7406request\uff0c\u4e5f\u53ef\u4ee5\u5728\u79bb\u5f00Servlet\u65f6\u5904\u7406response\uff0cFilter\u5176\u5b9e\u662f\u4e00\u4e2aServlet\u94fe\u3002\u4ee5\u4e0b\u662fFilter\u7684\u4e00\u4e9b\u5e38\u89c1\u5e94\u7528\u573a\u5408\uff0c<\/p>\n\n\n<ul><li> \u8ba4\u8bc1Filter <\/li><li> \u65e5\u5fd7\u548c\u5ba1\u6838Filter<\/li><li>\u56fe\u7247\u8f6c\u6362Filter<\/li><li>\u6570\u636e\u538b\u7f29Filter<\/li><li>\u5bc6\u7801Filter<\/li><li>\u4ee4\u724cFilter<\/li><li>\u89e6\u53d1\u8d44\u6e90\u8bbf\u95ee\u4e8b\u4ef6\u7684Filter<\/li><li>XSLT Filter<\/li><li>\u5a92\u4f53\u7c7b\u578b\u94feFilter <\/li><\/ul>\n\n\n<p> Filter\u53ef\u8d1f\u8d23\u62e6\u622a\u591a\u4e2a\u8bf7\u6c42\u6216\u54cd\u5e94\uff1b\u4e00\u4e2a\u8bf7\u6c42\u6216\u54cd\u5e94\u4e5f\u53ef\u88ab\u591a\u4e2aFilter\u62e6\u622a\u3002\u521b\u5efa\u4e00\u4e2aFilter\u53ea\u9700\u4e24\u6b65\uff1a <\/p>\n\n\n<ul><li> \u521b\u5efaFilter\u5904\u7406\u7c7b<\/li><li>&nbsp;Web.xml\u6587\u4ef6\u4e2d\u914d\u7f6eFilter <\/li><\/ul>\n\n\n<p> Filter\u5fc5\u987b\u5b9e\u73b0javax.servlet.Filter\u63a5\u53e3\uff0c\u5728\u8be5\u63a5\u53e3\u4e2d\u5b9a\u4e49\u4e86\u4e09\u4e2a\u65b9\u6cd5\uff1a <\/p>\n\n\n<ul><li> void init(FilterConfig config)\uff1a\u7528\u4e8e\u5b8c\u6210Filter\u7684\u521d\u59cb\u5316\u3002FilteConfig\u7528\u4e8e\u8bbf\u95eeFilter\u7684\u914d\u7f6e\u4fe1\u606f\u3002 <\/li><li> void destroy()\uff1a\u7528\u4e8eFilter\u9500\u6bc1\u524d\uff0c\u5b8c\u6210\u67d0\u4e9b\u8d44\u6e90\u7684\u56de\u6536\u3002 <\/li><li>void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)\uff1a\u5b9e\u73b0\u8fc7\u6ee4\u529f\u80fd\u7684\u6838\u5fc3\u65b9\u6cd5\uff0c\u8be5\u65b9\u6cd5\u5c31\u662f\u5bf9\u6bcf\u4e2a\u8bf7\u6c42\u53ca\u54cd\u5e94\u589e\u52a0\u989d\u5916\u7684\u5904\u7406\u3002\u8be5\u65b9\u6cd5\u5b9e\u73b0\u5bf9\u7528\u6237\u8bf7\u6c42request\u8fdb\u884c\u9884\u5904\u7406\uff0c\u4e5f\u53ef\u4ee5\u5b9e\u73b0\u5bf9\u670d\u52a1\u5668\u54cd\u5e94response\u8fdb\u884c\u540e\u5904\u7406---\u5b83\u4eec\u7684\u5206\u754c\u7ebf\u4e3a\u662f\u5426\u8c03\u7528\u4e86chain.doFilter(request\uff0cresponse)\uff0c\u6267\u884c\u8be5\u65b9\u6cd5\u4e4b\u524d\uff0c\u5373\u5bf9\u7528\u6237\u8bf7\u6c42request\u8fdb\u884c\u9884\u5904\u7406\uff0c\u6267\u884c\u8be5\u65b9\u6cd5\u4e4b\u540e\uff0c\u5373\u5bf9\u670d\u52a1\u5668\u54cd\u5e94response\u8fdb\u884c\u540e\u5904\u7406\u3002<\/li><\/ul>\n\n\n<p> <strong><strong>8.2 Filter\u914d\u7f6e\uff1a<\/strong><\/strong> <\/p>\n\n\n<p>Filter\u914d\u7f6e\u4e0eServlet\u7684\u914d\u7f6e\u975e\u5e38\u76f8\u4f3c\uff0c\u9700\u8981\u914d\u7f6e\u4e24\u90e8\u5206\uff1a\u914d\u7f6eFilter\u540d\u79f0\u548cFilter\u62e6\u622a\u5668URL\u6a21\u5f0f\u3002\u533a\u522b\u5728\u4e8eServlet\u901a\u5e38\u53ea\u914d\u7f6e\u4e00\u4e2aURL\uff0c\u800cFilter\u53ef\u4ee5\u540c\u65f6\u914d\u7f6e\u591a\u4e2a\u8bf7\u6c42\u7684URL\u3002\u914d\u7f6eFilter\u6709\u4e24\u79cd\u65b9\u5f0f\uff1a<\/p>\n\n\n<ul><li> \u5728Filter\u7c7b\u4e2d\u901a\u8fc7Annotation\u8fdb\u884c\u914d\u7f6e\u3002<\/li><li>&nbsp;\u5728web.xml\u6587\u4ef6\u4e2d\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u8fdb\u884c\u914d\u7f6e\u3002 <\/li><\/ul>\n\n\n<p>\u6211\u4eec\u4f7f\u7528\u7684\u662fweb.xml\u8fd9\u79cd\u914d\u7f6e\u65b9\u5f0f\uff0c\u4e0b\u9762\u91cd\u70b9\u4ecb\u7ecd&lt;filter&gt;\u5185\u5305\u542b\u7684\u4e00\u4e9b\u5143\u7d20\u3002<\/p>\n\n\n<p>&lt;filter&gt;\u7528\u4e8e\u6307\u5b9aWeb\u5bb9\u5668\u4e2d\u7684\u8fc7\u6ee4\u5668\uff0c\u53ef\u5305\u542b&lt;filter-name&gt;\u3001&lt;filter-class&gt;\u3001&lt;init-param&gt;\u3001&lt;icon&gt;\u3001&lt;display-name&gt;\u3001&lt;description&gt;\u3002<\/p>\n\n\n<ul><li> &lt;filter-name&gt;\uff1a\u7528\u6765\u5b9a\u4e49\u8fc7\u6ee4\u5668\u7684\u540d\u79f0\uff0c\u8be5\u540d\u79f0\u5728\u6574\u4e2a\u7a0b\u5e8f\u4e2d\u90fd\u5fc5\u987b\u552f\u4e00\u3002<\/li><li>&lt;filter-class&gt;\uff1a\u6307\u5b9a\u8fc7\u6ee4\u5668\u7c7b\u7684\u5b8c\u5168\u9650\u5b9a\u7684\u540d\u79f0\uff0c\u5373Filter\u7684\u5b9e\u73b0\u7c7b\u3002 <\/li><li> &lt;init-param&gt;\uff1a\u4e3aFilter\u914d\u7f6e\u53c2\u6570\uff0c\u4e0e&lt;context-param&gt;\u5177\u6709\u76f8\u540c\u7684\u5143\u7d20\u63cf\u8ff0\u7b26&lt;param-name&gt;\u548c&lt;param-value&gt;\u3002 <\/li><li>&lt;filter-mapping&gt;\uff1a\u7528\u6765\u58f0\u660eWeb\u5e94\u7528\u4e2d\u7684\u8fc7\u6ee4\u5668\u6620\u5c04\uff0c\u8fc7\u6ee4\u5668\u88ab\u6620\u5c04\u5230\u4e00\u4e2aservlet\u6216\u4e00\u4e2aURL\u6a21\u5f0f\u3002\u8fd9\u4e2a\u8fc7\u6ee4\u5668\u7684&lt;filter&gt;\u548c&lt;filter-mapping&gt;\u5fc5\u987b\u5177\u6709\u76f8\u540c\u7684&lt;filter-name&gt;\uff0c\u6307\u5b9a\u8be5Filter\u6240\u62e6\u622a\u7684URL\u3002\u8fc7\u6ee4\u662f\u6309\u7167\u90e8\u7f72\u63cf\u8ff0\u7b26\u7684&lt;filter-mapping&gt;\u51fa\u73b0\u7684\u987a\u5e8f\u6267\u884c\u7684\u3002<\/li><\/ul>\n\n\n<p> <strong><strong>8.21 \u5b57\u7b26\u96c6\u8fc7\u6ee4\u5668<\/strong><\/strong> <\/p>\n\n\n<pre class=\"wp-block-code\"><code> <filter>\n    <filter-name>CharacterEncodingFilter<\/filter-name>\n    <filter-class>org.springframework.web.filter.CharacterEncodingFilter<\/filter-class>\n    <init-param>\n        <param-name>encoding<\/param-name>\n        <param-value>UTF-8<\/param-value>\n    <\/init-param>\n    <init-param>\n        <param-name>forceEncoding<\/param-name>\n        <param-value>true<\/param-value>\n    <\/init-param>\n<\/filter>\n<filter-mapping>\n    <filter-name>CharacterEncodingFilter<\/filter-name>\n    <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping><\/code><\/pre>\n\n\n<ul><li> CharacterEncodingFilter\u7c7b\u53ef\u4ee5\u901a\u8fc7\u7b80\u5355\u914d\u7f6e\u6765\u5e2e\u6211\u4eec\u5b9e\u73b0\u5b57\u7b26\u96c6\u8f6c\u6362\u7684\u529f\u80fd\u3002 <\/li><li> \u53c2\u6570encoding\u7528\u4e8e\u6307\u5b9a\u7f16\u7801\u7c7b\u578b\uff0c\u53c2\u6570forceEncoding\u8bbe\u4e3atrue\u65f6\uff0c\u5f3a\u5236\u6267\u884crequest.setCharacterEncoding(this.encoding)\u548creponse.setCharacterEncoding(this.encoding)\u4e2d\u7684\u65b9\u6cd5\u3002 <\/li><\/ul>\n\n\n<p> <strong>8.22 \u7f13\u5b58\u63a7\u5236<\/strong> <\/p>\n\n\n<pre class=\"wp-block-code\"><code><filter>\n    <filter-name>NoCache Filter<\/filter-name>\n    <filter-class>com.yonyou.mcloud.cas.client.authentication.NoCacheFilter<\/filter-class>\n<\/filter>\n<filter-mapping>\n    <filter-name>NoCache Filter<\/filter-name>\n    <!\u2014\u8868\u793a\u5bf9URL\u5168\u90e8\u8fc7\u6ee4-->\n    <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping><\/code><\/pre>\n\n\n<p> <strong>8.23 \u767b\u5f55\u8ba4\u8bc1<\/strong> <\/p>\n\n\n<pre class=\"wp-block-code\"><code><!-- \u8ba4\u8bc1\u8fc7\u6ee4\u5668 -->\n<filter>\n    <filter-name>CAS Authentication Filter<\/filter-name>\n    <filter-class>com.yonyou.mcloud.cas.client.authentication.ExpandAuthenticationFilter<\/filter-class>\n    <init-param>\n        <param-name>casServerLoginUrl<\/param-name>\n        <param-value>https:\/\/dev.yonyou.com:443\/sso-server\/login<\/param-value>\n    <\/init-param>\n    <init-param>\n        <!--\u8fd9\u91cc\u7684server\u662f\u670d\u52a1\u7aef\u7684IP -->\n        <param-name>serverName<\/param-name>\n        <param-value>http:\/\/10.1.215.40:80<\/param-value>\n    <\/init-param>\n<\/filter>\n<filter-mapping>\n     <filter-name>CAS Authentication Filter<\/filter-name>\n     <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping><\/code><\/pre>\n\n\n<p>\u767b\u5f55\u8ba4\u8bc1\uff0c\u672a\u767b\u5f55\u7528\u6237\u5bfc\u5411CAS Server\u8fdb\u884c\u8ba4\u8bc1\u3002<\/p>\n\n\n<p><strong>8.24 \u5355\u70b9\u767b\u51fa<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><code><filter>\n      <filter-name>CAS Single Sign Out Filter<\/filter-name>\n      <filter-class>org.jasig.cas.client.session.SingleSignOutFilter<\/filter-class>\n<\/filter>\n<filter-mapping>\n      <filter-name>CAS Single Sign Out Filter<\/filter-name>\n      <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping>\n<listener>\n      <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener<\/listener-class>\n<\/listener><\/code><\/pre>\n\n\n<p>CAS Server\u901a\u77e5CAS Client\uff0c\u5220\u9664session\uff0c\u6ce8\u9500\u767b\u5f55\u4fe1\u606f\u3002<\/p>\n\n\n<p><strong>8.25 \u5c01\u88c5request<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><code><filter>\n    <filter-name>CAS HttpServletRequest Wrapper Filter<\/filter-name>\n    <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter<\/filter-class>\n<\/filter>\n<filter-mapping>\n    <filter-name>CAS HttpServletRequest Wrapper Filter<\/filter-name>\n    <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping><\/code><\/pre>\n\n\n<p>\u5c01\u88c5request, \u652f\u6301getUserPrincipal\u7b49\u65b9\u6cd5\u3002<\/p>\n\n\n<p><strong>8.26 \u5b58\u653eAssertion\u5230ThreadLocal\u4e2d<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><code><filter>\n    <filter-name>CAS Assertion Thread Local Filter<\/filter-name>\n    <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter<\/filter-class>\n<\/filter>\n<filter-mapping>\n    <filter-name>CAS Assertion Thread Local Filter<\/filter-name>\n    <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping><\/code><\/pre>\n\n\n<p> <strong><strong>8.27 \u7981\u7528\u6d4f\u89c8\u5668\u7f13\u5b58<\/strong><\/strong> <\/p>\n\n\n<pre class=\"wp-block-code\"><code><filter>\n    <filter-name>NoCache Filter<\/filter-name>\n    <filter-class>com.yonyou.mcloud.cas.client.authentication.NoCacheFilter<\/filter-class>\n <\/filter>\n <filter-mapping>\n    <filter-name>NoCache Filter<\/filter-name>\n    <url-pattern>\/*<\/url-pattern>\n <\/filter-mapping><\/code><\/pre>\n\n\n<p> <strong><strong>8.28 CAS Client\u5411CAS Server\u8fdb\u884cticket\u9a8c\u8bc1<\/strong><\/strong> <\/p>\n\n\n<pre class=\"wp-block-code\"><code><!-- \u9a8c\u8bc1ST\/PT\u8fc7\u6ee4\u5668 -->\n<filter>\n    <filter-name>CAS Validation Filter<\/filter-name>\n    <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter<\/filter-class>\n    <init-param>\n       <param-name>casServerUrlPrefix<\/param-name>\n       <param-value>https:\/\/dev.yonyou.com:443\/sso-server<\/param-value>\n    <\/init-param>\n    <init-param>\n       <param-name>serverName<\/param-name>\n       <param-value>http:\/\/10.1.215.40:80<\/param-value>\n    <\/init-param>\n    <init-param>\n       <param-name>proxyCallbackUrl<\/param-name>\n       <param-value>https:\/\/dev.yonyou.com:443\/business\/proxyCallback<\/param-value>\n    <\/init-param>\n    <init-param>\n       <param-name>proxyReceptorUrl<\/param-name>\n       <param-value>\/proxyCallback<\/param-value>\n    <\/init-param>\n    <init-param>\n        <param-name>proxyGrantingTicketStorageClass<\/param-name>\n        <param-value>com.yonyou.mcloud.cas.client.proxy.MemcachedBackedProxyGrantingTicketStorageImpl<\/param-value>\n    <\/init-param>\n    <!-- \u89e3\u51b3\u4e2d\u6587\u95ee\u9898 -->\n    <init-param>\n       <param-name>encoding<\/param-name>\n       <param-value>UTF-8<\/param-value>\n    <\/init-param>\n<\/filter>\n<filter-mapping>\n    <filter-name>CAS Validation Filter<\/filter-name>\n    <url-pattern>\/proxyCallback<\/url-pattern>\n<\/filter-mapping>\n<filter-mapping>\n    <filter-name>CAS Validation Filter<\/filter-name>\n    <url-pattern>\/*<\/url-pattern>\n<\/filter-mapping><\/code><\/pre>\n\n\n<h3><strong>9. &lt;servlet&gt;&lt;\/servlet&gt;<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><code><!--****************************servlet\u914d\u7f6e******************************-->\n<!-- Spring view\u5206\u53d1\u5668  \u5bf9\u6240\u6709\u7684\u8bf7\u6c42\u90fd\u7531business\u5bf9\u5e94\u7684\u7c7b\u6765\u63a7\u5236\u8f6c\u53d1 -->\n<servlet>\n    <servlet-name>business<\/servlet-name>\n    <servlet-class>org.springframework.web.servlet.DispatcherServlet<\/servlet-class>\n    <init-param>\n      <param-name>publishContext<\/param-name>\n      <param-value>false<\/param-value>\n    <\/init-param>\n    <load-on-startup>1<\/load-on-startup>\n<\/servlet>\n<!-- \u7528\u6237\u767b\u51fa -->\n<servlet>\n    <servlet-name>LogOutServlet<\/servlet-name>\n    <servlet-class>com.yonyou.mcloud.cas.web.servlet.LogOutServlet<\/servlet-class>\n    <init-param>\n      <param-name>serverLogoutUrl<\/param-name>\n      <param-value>https:\/\/dev.yonyou.com:443\/sso-server\/logout<\/param-value>\n    <\/init-param>\n    <init-param>\n      <param-name>serverName<\/param-name>\n      <param-value>http:\/\/10.1.215.40:80\/business\/<\/param-value>\n    <\/init-param>\n<\/servlet>\n<!--****************************servlet\u6620\u5c04\u5173\u7cfb\u914d\u7f6e*************************-->\n<servlet-mapping>\n    <servlet-name>LogOutServlet<\/servlet-name>\n    <url-pattern>\/logout<\/url-pattern>\n<\/servlet-mapping>\n<servlet-mapping>\n    <servlet-name>business<\/servlet-name>\n    <url-pattern>\/<\/url-pattern>\n<\/servlet-mapping><\/code><\/pre>\n\n\n<p>9.1 Servlet\u4ecb\u7ecd\uff1a<\/p>\n\n\n<p>Servlet\u901a\u5e38\u79f0\u4e3a\u670d\u52a1\u5668\u7aef\u5c0f\u7a0b\u5e8f\uff0c\u662f\u8fd0\u884c\u5728\u670d\u52a1\u5668\u7aef\u7684\u7a0b\u5e8f\uff0c\u7528\u4e8e\u5904\u7406\u53ca\u54cd\u5e94\u5ba2\u6237\u7684\u8bf7\u6c42\u3002Servlet\u662f\u4e2a\u7279\u6b8a\u7684java\u7c7b\uff0c\u7ee7\u627f\u4e8eHttpServlet\u3002\u5ba2\u6237\u7aef\u901a\u5e38\u53ea\u6709GET\u548cPOST\u4e24\u79cd\u8bf7\u6c42\u65b9\u5f0f\uff0cServlet\u4e3a\u4e86\u54cd\u5e94\u8fd9\u4e24\u79cd\u8bf7\u6c42\uff0c\u5fc5\u987b\u91cd\u5199doGet()\u548cdoPost()\u65b9\u6cd5\u3002\u5927\u90e8\u5206\u65f6\u5019\uff0cServlet\u5bf9\u4e8e\u6240\u6709\u7684\u8bf7\u6c42\u54cd\u5e94\u90fd\u662f\u5b8c\u5168\u4e00\u6837\u7684\uff0c\u6b64\u65f6\u53ea\u9700\u8981\u91cd\u5199service()\u65b9\u6cd5\u5373\u53ef\u54cd\u5e94\u5ba2\u6237\u7aef\u7684\u6240\u6709\u8bf7\u6c42\u3002\u53e6\u5916\uff0cHttpServlet\u6709\u4e24\u4e2a\u65b9\u6cd5\uff1a<\/p>\n\n\n<ul><li> init(ServletConfig config)\uff1a\u521b\u5efaServlet\u5b9e\u4f8b\u65f6\uff0c\u8c03\u7528\u8be5\u65b9\u6cd5\u6765\u521d\u59cb\u5316Servlet\u8d44\u6e90\u3002<\/li><li>destroy()\uff1a\u9500\u6bc1Servlet\u5b9e\u4f8b\u65f6\uff0c\u81ea\u52a8\u8c03\u7528\u8be5\u65b9\u6cd5\u6765\u56de\u6536\u8d44\u6e90\u3002 <\/li><\/ul>\n\n\n<p>\u901a\u5e38\u65e0\u9700\u91cd\u5199init()\u548cdestroy()\u4e24\u4e2a\u65b9\u6cd5\uff0c\u9664\u975e\u9700\u8981\u5728\u521d\u59cb\u5316Servlet\u65f6\uff0c\u5b8c\u6210\u67d0\u4e9b\u8d44\u6e90\u521d\u59cb\u5316\u7684\u65b9\u6cd5\uff0c\u624d\u8003\u8651\u91cd\u5199init()\u65b9\u6cd5\uff0c\u5982\u679c\u91cd\u5199\u4e86init()\u65b9\u6cd5\uff0c\u5e94\u5728\u91cd\u5199\u8be5\u65b9\u6cd5\u7684\u7b2c\u4e00\u884c\u8c03\u7528super.init(config)\uff0c\u8be5\u65b9\u6cd5\u5c06\u8c03\u7528HttpServlet\u7684init()\u65b9\u6cd5\u3002\u5982\u679c\u9700\u8981\u5728\u9500\u6bc1Servlet\u4e4b\u524d\uff0c\u5148\u5b8c\u6210\u67d0\u4e9b\u8d44\u6e90\u7684\u56de\u6536\uff0c\u6bd4\u5982\u5173\u95ed\u6570\u636e\u5e93\u8fde\u63a5\uff0c\u624d\u9700\u8981\u91cd\u5199destory\u65b9\u6cd5()\u3002<\/p>\n\n\n<p>Servlet\u7684\u751f\u547d\u5468\u671f\uff0c\u521b\u5efaServlet\u5b9e\u4f8b\u6709\u4e24\u4e2a\u65f6\u673a\uff1a<\/p>\n\n\n<ul><li> \u5ba2\u6237\u7aef\u7b2c\u4e00\u6b21\u8bf7\u6c42\u67d0\u4e2aServlet\u65f6\uff0c\u7cfb\u7edf\u521b\u5efa\u8be5Servlet\u7684\u5b9e\u4f8b\uff0c\u5927\u90e8\u5206Servlet\u90fd\u662f\u8fd9\u79cdServlet\u3002<\/li><li>Web\u5e94\u7528\u542f\u52a8\u65f6\u7acb\u5373\u521b\u5efaServlet\u5b9e\u4f8b\uff0c\u5373load-on-start Servlet\u3002 <\/li><\/ul>\n\n\n<p> \u6bcf\u4e2aServlet\u7684\u8fd0\u884c\u90fd\u9075\u5faa\u5982\u4e0b\u751f\u547d\u5468\u671f\uff1a <\/p>\n\n\n<ul><li> \u521b\u5efaServlet\u5b9e\u4f8b\u3002<\/li><li>Web\u5bb9\u5668\u8c03\u7528Servlet\u7684init()\u65b9\u6cd5\uff0c\u5bf9Servlet\u8fdb\u884c\u521d\u59cb\u5316\u3002<\/li><li> Servlet\u521d\u59cb\u5316\u540e\uff0c\u5c06\u4e00\u76f4\u5b58\u5728\u4e8e\u5bb9\u5668\u4e2d\uff0c\u7528\u4e8e\u54cd\u5e94\u5ba2\u6237\u7aef\u8bf7\u6c42\uff0c\u5982\u679c\u5ba2\u6237\u7aef\u53d1\u9001GET\u8bf7\u6c42\uff0c\u5bb9\u5668\u8c03\u7528Servlet\u7684doGet()\u65b9\u6cd5\u5904\u7406\u5e76\u54cd\u5e94\u8bf7\u6c42\uff1b\u5982\u679c\u5ba2\u6237\u7aef\u53d1\u9001POST\u8bf7\u6c42\uff0c\u5bb9\u5668\u8c03\u7528Servlet\u7684doPost()\u65b9\u6cd5\u5904\u7406\u5e76\u54cd\u5e94\u8bf7\u6c42\u3002\u6216\u8005\u7edf\u4e00\u4f7f\u7528service()\u65b9\u6cd5\u5904\u7406\u6765\u54cd\u5e94\u7528\u6237\u8bf7\u6c42\u3002  <\/li><li> Web\u5bb9\u5668\u51b3\u5b9a\u9500\u6bc1Servlet\u65f6\uff0c\u5148\u8c03\u7528Servlet\u7684destory()\u65b9\u6cd5\uff0c\u901a\u5e38\u5728\u5173\u95edWeb\u5e94\u7528\u65f6\u9500\u6bc1Servlet\u5b9e\u4f8b\u3002 <\/li><\/ul>\n\n\n<p><strong>9.2 Servlet\u914d\u7f6e\uff1a<\/strong><\/p>\n\n\n<p>\u4e3a\u4e86\u8ba9Servlet\u80fd\u54cd\u5e94\u7528\u6237\u8bf7\u6c42\uff0c\u8fd8\u5fc5\u987b\u5c06Servlet\u914d\u7f6e\u5728web\u5e94\u7528\u4e2d\uff0c\u914d\u7f6eServlet\u9700\u8981\u4fee\u6539web.xml\u6587\u4ef6\u3002\u4eceServlet3.0\u5f00\u59cb\uff0c\u914d\u7f6eServlet\u6709\u4e24\u79cd\u65b9\u5f0f\uff1a<\/p>\n\n\n<ul><li>\u5728Servlet\u7c7b\u4e2d\u4f7f\u7528@WebServlet Annotation\u8fdb\u884c\u914d\u7f6e\u3002<\/li><li>\u5728web.xml\u6587\u4ef6\u4e2d\u8fdb\u884c\u914d\u7f6e\u3002<\/li><\/ul>\n\n\n<p>\u6211\u4eec\u7528web.xml\u6587\u4ef6\u6765\u914d\u7f6eServlet\uff0c\u9700\u8981\u914d\u7f6e\u548c\u3002\u7528\u6765\u58f0\u660e\u4e00\u4e2aServlet\u3002\u3001\u548c\u5143\u7d20\u7684\u7528\u6cd5\u548c\u7684\u7528\u6cd5\u76f8\u540c\u3002\u5143\u7d20\u4e0e\u5143\u7d20\u5177\u6709\u76f8\u540c\u7684\u5143\u7d20\u63cf\u8ff0\u7b26\uff0c\u53ef\u4ee5\u4f7f\u7528\u5b50\u5143\u7d20\u5c06\u521d\u59cb\u5316\u53c2\u6570\u540d\u548c\u53c2\u6570\u503c\u4f20\u9012\u7ed9Servlet\uff0c\u8bbf\u95eeServlet\u914d\u7f6e\u53c2\u6570\u901a\u8fc7ServletConfig\u5bf9\u8c61\u6765\u5b8c\u6210\uff0cServletConfig\u63d0\u4f9b\u5982\u4e0b\u65b9\u6cd5\uff1ajava.lang.String.getInitParameter(java.lang.String name)\uff0c\u7528\u4e8e\u83b7\u53d6\u521d\u59cb\u5316\u53c2\u6570\u3002ServletConfig\u83b7\u53d6\u914d\u7f6e\u53c2\u6570\u7684\u65b9\u6cd5\u548cServletContext\u83b7\u53d6\u914d\u7f6e\u53c2\u6570\u7684\u65b9\u6cd5\u5b8c\u5168\u4e00\u6837\uff0c\u53ea\u662fServletConfig\u662f\u53d6\u5f97\u5f53\u524dServlet\u7684\u914d\u7f6e\u53c2\u6570\uff0c\u800cServletContext\u662f\u83b7\u53d6\u6574\u4e2aWeb\u5e94\u7528\u7684\u914d\u7f6e\u53c2\u6570\u3002<\/p>\n\n\n<p> <strong>9.2.1&nbsp;&lt;description&gt;\u3001&lt;display-name&gt;\u548c&lt;icon&gt;<\/strong> <\/p>\n\n\n<ul><li> &lt;description&gt;\uff1a\u4e3aServlet\u6307\u5b9a\u4e00\u4e2a\u6587\u672c\u63cf\u8ff0\u3002<\/li><li>&lt;display-name&gt;\uff1a\u4e3aServlet\u63d0\u4f9b\u4e00\u4e2a\u7b80\u77ed\u7684\u540d\u5b57\u88ab\u67d0\u4e9b\u5de5\u5177\u663e\u793a\u3002<\/li><li>&lt;icon&gt;\uff1a\u4e3aServlet\u6307\u5b9a\u4e00\u4e2a\u56fe\u6807\uff0c\u5728\u56fe\u5f62\u7ba1\u7406\u5de5\u5177\u4e2d\u8868\u793a\u8be5Servlet\u3002 <\/li><\/ul>\n\n\n<p> <strong>9.2.2&nbsp;&lt;servlet-name&gt;\u3001&lt;servlet-class&gt;\u548c&lt;jsp-file&gt;\u5143\u7d20<\/strong> <\/p>\n\n\n<p> &lt;servlet&gt;\u5fc5\u987b\u542b\u6709&lt;servlet-name&gt;\u548c&lt;servlet-class&gt;\uff0c\u6216\u8005&lt;servlet-name&gt;\u548c&lt;jsp-file&gt;\u3002 \u63cf\u8ff0\u5982\u4e0b\uff1a <\/p>\n\n\n<ul><li> &lt;servlet-name&gt;\uff1a\u7528\u6765\u5b9a\u4e49servlet\u7684\u540d\u79f0\uff0c\u8be5\u540d\u79f0\u5728\u6574\u4e2a\u5e94\u7528\u4e2d\u5fc5\u987b\u662f\u60df\u4e00\u7684\u3002<\/li><li>&lt;servlet-class&gt;\uff1a\u7528\u6765\u6307\u5b9aservlet\u7684\u5b8c\u5168\u9650\u5b9a\u7684\u540d\u79f0\u3002<\/li><li>&lt;jsp-file&gt;\uff1a\u7528\u6765\u6307\u5b9a\u5e94\u7528\u4e2dJSP\u6587\u4ef6\u7684\u5b8c\u6574\u8def\u5f84\u3002\u8fd9\u4e2a\u5b8c\u6574\u8def\u5f84\u5fc5\u987b\u7531\/\u5f00\u59cb\u3002 <\/li><\/ul>\n\n\n<p> <strong>9.2.3&nbsp;&lt;load-on-startup&gt;<\/strong> <\/p>\n\n\n<p>\u5982\u679cload-on-startup\u5143\u7d20\u5b58\u5728\uff0c\u800c\u4e14\u4e5f\u6307\u5b9a\u4e86jsp-file\u5143\u7d20\uff0c\u5219JSP\u6587\u4ef6\u4f1a\u88ab\u91cd\u65b0\u7f16\u8bd1\u6210Servlet\uff0c\u540c\u65f6\u4ea7\u751f\u7684Servlet\u4e5f\u88ab\u8f7d\u5165\u5185\u5b58\u3002\u7684\u5185\u5bb9\u53ef\u4ee5\u4e3a\u7a7a\uff0c\u6216\u8005\u662f\u4e00\u4e2a\u6574\u6570\u3002\u8fd9\u4e2a\u503c\u8868\u793a\u7531Web\u5bb9\u5668\u8f7d\u5165\u5185\u5b58\u7684\u987a\u5e8f\u3002<\/p>\n\n\n<p>\u4e3e\u4e2a\u4f8b\u5b50\uff1a\u5982\u679c\u6709\u7d20\u4e24\u4e2aServlet\u5143\u7d20\u90fd\u542b\u6709\u5b50\u5143\uff0c\u5219\u5b50\u5143\u7d20\u503c\u8f83\u5c0f\u7684Servlet\u5c06\u5148\u88ab\u52a0\u8f7d\u3002\u5982\u679c\u5b50\u5143\u7d20\u503c\u4e3a\u7a7a\u6216\u8d1f\u503c\uff0c\u5219\u7531Web\u5bb9\u5668\u51b3\u5b9a\u4ec0\u4e48\u65f6\u5019\u52a0\u8f7dServlet\u3002\u5982\u679c\u4e24\u4e2aServlet\u7684\u5b50\u5143\u7d20\u503c\u76f8\u540c\uff0c\u5219\u7531Web\u5bb9\u5668\u51b3\u5b9a\u5148\u52a0\u8f7d\u54ea\u4e00\u4e2aServlet\u30021\u8868\u793a\u542f\u52a8\u5bb9\u5668\u65f6\uff0c\u521d\u59cb\u5316Servlet\u3002<\/p>\n\n\n<p> <strong>9.2.4&nbsp;&lt;servlet-mapping&gt;<\/strong> <\/p>\n\n\n<p> &lt;servlet-mapping&gt;\u542b\u6709&lt;servlet-name&gt;\u548c&lt;url-pattern&gt; <\/p>\n\n\n<ul><li>&lt;servlet-name&gt;\uff1aServlet\u7684\u540d\u5b57\uff0c\u552f\u4e00\u6027\u548c\u4e00\u81f4\u6027\uff0c\u4e0e&lt;servlet&gt;\u5143\u7d20\u4e2d\u58f0\u660e\u7684\u540d\u5b57\u4e00\u81f4\u3002<\/li><li>&lt;url-pattern&gt;\uff1a\u6307\u5b9a\u76f8\u5bf9\u4e8eServlet\u7684URL\u7684\u8def\u5f84\u3002\u8be5\u8def\u5f84\u76f8\u5bf9\u4e8eweb\u5e94\u7528\u7a0b\u5e8f\u4e0a\u4e0b\u6587\u7684\u6839\u8def\u5f84\u3002&lt;servlet-mapping&gt;\u5c06URL\u6a21\u5f0f\u6620\u5c04\u5230\u67d0\u4e2aServlet\uff0c\u5373\u8be5Servlet\u5904\u7406\u7684URL\u3002<\/li><\/ul>\n\n\n<p> <strong>9.2.5 \u52a0\u8f7dServlet\u7684\u8fc7\u7a0b&nbsp;<\/strong> <\/p>\n\n\n<p> \u5bb9\u5668\u7684Context\u5bf9\u8c61\u5bf9\u8bf7\u6c42\u8def\u5f84(URL)\u505a\u51fa\u5904\u7406\uff0c\u53bb\u6389\u8bf7\u6c42URL\u7684\u4e0a\u4e0b\u6587\u8def\u5f84\u540e\uff0c\u6309\u8def\u5f84\u6620\u5c04\u89c4\u5219\u548cServlet\u6620\u5c04\u8def\u5f84\uff08&lt;url- pattern&gt;\uff09\u505a\u5339\u914d\uff0c\u5982\u679c\u5339\u914d\u6210\u529f\uff0c\u5219\u8c03\u7528\u8fd9\u4e2aServlet\u5904\u7406\u8bf7\u6c42\u3002&nbsp; <\/p>\n\n\n<p> <strong>9.3&nbsp;<strong>DispatcherServlet\u5728web.xml\u4e2d\u7684\u914d\u7f6e\uff1a<\/strong><\/strong> <\/p>\n\n\n<pre class=\"wp-block-code\"><code><!-- Spring view\u5206\u53d1\u5668  \u5bf9\u6240\u6709\u7684\u8bf7\u6c42\u90fd\u7531business\u5bf9\u5e94\u7684\u7c7b\u6765\u63a7\u5236\u8f6c\u53d1 -->\n<servlet>\n    <servlet-name>business<\/servlet-name>\n    <servlet-class>org.springframework.web.servlet.DispatcherServlet<\/servlet-class>\n    <init-param>\n      <param-name>publishContext<\/param-name>\n      <param-value>false<\/param-value>\n    <\/init-param>\n    <load-on-startup>1<\/load-on-startup>\n<\/servlet><\/code><\/pre>\n\n\n<p> \u914d\u7f6eSpring MVC\uff0c\u6307\u5b9a\u5904\u7406\u8bf7\u6c42\u7684Servlet\uff0c\u6709\u4e24\u79cd\u65b9\u5f0f\uff1a <\/p>\n\n\n<ul><li> \u9ed8\u8ba4\u67e5\u627eMVC\u914d\u7f6e\u6587\u4ef6\u7684\u5730\u5740\u662f\uff1a\/WEB-INF\/${servletName}-servlet.xml<\/li><li>\u53ef\u4ee5\u901a\u8fc7\u914d\u7f6e\u4fee\u6539MVC\u914d\u7f6e\u6587\u4ef6\u7684\u4f4d\u7f6e\uff0c\u9700\u8981\u5728\u914d\u7f6eDispatcherServlet\u65f6\u6307\u5b9aMVC\u914d\u7f6e\u6587\u4ef6\u7684\u4f4d\u7f6e\u3002 <\/li><\/ul>\n\n\n<p> \u6211\u4eec\u5728\u5e73\u53f0\u9879\u76ee\u4e24\u4e2a\u5de5\u7a0b\u4e2d\u5206\u522b\u4f7f\u7528\u4e86\u4e0d\u540c\u7684\u914d\u7f6e\u65b9\u5f0f\uff0c\u4ecb\u7ecd\u5982\u4e0b\uff1a <\/p>\n\n\n<ul><li> \u5728business-client\u5de5\u7a0b\u4e2d\u6309\u7167\u9ed8\u8ba4\u65b9\u5f0f\u67e5\u627eMVC\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u914d\u7f6e\u6587\u4ef6\u76ee\u5f55\u4e3a\uff1a \/WEB-INF\/business-servlet.xml\u3002\u5de5\u7a0b\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\u6240\u793a\uff1a <\/li><\/ul>\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/qtvz.com\/wp-content\/uploads\/2020\/04\/d4-2d8cd98f00b204e9800998ecf8427e-2\" alt=\"\" alt=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c3\u5f20\" title=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c3\u5f20-Qtvz\" ><\/figure>\n\n\n<ul><li> \u5728public-base-server\u5de5\u7a0b\u4e2d\uff0c\u901a\u8fc7\u7b2c2\u79cd\u65b9\u5f0f\u8fdb\u884c\u914d\u7f6e\uff0c\u628aspring-servlet.xml\u653e\u5230src\/main\/resources\/config\/spring-servlet.xml\uff0c\u5219\u9700\u8981\u5728\u914d\u7f6eDispatcherServlet\u65f6\u6307\u5b9a\u6807\u7b7e\u3002\u5177\u4f53\u4ee3\u7801\u5982\u4e0b\uff1a <\/li><\/ul>\n\n\n<pre class=\"wp-block-code\"><code><servlet>\n    <servlet-name>spring<\/servlet-name>\n    <servlet-class>org.springframework.web.servlet.DispatcherServlet<\/servlet-class>\n        <init-param>\n            <param-name>publishContext<\/param-name>\n            <param-value>false<\/param-value>\n        <\/init-param>\n    <init-param>  \n        <param-name>contextConfigLocation<\/param-name>  \n        <param-value>classpath:config\/spring-servlet.xml<\/param-value>  \n    <\/init-param> \n    <load-on-startup>1<\/load-on-startup>\n<\/servlet><\/code><\/pre>\n\n\n<p> \u5de5\u7a0b\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a <\/p>\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/qtvz.com\/wp-content\/uploads\/2020\/04\/d4-3d8cd98f00b-304e9800998ecf84-37e-3\" alt=\"\" alt=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c4\u5f20\" title=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c4\u5f20-Qtvz\" ><\/figure>\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/qtvz.com\/wp-content\/uploads\/2020\/04\/d4-4d8cd98f00b-404e9800998ecf84-47e-4\" alt=\"\" alt=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c5\u5f20\" title=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c5\u5f20-Qtvz\" ><\/figure>\n\n\n<p>\u5176\u4e2d\uff0cclasspath\u662fweb\u9879\u76ee\u7684\u7c7b\u8def\u5f84\uff0c\u53ef\u4ee5\u7406\u89e3\u4e3aclasses\u4e0b\u9762\u3002\u56e0\u4e3a\u65e0\u8bba\u8fd9\u4e9b\u914d\u7f6e\u6587\u4ef6\u653e\u5728\u54ea\uff0c\u7f16\u8bd1\u4e4b\u540e\u5982\u679c\u6ca1\u6709\u7279\u6b8a\u60c5\u51b5\u7684\u8bdd\u90fd\u76f4\u63a5\u5728classes\u4e0b\u9762\u3002jar\u5305\u7684\u8bdd\u867d\u7136\u653e\u5728lib\u6587\u4ef6\u5939\u91cc\uff0c\u4f46\u5b9e\u9645\u4e0a\u90a3\u4e9b\u7c7b\u53ef\u4ee5\u76f4\u63a5\u5f15\u7528\uff0c\u6bd4\u5982\uff1acom.test.ABC\uff0c\u4eff\u4f5b\u4e5f\u5728classes\u4e0b\u9762\u4e00\u6837\u3002<\/p>\n\n\n<p>\u5728\u6211\u4eec\u7684\u5de5\u7a0b\u91cc\uff0c\u7ecf\u8fc7\u9a8c\u8bc1\uff0cmaven\u5de5\u7a0b\u8fd9\u4e24\u4e2a<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/qtvz.com\/wp-content\/uploads\/2020\/04\/d-5-5d8cd98f00b-50-5e9800998ecf8-5-57e-5\" alt=\"\" alt=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c6\u5f20\" title=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c6\u5f20-Qtvz\" ><\/figure>\n\n\n<p>\u8def\u5f84\u7ecf\u8fc7\u7f16\u8bd1\u540e\u751f\u6210\u7684\u6587\u4ef6\u90fd\u4f4d\u4e8eclasses\u76ee\u5f55\u4e0b\uff0c\u5373\u8fd9\u4e24\u4e2a\u8def\u5f84\u76f8\u5f53\u4e8e\u7c7b\u8def\u5f84\uff0c\u5728\u4e0b\u9762\u521b\u5efaconfig\u6587\u4ef6\u5939\uff08folder\uff09\uff0c\u7136\u540e\u521b\u5efa\u81ea\u5b9a\u4e49\u7684xml\u914d\u7f6e\u6587\u4ef6\u5373\u53ef\u3002<\/p>\n\n\n<p>classpath\u548cclasspath<em>\u533a\u522b\uff1a\u540c\u540d\u8d44\u6e90\u5b58\u5728\u65f6\uff0cclasspath\u53ea\u4ece\u7b2c\u4e00\u4e2a\u7b26\u5408\u6761\u4ef6\u7684classpath\u4e2d\u52a0\u8f7d\u8d44\u6e90\uff0c\u800cclasspath<\/em>\u4f1a\u4ece\u6240\u6709\u7684classpath\u4e2d\u52a0\u8f7d\u7b26\u5408\u6761\u4ef6\u7684\u8d44\u6e90\u3002classpath<em>\uff0c\u9700\u8981\u904d\u5386\u6240\u6709\u7684classpath\uff0c\u6548\u7387\u80af\u5b9a\u6bd4\u4e0d\u4e0aclasspath\uff0c\u56e0\u6b64\u5728\u9879\u76ee\u8bbe\u8ba1\u7684\u521d\u671f\u5c31\u5c3d\u91cf\u89c4\u5212\u597d\u8d44\u6e90\u6587\u4ef6\u6240\u5728\u7684\u8def\u5f84\uff0c\u907f\u514d\u4f7f\u7528classpath<\/em>\u6765\u52a0\u8f7d\u3002<\/p>\n\n\n<p> <strong>9.4 ContextLoaderListener\u548cDispatcherServlet\u521d\u59cb\u5316\u4e0a\u4e0b\u6587\u5173\u7cfb\u548c\u533a\u522b\uff1a<\/strong>  <\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/qtvz.com\/wp-content\/uploads\/2020\/04\/d-6-6d8cd98f00b-60-6e9800998ecf8-6-67e-6\" alt=\"\" alt=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c7\u5f20\" title=\"JAVA Web.xml\u8be6\u89e3 JAVA\u8d44\u6599 \u7b2c7\u5f20-Qtvz\" ><\/figure>\n\n\n<p>\u4ece\u4e0a\u56fe\u53ef\u4ee5\u770b\u51fa\uff0cContextLoaderListener\u521d\u59cb\u5316\u7684\u4e0a\u4e0b\u6587\u52a0\u8f7d\u7684Bean\u662f\u5bf9\u4e8e\u6574\u4e2a\u5e94\u7528\u7a0b\u5e8f\u5171\u4eab\u7684\uff0c\u4e00\u822c\u5982\uff1aDAO\u5c42\u3001Service\u5c42Bean\uff1bDispatcherServlet\u521d\u59cb\u5316\u7684\u4e0a\u4e0b\u6587\u52a0\u8f7d\u7684Bean\u662f\u53ea\u5bf9Spring MVC\u6709\u6548\u7684Bean\uff0c\u5982\uff1aController\u3001HandlerMapping\u3001HandlerAdapter\u7b49\uff0c\u8be5\u521d\u59cb\u5316\u4e0a\u4e0b\u6587\u53ea\u52a0\u8f7dWeb\u76f8\u5173\u7ec4\u4ef6\u3002<\/p>\n\n\n<p>\u6ce8\u610f\uff1a\u7528\u6237\u53ef\u4ee5\u914d\u7f6e\u591a\u4e2aDispatcherServlet\u6765\u5206\u522b\u5904\u7406\u4e0d\u540c\u7684url\u8bf7\u6c42\uff0c\u6bcf\u4e2aDispatcherServlet\u4e0a\u4e0b\u6587\u90fd\u5bf9\u5e94\u4e00\u4e2a\u81ea\u5df1\u7684\u5b50Spring\u5bb9\u5668\uff0c\u4ed6\u4eec\u90fd\u62e5\u6709\u76f8\u540c\u7684\u7236Spring\u5bb9\u5668\uff08\u4e1a\u52a1\u5c42\uff0c\u6301\u4e45\uff08dao\uff09bean\u6240\u5728\u7684\u5bb9\u5668\uff09\u3002<\/p>\n\n\n<p><strong>10. &lt;welcome-file-list&gt;&lt;\/welcome-file-list&gt;<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><code><!-- welcome page -->\n<welcome-file-list>\n    <welcome-file>index.html<\/welcome-file>\n<\/welcome-file-list><\/code><\/pre>\n\n\n<p>\u5305\u542b\u4e00\u4e2a\u5b50\u5143\u7d20\uff0c\u7528\u6765\u6307\u5b9a\u9996\u9875\u6587\u4ef6\u540d\u79f0\u3002\u5143\u7d20\u53ef\u4ee5\u5305\u542b\u4e00\u4e2a\u6216\u591a\u4e2a\u5b50\u5143\u7d20\u3002\u5982\u679c\u5728\u7b2c\u4e00\u4e2a\u5143\u7d20\u4e2d\u6ca1\u6709\u627e\u5230\u6307\u5b9a\u7684\u6587\u4ef6\uff0cWeb\u5bb9\u5668\u5c31\u4f1a\u5c1d\u8bd5\u663e\u793a\u7b2c\u4e8c\u4e2a\uff0c\u4ee5\u6b64\u7c7b\u63a8\u3002<\/p>\n\n\n<p><strong>11. \u53c2\u8003\u6587\u732e\uff1a<\/strong><\/p>\n\n\n<p>http:\/\/wiki.metawerx.net\/wiki\/Web.xml<br> http:\/\/www.cnblogs.com\/konbluesky\/articles\/1925295.html<br> http:\/\/blog.csdn.net\/sapphire_aling\/article\/details\/6069764<br> http:\/\/blog.csdn.net\/zndxlxm\/article\/details\/8711626<br> http:\/\/blog.csdn.net\/zhangliao613\/article\/details\/6289114<br> http:\/\/www.cnblogs.com\/bukudekong\/archive\/2011\/12\/26\/2302081.html<br> http:\/\/blog.sina.com.cn\/s\/blog_92b93d6f0100ypp9.html<br> http:\/\/blog.csdn.net\/heidan2006\/article\/details\/3075730<br> http:\/\/zhidao.baidu.com\/link?url=vBOBj5f2D1Zx3wSUJo-XphWrG6f7QPmfzk0UtS9Xk7p1SG_OdeCkiH6dT6eyHO-Pa6p4hLTEfvY7O9d_OM0Gua<br> http:\/\/www.blogjava.net\/dashi99\/archive\/2008\/12\/30\/249207.html<br> http:\/\/uule.iteye.com\/blog\/2051817<br> http:\/\/blog.csdn.net\/javaer617\/article\/details\/6432654<br> http:\/\/blog.csdn.net\/seng3018\/article\/details\/6758860<br> http:\/\/groups.tianya.cn\/tribe\/showArticle.jsp?groupId=185385&amp;articleId=2704257273118260804105385<br> http:\/\/blog.csdn.net\/qfs_v\/article\/details\/2557128<br> http:\/\/www.blogjava.net\/fancydeepin\/archive\/2013\/03\/30\/java-ee_web-xml.html<br> http:\/\/wenku.baidu.com\/link?url=P30DokIynD5zzRU2dtdkQhEwsHi-REKuBiHa_dK60bA6pQwggvX2mo9y9Mbb1tkYcsiRCaHBf-c<br> 4ZgIG5POmbbcRO_OxDJUaW15n300xJrq&nbsp;<br> http:\/\/fyq891014.blog.163.com\/blog\/static\/200740191201233052531278\/&nbsp;<br> http:\/\/blog.163.com\/sir_876\/blog\/static\/11705223201111544523333\/&nbsp;<br> http:\/\/www.guoweiwei.com\/archives\/797&nbsp;<br> http:\/\/www.open-open.com\/lib\/view\/open1402751642806.html&nbsp;<br> http:\/\/sishuok.com\/forum\/blogPost\/list\/5188.html;jsessionid=EBC2151611BEB99BDF390C5CADBA693A<br> http:\/\/www.micmiu.com\/j2ee\/spring\/spring-classpath-start\/<br> http:\/\/elf8848.iteye.com\/blog\/2008595<br> http:\/\/blog.csdn.net\/arvin_qx\/article\/details\/6829873<br> \u8f7b\u91cf\u7ea7javaEE\u4f01\u4e1a\u5e94\u7528\u5b9e\u6218\uff08\u7b2c3\u7248\uff09 ---\u674e\u521a<\/p>\n\n\n<p><\/p>\n\n\n<p><\/p>\n\n\n<p><\/p>\n\n\n<p><\/p>\n<!--wp-compress-html no compression--><!--wp-compress-html-->","protected":false},"excerpt":{"rendered":"\u539f\u6587\u94fe\u63a5\uff1ahttps:\/\/blog.csdn.net\/believejava\/article\/details\/43229361 1.web.xml\u52a0\u8f7d\u8fc7\u7a0b\uff08\u6b65\u9aa4\uff09 \u9996\u5148\u7b80\u5355\u8bb2\u4e00\u4e0b\uff0cweb.xml\u7684\u52a0\u8f7d \u00b7\u00b7\u00b7","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[40],"tags":[94,95],"views":12029,"_links":{"self":[{"href":"https:\/\/qtvz.com\/api\/wp\/v2\/posts\/453"}],"collection":[{"href":"https:\/\/qtvz.com\/api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qtvz.com\/api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qtvz.com\/api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qtvz.com\/api\/wp\/v2\/comments?post=453"}],"version-history":[{"count":6,"href":"https:\/\/qtvz.com\/api\/wp\/v2\/posts\/453\/revisions"}],"predecessor-version":[{"id":487,"href":"https:\/\/qtvz.com\/api\/wp\/v2\/posts\/453\/revisions\/487"}],"wp:attachment":[{"href":"https:\/\/qtvz.com\/api\/wp\/v2\/media?parent=453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qtvz.com\/api\/wp\/v2\/categories?post=453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qtvz.com\/api\/wp\/v2\/tags?post=453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}