{"id":1404,"date":"2018-07-29T20:58:48","date_gmt":"2018-07-29T12:58:48","guid":{"rendered":"https:\/\/www.xiaobo.li\/?p=1404"},"modified":"2018-07-29T20:58:48","modified_gmt":"2018-07-29T12:58:48","slug":"jsp-tomcat","status":"publish","type":"post","link":"https:\/\/www.xiaobo.li\/notes\/archives\/1404","title":{"rendered":"JSP &#038; tomcat"},"content":{"rendered":"<div>\n<div>\n<div>\u8bbe\u7f6ejsp\u9ed8\u8ba4pageEncoding\uff1bwindows-&gt;preference-&gt;myeclipse-&gt;files and editors-&gt;jsp-&gt;encoding \u00a0utf-8<\/div>\n<div>\u8bbe\u7f6ejsp\u4e3a\u7f16\u8f91\u6a21\u5f0f\uff0c\u6ca1\u6709\u9884\u89c8\u754c\u9762\uff1ahttps:\/\/zhidao.baidu.com\/question\/581118605.html?qq-pf-to=pcqq.group<\/div>\n<div><\/div>\n<div>tomcat:\u591a\u7ebf\u7a0b\uff0c\u6bcf\u4e00\u4e2a\u5ba2\u6237\u90fd\u4f1a\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u7ebf\u7a0b\uff0c\u7ebf\u7a0b\u4e4b\u95f4\u4e92\u4e0d\u5f71\u54cd\u3002\u5355\u4f8b\u6a21\u5f0f<\/div>\n<div>\u5355\u4f8b\u6a21\u5f0f\uff1a<\/div>\n<div>\u997f\u6c49\u6a21\u5f0f\uff1a<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0\u4f18\u70b9\uff1a\u786e\u4fdd\u4e00\u4e2a\u7c7b\u88ab\u8c03\u7528\u7684\u65f6\u5019\u53ea\u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61\uff0c\u8282\u7701\u65f6\u95f4\u548c\u5185\u5b58<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0\u7f3a\u70b9\uff1a\u53ea\u8981\u52a0\u8f7d\u5230\u8fd9\u4e2a\u7c7b\uff0c\u5bf9\u8c61\u5c31\u4f1a\u88ab\u521b\u5efa\uff0c\u4f1a\u9020\u6210\u8d44\u6e90\u6d6a\u8d39<\/div>\n<div><\/div>\n<div>\u61d2\u6c49\u6a21\u5f0f\uff1a<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0\u4f18\u70b9\uff1a\u786e\u4fdd\u4e00\u4e2a\u7c7b\u88ab\u8c03\u7528\u7684\u65f6\u5019\u53ea\u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61\uff0c\u53ea\u6709\u5728\u8c03\u7528\u7684\u65f6\u5019\u624d\u751f\u51fa\u5bf9\u8c61\uff0c\u8282\u7701\u65f6\u95f4\u548c\u5185\u5b58<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0\u7f3a\u70b9\uff1a\u5b9e\u73b0\u6bd4\u8f83\u590d\u6742<\/div>\n<div><\/div>\n<div>1.Tomcat\uff1a\u514d\u8d39\u7684\u5f00\u6e90\u7684\u8f7b\u91cf\u7ea7\u7684\u670d\u52a1\u5668\uff0c\u4e2d\u5c0f\u578b\u4f01\u4e1a\u5e38\u7528<\/div>\n<div>\u00a0 \u00a0 bin: \u00a0startup.bat \u548cstartup.sh\uff08linux\uff09 \u00a0 shutdown.bat\u548cshutdown.sh<\/div>\n<div>\u00a0 \u00a0 conf: \u00a0server.xml \u00a0\u670d\u52a1\u5668\u914d\u7f6e\u6587\u4ef6 \u548c web.xml \u00a0\u9879\u76ee\u914d\u7f6e<\/div>\n<div>\u00a0 \u00a0 lib: \u5e38\u7528\u7c7b\u5e93<\/div>\n<div>\u00a0 \u00a0 logs: \u8fd0\u884c\u65e5\u5fd7\u6587\u4ef6<\/div>\n<div>\u00a0 \u00a0 webapps:\u653e\u7f6e\u8fd0\u884c\u7684\u9879\u76ee<\/div>\n<div>\u00a0 \u00a0 work:\u653e\u7f6ejsp\u7f16\u8bd1\u540e\u7684class\u6587\u4ef6<\/div>\n<div><\/div>\n<div>2.Tomcat\u7684lib\u76ee\u5f55\uff0c\u5b58\u653e\u7684jar\u4e0d\u4ec5\u80fd\u88abtomcat\u8bbf\u95ee\uff0c\u8fd8\u80fd\u88ab\u5728tomcat\u4e0a\u53d1\u5e03\u7684web\u5e94\u7528\u8bbf\u95ee\u3002<\/div>\n<div>\u00a0 \u00a0JavaWeb\u5e94\u7528\u7684lib\u76ee\u5f55\u4e0b\u7684jar\u53ea\u80fd\u88ab\u5f53\u524dweb\u5e94\u7528\u8bbf\u95ee\u3002<\/div>\n<div><\/div>\n<div>3.\u6253\u5305web\u5e94\u7528:\u00a0jar \u00a0cvf e:\\TestWeb.war *.*<\/div>\n<div>\u00a0 \u00a0\u89e3\u5305web\u5e94\u7528\uff1ajar xvf\u00a0e:\\TestWeb.war *.*<\/div>\n<div><\/div>\n<div>4.Cookie:\u4f4d\u4e8e\u8bf7\u6c42\u5934\u6216\u8005\u54cd\u5e94\u5934<\/div>\n<div>\u00a0 \u00a0a.\u6d4f\u89c8\u5668\u7b2c\u4e00\u6b21\u8bbf\u95ee\u670d\u52a1\u5668\uff0c\u6ca1\u6709cookie,\u5728\u670d\u52a1\u5668\u7b2c\u4e00\u6b21\u5e94\u7b54\u65f6\u4f1a\u5bf9\u6d4f\u89c8\u5668\u53d1\u9001\u4e00\u4e2acookie.<\/div>\n<div>\u00a0 \u00a0 \u00a0 Cookie mcookie=new Cookie(\"username\",\"tom\");<\/div>\n<div>\u00a0 \u00a0 \u00a0 res.addCookie(mcookie);<\/div>\n<div>\u00a0 \u00a0b.setMaxAge(0) \u6307\u5b9a\u6d4f\u89c8\u5668\u5220\u9664cookie<\/div>\n<div>\u00a0 \u00a0 \u00a0 setMaxAge(-1) \u6307\u5b9a\u6d4f\u89c8\u5668\u4e0d\u4fdd\u5b58cookie<\/div>\n<div>\u00a0 c.setPath(path)\u548csetDomain(domain) \u00a0\u63a7\u5236cookie\u7684\u8bfb\u5199\u8303\u56f4<\/div>\n<div>\u00a0 \u00a0 \u00a0 cookie.setPath(\"\/\"); \u00a0 \u00a0\/\/\u6574\u4e2atomcat\u670d\u52a1\u5668\u7684\u5e94\u7528\u90fd\u80fd\u8bfb\u5230<\/div>\n<div>\u00a0 \u00a0 \u00a0 cookie.setPath(\"\/app\/\"); \u00a0\/\/\u53ea\u6709app\u5e94\u7528\u80fd\u8bfb\u53d6\u5230<\/div>\n<div>\u00a0 \u00a0 \u00a0 cookie.setDomain(\"\u00a0.cat.com\"); \u00a0\/\/\u53ea\u6709\u57df\u540d\u4e3a .cat.com\u7684\u5e94\u7528\u80fd\u8bbf\u95ee\u5230\u3002<\/div>\n<div><\/div>\n<div>7.\u4e0d\u540cweb\u5e94\u7528\u901a\u8baf\uff1aTomcat\u4e2d&lt;Context=false&gt;\u8868\u793a\u8be5\u5e94\u7528\u65e0\u6cd5\u83b7\u5f97\u5176\u4ed6web\u5e94\u7528\u7684ServletContext\u5bf9\u8c61<\/div>\n<div><\/div>\n<div>8.\u907f\u514d\u5e76\u53d1\uff1a\u4e3a\u4fdd\u8bc1Servlet\u80fd\u540c\u65f6\u76f8\u5e94\u591a\u4e2a\u5ba2\u6237\u7684\u8bf7\u6c42\uff0c\u901a\u8fc7\u4e3a\u6bcf\u4e2a\u8bf7\u6c42\u5206\u914d\u4e00\u4e2a\u5de5\u4f5c\u7ebf\u7a0b\u3002\u6216\u8005\u540c\u6b65\u4ee3\u7801<\/div>\n<div><\/div>\n<div>9.JSP\u6307\u4ee4\uff1a<\/div>\n<div>\u00a0 \u00a01.\u4e00\u4e2a\u5b8c\u6574\u7684JSP\u9875\u9762\u662f\u7531\u666e\u901a\u7684\u6a21\u677f\u5143\u7d20\uff08html\uff09\u3001\u6ce8\u91ca\u5143\u7d20\u3001\u6307\u4ee4\u5143\u7d20\u3001\u00a0\u811a\u672c\u5143\u7d20\u00a0\u00a0\u3001\u52a8\u4f5c\u5143\u7d20\u6784\u6210\u3002<\/div>\n<div>\u00a0 \u00a02.\u6307\u4ee4\u6807\u8bb0\u3001JSP\u52a8\u4f5c\u6807\u8bb0\u7edf\u79f0\u4e3a\u00a0 jsp\u6807\u8bb0\u00a0 \u00a0\u3002<\/div>\n<div>\u00a0 \u00a03.JSP\u9875\u9762\u7684\u7a0b\u5e8f\u7247\u4e2d\u53ef\u4ee5\u63d2\u5165\u00a0html\u00a0\u6807\u8bb0\u3002<\/div>\n<p>4.\u5f53JSP\u9875\u9762\u7684\u4e00\u4e2a\u5ba2\u6237\u7ebf\u7a0b\u5728\u6267\u884c\u00a0 synchronized\u00a0\u65b9\u6cd5\u65f6\uff0c\u5176\u4ed6\u5ba2\u6237\u5fc5\u987b\u7b49\u5f85\u3002<\/p>\n<p>jsp\u5728\u6267\u884c\u8fc7\u7a0b\u4e2d\u7ecf\u8fc7( \u00a0\u7ffb\u8bd1)\u9636\u6bb5\uff0c\u7531web\u5bb9\u5668\u5c06\u4e4b\u8f6c\u6362\u6210java\u6e90\u4ee3\u7801<\/p>\n<p>jsp\u5728\u6267\u884c\u8fc7\u7a0b\u4e2d\u7ecf\u8fc7(\u7f16\u8bd1)\u9636\u6bb5\uff0c\u4f1a\u5c06java\u6e90\u7801\u8f6c\u6362\u6210class\u6587\u4ef6(\u00a0b\u00a0\u00a0)<\/p>\n<div>\u00a0 \u00a0\u7279\u70b9\uff1a<\/div>\n<div>\u00a0 \u00a01.Servlet:\u4f18\u70b9:\u4e1a\u52a1\u903b\u8f91\u5904\u7406\u5f88\u65b9\u4fbf\uff0c\u5199java\u4ee3\u7801\u65b9\u4fbf<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u7f3a\u70b9\uff1a\u9875\u9762\u8868\u73b0\u9ebb\u70e6<\/div>\n<div>\u00a0 \u00a02.jsp:\u4f18\u70b9\uff1a\u9875\u9762\u8868\u73b0\u65b9\u4fbf \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/\u52a8\u6001\u7f51\u9875\u6280\u672f\uff0c\u52a8\u6001\u751f\u6210\u7f51\u9875\u6570\u636e\uff0c\u800c\u4e0d\u662f\u52a8\u6001\u6548\u679c\u7684\u7f51\u9875<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u7f3a\u70b9\uff1a\u4e1a\u52a1\u903b\u8f91\u5904\u7406\u9ebb\u70e6\uff0c<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u4e24\u8005\u901a\u5e38\u7ed3\u5408\u4f7f\u7528\u3002<\/div>\n<div>\u00a0\u00a0\u4e3a\u4ec0\u4e48\u8bf4jsp\u662fServlet?<\/div>\n<div>\u00a0 \u00a0\u56e0\u4e3ajsp\u9875\u9762\u88ab\u8bbf\u95ee\u65f6\u4f1a\u88abtomcat\u7f16\u8bd1\u751f\u6210\u5bf9\u5e94\u7684java\u6587\u4ef6\uff0cjava\u6587\u4ef6\u5bf9\u5e94\u7684\u7c7b\u7ee7\u627forg.apache.jasper.runtime.HttpJspBase\u7c7b<\/div>\n<div>\u00a0 \u00a0\u800cHttpJspBase\u53c8\u7ee7\u627f\u4e8eHttpServlet.<\/div>\n<div>\u00a0\u00a0Jsp\u7684\u6267\u884c\u8fc7\u7a0b\uff1a<\/div>\n<div>\u00a0 \u00a0 \u00a01.\u5ba2\u6237\u7aef\u53d1\u9001\u4ee5 .jsp\u7ed3\u5c3e\u7684\u8bf7\u6c42(url)<\/div>\n<div>\u00a0 \u00a0 \u00a02.\u670d\u52a1\u5668\u63a5\u6536\u8bf7\u6c42\u540e\uff0c\u4f1a\u8fdb\u884c\u62e6\u622a(tomcat\u7684web.xml)\uff0c\u8c03\u7528JspServlet\u7c7b\uff0c\u5904\u7406jsp\u6587\u4ef6\uff0c\u751f\u6210\u5bf9\u5e94\u7684java\u6587\u4ef6\u548cclass\u6587\u4ef6(work\u6587\u4ef6\u5939\u4e0b)<\/div>\n<div>\u00a0 \u00a0 \u00a03.tomcat\u4f1a\u8c03\u7528\u751f\u6210\u597d\u7684class\u6587\u4ef6\u751f\u6210html\u4ee3\u7801\uff0c\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef<\/div>\n<div>\u00a0\u00a0web.xml\u5173\u4e8ejsp\u6587\u4ef6\u914d\u7f6e<\/div>\n<div>\u00a0 \u00a0&lt;%@ \u6307\u4ee4\u540d \u5c5e\u6027=\"\u503c\" \u00a0%&gt; \u00a0 \u5e38\u89c1\u6307\u4ee4\uff1apage \u00a0include \u00a0taglib \u00a0 \u7f16\u8bd1\u6307\u4ee4\uff0c\u901a\u77e5Servlet\u5f15\u64ce\u5904\u7406\u6d88\u606f<\/div>\n<div>\u00a0 \u00a0 errorPage=\"error.jsp\" \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/\u53ea\u80fd\u5904\u7406\u8fd0\u884c\u65f6\u9519\u8bef\uff0c\u4e0d\u80fd\u5904\u7406\u7f16\u8bd1\u65f6\u7684\u9519\u8bef<\/div>\n<div>\u00a0 \u00a0 web.xml\u9519\u8bef\u5904\u7406\uff1a<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0&lt;error-page&gt;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0&lt;error-code&gt;404&lt;\/error-code&gt;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0&lt;location&gt;\/error404.jsp&lt;\/location&gt;<\/div>\n<p>&lt;\/error-page&gt;<\/p><\/div>\n<div>\n<div>\u00a0 \u00a0&lt;% page method=\"doPost\" \u00a0%&gt;<\/div>\n<div>\u00a0 \u00a0&lt;%@ include file=\"\u6587\u4ef6\u7edd\u5bf9URL\u6216\u76f8\u5bf9URL\" %&gt; \u00a0 \u9759\u6001\u5305\u542b\uff0c\u76ee\u6807\u53ef\u662fHTML\u6216JSP\uff0c\u4f46\u4e0d\u80fd\u662fServlet<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u9759\u6001\u5bfc\u5165\uff1a1.\u628a\u591a\u4e2a\u9875\u9762\u5408\u6210\u4e00\u4e2a\u9875\u9762(\u7f16\u8bd1\u6210\u4e00\u4e2a\u9875\u9762)\uff0c\u4e0d\u80fd\u6709\u76f8\u540c\u7684\u53d8\u91cf\u3002<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 2.\u6267\u884c\u6548\u7387\u76f8\u5bf9\u8f83\u9ad8<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 3.\u901a\u5e38\u7528\u6237\u6ca1\u6709java\u4ee3\u7801\u9875\u9762<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 4.\u8026\u5408\u6027\u76f8\u5bf9\u8f83\u9ad8<\/div>\n<div>\u00a0 \u00a0&lt;jsp:include page=\"\u76ee\u6807\u7684\u7edd\u5bf9URL\u6216\u76f8\u5bf9URL\"\/&gt; \u00a0\u52a8\u6001\u5305\u542b \u00a0HTML\u3001JSP(\u76ee\u6807\u54cd\u5e94\u7ed3\u679c\u4f1a\u88ab\u52a0\u5230\u6e90\u7ec4\u4ef6)\u6216Servlet\u90fd\u53ef\u4ee5<\/div>\n<div>\u00a0 \u00a0\u65e0\u8bba\u662f\u9759\u6001\u8fd8\u662f\u52a8\u6001\u5305\u542b\uff0c\u6e90\u7ec4\u4ef6\u548c\u76ee\u6807\u7ec4\u4ef6\u90fd\u5171\u4eab\u8bf7\u6c42\u8303\u56f4\u5185\u7684\u5171\u4eab\u6570\u636e\u3002<\/div>\n<div>\u00a0 \u00a0 \u00a0\u52a8\u6001\u5bfc\u5165\uff1a1.\u5206\u522b\u751f\u6210\u5404\u81ea\u7684java\u6587\u4ef6\u548cclass\u6587\u4ef6\uff0c\u4e92\u4e0d\u5f71\u54cd\uff0c\u53ef\u4ee5\u6709\u76f8\u540c\u7684\u53d8\u91cf<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a02.\u6267\u884c\u6548\u7387\u76f8\u5bf9\u8f83\u4f4e<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a03.\u901a\u5e38\u7528\u5728java\u4ee3\u7801\u8f83\u591a\u7684\u9875\u9762<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a04.\u8026\u5408\u6027\u76f8\u5bf9\u8f83\u4f4e<\/div>\n<div><\/div>\n<div>\u00a0 \u4e0d\u80fd\u540c\u4e00\u4e2a\u9875\u9762\uff0c\u4e24\u6b21forward,\u7c7b\u4f3cservlet<\/div>\n<div>10.\u58f0\u660e\uff1a<\/div>\n<div>\u00a0 \u00a0&lt;% ! declar;declar;... \u00a0%&gt;<\/div>\n<div>\u00a0 &lt;%! int\u00a0a=10,b,c; String d=\"ww\"; %&gt; \u00a0 \u58f0\u660e\u5168\u5c40\u53d8\u91cf\uff1a\u4e0d\u5efa\u8bae\u4f7f\u7528\uff0c\u56e0\u4e3aServlet\u4e2d\u4e0d\u5efa\u8bae\u58f0\u660e\u5168\u5c40\u53d8\u91cf<\/div>\n<div><\/div>\n<div>11.\u4ee3\u7801\u6bb5\uff1a<\/div>\n<div>\u00a0 \u00a0&lt;% %&gt;<\/div>\n<div>\u00a0 &lt;%\u00a0a++; %&gt;<\/div>\n<div><\/div>\n<div>12.\u8868\u8fbe\u5f0f:<\/div>\n<div>\u00a0 &lt;%=a++%&gt;<\/div>\n<div><\/div>\n<div>13.\u6ce8\u91ca: &lt;%--aaaa--%&gt; \u00a0 \u00a0 \u00a0 \u00a0\u76f4\u63a5\u4e0d\u4f1a\u88ab\u7f16\u8bd1\uff0c\u5176\u4ed6\u7684\u6ce8\u91ca\u5199\u5728jsp\u4e2d\u4f1a\u88ab\u7f16\u8bd1(\u5982html\u6ce8\u91ca \u00a0&lt;!--aa---&gt;)<\/div>\n<div><\/div>\n<div>14.\u9690\u542b\u5bf9\u8c61:<\/div>\n<div>\u00a0 \u00a0 \u56db\u5927\u4f5c\u7528\u57df<\/div>\n<div>\u00a0 \u00a0 \u00a0request:<\/div>\n<div>\u00a0 \u00a0 \u00a0session:<\/div>\n<div>\u00a0 \u00a0 \u00a0application:\u6700\u5927\u4f5c\u7528\u57df\uff0c\u5168\u5c40\u5171\u4eab\u4fe1\u606f<\/div>\n<div>\u00a0 \u00a0 \u00a0pageContext:\u4f5c\u7528\u57df\u6700\u5c0f\uff0c\u53ea\u4f5c\u7528\u4e8e\u5f53\u524d\u7684\u9875\u9762\uff1b\u4f46\u53ef\u4ee5\u901a\u8fc7pageContext\u83b7\u53d6\u5176\u4ed6\u516b\u4e2a\u4f5c\u7528\u57df<\/div>\n<div><\/div>\n<div>\u00a0 \u00a0 \u00a0out\uff1a\u5411\u5ba2\u6237\u7aef\u53d1\u9001\u6570\u636e\u7684\u5bf9\u8c61(\u5982html\u9875\u9762\u4ee3\u7801)<\/div>\n<div>\u00a0 \u00a0 \u00a0response: \u00a0jsp\u4e2d\u4e0d\u63a8\u8350\u4f7f\u7528<\/div>\n<div><\/div>\n<div>\u00a0 \u00a0 \u00a0config\uff1agetInitParameter()\u548cgetInitParamterValues() \u00a0 \u83b7\u53d6servlet\u7684\u914d\u7f6e\u4fe1\u606f\uff0c\u4f46\u4e0d\u5efa\u8bae\u5728jsp\u7528<\/div>\n<div>\u00a0 \u00a0 \u00a0page\uff1a<\/div>\n<div>\u00a0 \u00a0 \u00a0exception\uff1a\u4f7f\u7528&lt;% page isErrorPage='true'%&gt;<\/div>\n<div><\/div>\n<div>\u00a0 \u00a0\u8def\u5f84\u95ee\u9898\uff1a<\/div>\n<div>\u00a0 \u00a0 \u00a0\u670d\u52a1\u5668\u6839\u8def\u5f84\uff1a<a href=\"http:\/\/localhost:8080\/\" target=\"_blank\" rel=\"nofollow noopener\">http:\/\/localhost:8080\/<\/a>\u00a0 \u00a0 \u00a0\u00a0D:\\MainSoftWare\\tomcat7\\apache-tomcat-7.0.72\\webapps<\/div>\n<div>\u00a0 \u00a0 \u00a0\u9879\u76ee\u6839\u8def\u5f84\uff1a<a href=\"http:\/\/localhost:8080\/\" target=\"_blank\" rel=\"nofollow noopener\">http:\/\/localhost:8080\/<\/a>Demo\/\u00a0 \u00a0 \u00a0 \u00a0D:\\MainSoftWare\\tomcat7\\apache-tomcat-7.0.72\\webapps\\Demo<\/div>\n<div>\u00a0 \u00a0 \u00a0String\u00a0path\u00a0=\u00a0request.getContextPath();<\/div>\n<div>\u00a0 \u00a0 String\u00a0basePath\u00a0=\u00a0request.getScheme()+\":\/\/\"+request.getServerName()+\":\"+request.getServerPort()+path+\"\/\";<\/div>\n<div>\u00a0\u00a0 \u00a0&lt;base\u00a0href=\"&lt;%=basePath%&gt;\"&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/base:\u9ed8\u8ba4\u5728\u672c\u9875\u9762\u6240\u6709\u7684\u8d85\u94fe\u63a5\u548c\u8def\u5f84\u524d\u9762\u52a0\u9879\u76ee\u7684\u6839\u8def\u5f84<\/div>\n<div>\u00a0 \u00a0 &lt;a href=\"index.jsp\"&gt;path&lt;\/a&gt; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/http:\/\/localhost:8080\/Demo\/index.jsp<\/div>\n<div>\u00a0 \u00a0 \u00a0\u00a0req.getRequestDispather(\"\/\").forward(req,resp); \u00a0 \u00a0 \u00a0\/\/\u8bf7\u6c42\u8f6c\u53d1 \u00a0 \"\/\" \u00a0\u4ee3\u8868\u9879\u76ee\u6839\u8def\u5f84 \u00a0<a href=\"http:\/\/localhost:8080\/Demo\/\" target=\"_blank\" rel=\"nofollow noopener\">http:\/\/localhost:8080\/Demo\/<\/a><\/div>\n<div>\u00a0 \u00a0 \u00a0resp.sendRedirect(\"\/\"); \u00a0 \u00a0 \u00a0 \u00a0\/\/\u91cd\u5b9a\u5411 \u00a0 \u00a0 \u00a0\"\/\" \u4ee3\u8868\u670d\u52a1\u5668\u6839\u8def\u5f84 \u00a0\u00a0<a href=\"http:\/\/localhost:8080\/\" target=\"_blank\" rel=\"nofollow noopener\">http:\/\/localhost:8080\/<\/a><\/div>\n<div>\u00a0 \u00a0 &lt;url-pattern&gt;\/index.jsp&lt;\/url-pattern&gt; \u00a0\/\/ \u00a0\"\/\"\u4ee3\u8868\u9879\u76ee\u7684\u6839\u8def\u5f84<\/div>\n<div><\/div>\n<div>\u00a0 \u00a0 1.\u76f8\u5bf9\u8def\u5f84\uff1a\u4e0d\u80fd\u6539\u53d8\u6587\u4ef6\u7684\u76f8\u5bf9\u4f4d\u7f6e<\/div>\n<div><\/div>\n<div>\u00a0 \u00a0 \u00a02.\u7edd\u5bf9\u8def\u5f84\uff1a\u4e0d\u80fd\u4fee\u6539\u9879\u76ee\u7684\u540d\u79f0(\u63a8\u8350\u4f7f\u7528\u7edd\u5bf9\u8def\u5f84)<\/div>\n<div><\/div>\n<div>15.\u8bf7\u6c42\u8f6c\u53d1 \u00a0 \u00a0\u52a8\u4f5c\u6307\u4ee4\uff1ajsp:forward\u3001jsp:param\u7b49\u53ea\u662f\u8fd0\u884c\u65f6\u7684\u52a8\u4f5c<\/div>\n<div>\u00a0 \u00a0&lt;jsp:forward \u00a0page=\"\u76ee\u6807\u7684\u7edd\u5bf9URL\u6216\u76f8\u5bf9URL\"\/&gt; \u00a0\u8bf7\u6c42\u8f6c\u53d1\u4e4b\u540e\u7684\u4ee3\u7801\u4e0d\u4f1a\u7ee7\u7eed\u6267\u884c<\/div>\n<div>\u00a0 \u00a0\u7279\u70b9\uff1a\u6267\u884cforward\u65f6\uff0c\u7528\u6237\u8bf7\u6c42\u7684\u5730\u5740\u6ca1\u6709\u53d1\u751f\u6539\u53d8\uff0c\u4f46\u662f\u8bf7\u6c42\u7684\u53c2\u6570\u3001\u5c5e\u6027\u4e0d\u4e22\u5931<\/div>\n<div><\/div>\n<div>16.\u5f02\u5e38\u9875\uff1a<\/div>\n<div>\u00a0 \u00a0 \u00a0&lt;%@ page errorPage=\"errorpage.jsp\" %&gt;\u00a0 \u5e94\u5148\u58f0\u660e\u4e3a\u5f02\u5e38\u9875&lt;% pageisErrorPage=\"true\" %&gt;<\/div>\n<div><\/div>\n<div>17.\u9884\u7f16\u8bd1\uff1a<\/div>\n<div>\u00a0 \u00a0 http:\/\/localhost:8080\/app\/hello.jsp?jsp_precompile=true<\/div>\n<div><\/div>\n<div>18.JNDI(\u8d1f\u8d23\u5c06\u5bf9\u8c61\u548c\u540d\u5b57\u7ed1\u5b9a\uff0c\u5bf9\u8c61\u5de5\u5382\u8d1f\u8d23\u751f\u4ea7\u51fa\u5bf9\u8c61):<\/div>\n<div>\u00a0 \u00a0JDBC2.0\u5f00\u59cb\u63d0\u4f9bjavax.sql.DataSource\uff0c\u8d1f\u8d23\u5efa\u7acb\u4e0e\u6570\u636e\u5e93\u7684\u94fe\u63a5\uff0c\u5728\u7a0b\u5e8f\u4e2d\u8bbf\u95ee\u6570\u636e\u65f6<\/div>\n<div>\u00a0 \u00a0\u4e0d\u5fc5\u7f16\u5199\u8fde\u63a5\u6570\u636e\u5e93\u7684\u4ee3\u7801\uff0c\u53ef\u4ee5\u76f4\u63a5\u4ece\u6570\u636e\u6e90\u4e2d\u83b7\u53d6\u6570\u636e\u5e93\u8fde\u63a5\u3002<\/div>\n<div>\u00a0 \u00a0 Context:\u670d\u52a1\u7aef:bind(String str,Object obj); \u00a0 \u00a0 \u00a0\u5c06\u5bf9\u8c61\u4e0e\u4e00\u4e2a\u540d\u5b57\u7ed1\u5b9a<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 lookup(String name); \u00a0 \u00a0 \u00a0\u8fd4\u56de\u6307\u5b9a\u540d\u5b57\u7ed1\u5b9a\u7684\u5bf9\u8c61<\/div>\n<div>\u00a0 \u00a0\u5728META-INF\u4e0b\u914d\u7f6econtext.xml\uff1a<\/div>\n<div>\u00a0 \u00a0&lt;Context\u00a0reloadable=\"true\"&gt;<\/div>\n<div>\u00a0\u00a0&lt;Resource\u00a0name=\"jdbc\/bookdb\"\u00a0auth=\"Container\"\u00a0type=\"javax.sql.DataSource\"<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0maxActive=\"100\"\u00a0maxIdle=\"30\"\u00a0maxWait=\"10000\"<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0username=\"root\"\u00a0\u00a0password=\"123456\"<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0driverClassName=\"com.mysql.jdbc.Driver\"<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0url=\"jdbc:mysql:\/\/localhost:3306\/bookdb?autoReconnect=true\"\/&gt;<\/div>\n<p>&lt;\/Context&gt;<\/p><\/div>\n<div>\u00a0 \u00a0\u5e76\u4e14\u5728web.xml\u4e2d\u914d\u7f6e\uff1a<\/div>\n<div>\u00a0 \u00a0&lt;web-app&gt;<\/div>\n<div>\u00a0 \u00a0\u00a0&lt;resource-ref&gt;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;description&gt;MYSQLDB\u00a0Connection&lt;\/description&gt;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;res-ref-name&gt;jdbc\/bookdb&lt;\/res-ref-name&gt;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;res-type&gt;javax.sql.DataSource&lt;\/res-type&gt;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;res-auth&gt;Container&lt;\/res-auth&gt;<\/div>\n<div>\u00a0 \u00a0\u00a0&lt;\/resource-ref&gt;<\/div>\n<p>&lt;\/web-app&gt;<\/p>\n<div>\u00a0 \u00a0public\u00a0BaseDao()\u00a0throws\u00a0Exception{<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u5f15\u5165JNDI\u5bf9\u8c61\u4e0e\u540d\u5b57\u7ed1\u5b9a<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Context\u00a0ctx=new\u00a0InitialContext();<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(null==ctx)<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throw\u00a0new\u00a0Exception(\"No\u00a0Exception\");<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ds=(DataSource)\u00a0ctx.lookup(\"java:comp\/env\/jdbc\/bookdb\");<\/div>\n<p>}<\/p>\n<div><\/div>\n<div>19.session\u4f1a\u8bdd\uff1a<\/div>\n<div>\u00a0 invalidate(); \u00a0 \u9500\u6bc1\u5f53\u524d\u7684\u4f1a\u8bdd\uff0cServlet\u5bb9\u5668\u91ca\u653eHttpSession\u5bf9\u8c61\u5360\u7528\u7684\u8d44\u6e90<\/div>\n<div>\u00a0\u00a0cookie\u673a\u5236\u901a\u5e38\u7528\u4e8e\u4fdd\u5b58\u5ba2\u6237\u7684\u72b6\u6001\u4fe1\u606f\uff0c\u8bbe\u7f6e\u6700\u5927\u5b58\u6d3b\u65f6\u95f4\u540e\uff0c\u4f1a\u4fdd\u5b58\u5230\u6d4f\u89c8\u5668\u7684\u786c\u76d8\uff0c\u6240\u4ee5\u8981\u6c42cookie\u7684\u5c5e\u6027\u503c\u5fc5\u987b\u662f\u53ef\u5e8f\u5217\u5316\u7684<\/div>\n<div>\u00a0 Servlet\u5bb9\u5668\u521b\u5efa\u65b0\u7684HttpSession:<\/div>\n<div>\u00a0 a.\u4e00\u4e2a\u6d4f\u89c8\u5668\u8fdb\u7a0b\u7b2c\u4e00\u6b21\u8bbf\u95eeWeb\u5e94\u7528\u4e2d\u652f\u6301\u4f1a\u8bdd\u4e2d\u7684\u4efb\u4e00\u4e2a\u7f51\u9875\u3002<\/div>\n<div>\u00a0 b.\u5f53\u6d4f\u89c8\u5668\u4e0eweb\u5e94\u7528\u7684\u4e00\u6b21\u4f1a\u8bdd\u5df2\u7ecf\u88ab\u9500\u6bc1\u540e\uff0c\u6d4f\u89c8\u5668\u8fdb\u7a0b\u518d\u6b21\u8bbf\u95eeweb\u5e94\u7528\u4e2d\u7684\u652f\u6301\u4f1a\u8bdd\u7684\u4efb\u4e00\u4e2a\u7f51\u9875\u3002<\/div>\n<div>\u00a0 JSP\u9ed8\u8ba4\u652f\u6301\u4f1a\u8bdd\uff0cHttpServlet\u9ed8\u8ba4\u4e0d\u652f\u6301\u4f1a\u8bdd\u3002<\/div>\n<div>\u00a0response.encodeURL(url) \u00a0 \u4f1a\u5728\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u4f1a\u8bdd\u7684\u60c5\u51b5\uff0c\u4f7f\u7528URL\u652f\u6301\u4f1a\u8bdd\u3002<\/div>\n<div>\u00a0response.sendRedirect(response.encodeRedirectURL(\"mail.jsp\")); \u00a0\u91cd\u5b9a\u5411\u65f6\u7528<\/div>\n<div><\/div>\n<div>\u00a0Cookie:<\/div>\n<div>\u00a0 Cookie cookie=new Cookie(\"name\",\"kkk\");<\/div>\n<div>\u00a0 res.addCookie(cookie);<\/div>\n<div>\u00a0cookie\u652f\u6301\u4e2d\u6587<\/div>\n<div>\u00a0\u53d1\u9001\u524d\u5148\u7f16\u7801\uff1a<\/div>\n<div>\u00a0 \u00a0 \u00a0\u00a0java.net.URLEncoder.encode(\"\u4e66\",\"utf-8\");<\/div>\n<div>\u00a0 \u63a5\u6536\u7aef\u89e3\u7801\uff1a<\/div>\n<div>\u00a0 \u00a0 \u00a0java.net.URLDecoder.decode(cookies[i].getValue(),\"utf-8\");<\/div>\n<div><\/div>\n<div>20.Tomcat\u4f1a\u8bdd\u7ba1\u7406\uff1a<\/div>\n<div>\u00a0 \u00a0a.StandardManager:\u6807\u51c6\u4f1a\u8bdd\u7ba1\u7406\u5668\u3002<\/div>\n<div>\u00a0 \u00a0b.PersistentManager:\u66f4\u591a\u4f1a\u8bdd\u7ba1\u7406\u529f\u80fd\u3002<\/div>\n<div>\u00a0 \u00a0\u4f1a\u8bdd\u5b58\u50a8\uff1a<\/div>\n<div>\u00a0 \u00a0FileStore:\u5c06HttpSession\u5bf9\u8c61\u4fdd\u5b58\u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d<\/div>\n<div>\u00a0 \u00a0JDBCStore:\u5c06HttpSession\u5bf9\u8c61\u4fdd\u5b58\u5728\u6570\u636e\u5e93\u7684\u4e00\u5f20\u8868\u4e2d<\/div>\n<div><\/div>\n<div>21.\u4f1a\u8bdd\u76d1\u542c:<\/div>\n<div>\u00a0HttpSessionListener\u548cHttpSessionAttributeListener,\u5fc5\u987b\u5728web.xml\u4e2d\u901a\u8fc7&lt;listener&gt;\u5411Servlet\u5bb9\u5668\u6ce8\u518c\u3002<\/div>\n<div><\/div>\n<div>23.EL\u8868\u8fbe\u5f0f\uff1a<\/div>\n<div>\u00a0 \u00a0 \u4f18\u70b9\uff1a1.\u4e0d\u7528\u5bfc\u5305 2.\u7b80\u6d01 3.\u5982\u679c\u53c2\u6570\u6ca1\u6709\u4f20\u8fc7\u6765\uff0c\u5219\u4ec0\u4e48\u90fd\u4e0d\u663e\u793a<\/div>\n<div>\u00a0 \u00a0 User\u91cc\u5b58Address\u5bf9\u8c61<\/div>\n<div>\u00a0 \u00a0 EL\u8868\u8fbe\u5f0f\uff1a$+{ }<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0\u8868\u8fbe\u5f0f\u83b7\u53d6\u53c2\u6570\u4fe1\u606f<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;&lt;%=request.getParameter(\"uname\") %&gt;&lt;\/li&gt;<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;&lt;%=request.getParameterValues(\"fav\")[0]\u00a0%&gt;&lt;\/li&gt;<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;&lt;%=request.getAttribute(\"realname\")\u00a0%&gt;&lt;\/li&gt;<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;&lt;%=((List&lt;String&gt;)request.getAttribute(\"list\")).get(2) %&gt;&lt;\/li&gt;<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;&lt;%=((Map&lt;String,String&gt;)request.getAttribute(\"map\")).get(\"CC\") %&gt; &lt;\/li&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 &lt;li&gt;&lt;%=((User)request.getAttribute(\"user\")).getAddress().getTown()\u00a0%&gt; &lt;\/li&gt;<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;&lt;%=((List&lt;User&gt;)request.getAttribute(\"userList\")).get(2).getAddress().getTown() %&gt; &lt;\/li&gt;<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;&lt;%=((Map&lt;String,User&gt;)request.getAttribute(\"userMap\")).get(\"user3\").getAddress().getTown() %&gt; &lt;\/li&gt;<\/div>\n<div><\/div>\n<div>\u00a0 \u00a0 \u00a0 EL\u83b7\u53d6\u8bf7\u6c42\u53c2\u6570\u4fe1\u606f<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;${param.uname }&lt;\/li&gt;<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;${paramValues.fav[0]\u00a0}&lt;\/li&gt; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 getParamter\u5219\u9700\u8981param\u83b7\u53d6<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;${realname }&lt;\/li&gt; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0getAttribute\u76f4\u63a5\u83b7\u53d6\u5c5e\u6027<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;${list[2] }&lt;\/li&gt;<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;${map.CC }&lt;\/li&gt;<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;${user.address.town\u00a0}&lt;\/li&gt; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 address\u5fc5\u987b\u4e0eUser\u7c7b\u4e2d\u7684address\u5927\u5c0f\u5199\u4e00\u6837<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;${userList[2].address.town }&lt;\/li&gt;<\/div>\n<div>\u00a0 \u00a0\u00a0 &lt;li&gt;${userMap.user3.address.town }&lt;\/li&gt;<\/div>\n<div><\/div>\n<div>24.EL\u53d6\u503c\u8303\u56f4\uff1a<\/div>\n<div>\u00a0 \u00a0 \u00a01.el\u8868\u8fbe\u5f0f\u53d6\u503c\u9ed8\u8ba4\u4ece\u5c0f\u5230\u5927\u53d6\u503c(pageContext-&gt;request-&gt;session-&gt;application)<\/div>\n<div>\u00a0 \u00a0 \u00a02.pageScope\uff1a\u00a0requestScope\uff1asessionScope\uff1a\u00a0applicationScope\uff1a<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u5bfc\u5165fmt.tld\u6587\u4ef6<\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div>25.\u00a0.\u548c[] \u00a0 \u00a0\u8bbf\u95ee\u4e00\u4e2abean\u5c5e\u6027\u6216\u8005Map entry \u00a0 \u00a0 \u00a0 \u00a0.\u00a0\u53d6\u503c\u65b9\u4fbf\uff0c[]\u529f\u80fd\u5f3a\u5927<\/div>\n<div>\u00a0 \u00a0 \u00a0 ${user.name } \u00a0 \u00a0${user[\"name\"]} \u00a0 \u00a0 \u00a0${user[name]}<\/div>\n<div><\/div>\n<div><\/div>\n<div>\u00a0 \u00a0 \u00a0 empty\uff1a\u7528\u6765\u5bf9\u4e00\u4e2a\u7a7a\u53d8\u91cf\u503c\u8fdb\u884c\u5224\u65ad\uff1anull\u3001\u4e00\u4e2a\u7a7aString\u3001\u7a7aMap\u3001\u6ca1\u6709\u6761\u76ee\u7684Collection\u96c6\u5408<\/div>\n<div>\u00a0 \u00a0 \u00a0 ${ empty name}<\/div>\n<div>\u00a0 \u00a0 \u00a0 + \u00a0\u4f5c\u4e3a\u7b97\u672f\u7b26,\u52a0\u64cd\u4f5c(\u4f46\u6ca1\u6709\u5b57\u7b26\u4e32\u76f8\u8fde\u7684\u64cd\u4f5c)<\/div>\n<div>\u00a0 \u00a0 \u00a0 ${1\/0} \u00a0 Infinity \u00a0 \u00a0${ 1+\"a\"} \u00a0\u4e0d\u80fd\u663e\u793a\uff0c\u7ed3\u679c\u4e3aNaN \u00a0 \u00a0 \u00a0${ 1+\"1\" } \u00a0 \u00a02<\/div>\n<div><\/div>\n<div>26.JSTL: \u66ff\u4ee3\u5728jsp\u4e2d\u5199java\u4ee3\u7801<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0\u4e3b\u8981\u662fget\/set\/remove \u00a0 \u00a0\u5bfc\u5165\u00a0&lt;%@\u00a0taglib\u00a0uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\u00a0\u00a0\"\u00a0prefix=\"s\"%&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a01.&lt;c:out value=\"${ name}\" \u00a0default=\"zhansgan\"&gt; &lt;\/c:out&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a02.&lt;c:set var=\"name\" value=\"kkk\" \u00a0scope=\"session\"&gt;&lt;\/c:set&gt; \u00a0 \u00a0 \u00a0 \/\/\u8bbe\u7f6e\u53c2\u6570 \u00a0 \u00a0${ sessionScope.name\u00a0}<\/div>\n<div>\u00a0 \u00a0 \u00a03.&lt;c:remove var=\"name\" &gt; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0${sessionScope.name \u00a0} \u00a0 \u00a0 \/\/\u79fb\u9664name\u5c31\u627e\u4e0d\u5230\u503c\uff0c\u9ed8\u8ba4\u79fb\u9664\u5168\u90e8<\/div>\n<div>\u00a0 \u00a0 \u00a04.&lt;c:if test=\"${sex==1}\"&gt;\u7537&lt;\/c:if&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a05.&lt;c:choose&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;c:when test=\"${sex==1}\"&gt;\u7537&lt;\/c:when&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;c:otherwise&gt;\u5176\u4ed6&lt;\/c:otherwise&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/c:choose&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a06.&lt;c:foreach \u00a0var=\"aa\" \u00a0begin=\"1\" \u00a0end=\"9\" \u00a0\u00a0step=\"3\"&gt; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/\u7c7b\u4f3cjava\u4e2d\u7684for<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0${aa} \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/\u6bcf\u96943\u4e2a\u8f93\u51fa\u4e00\u6b21<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/c:foreach&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;c:foreach \u00a0items=\"${list}\" var=\"aa\" \u00a0varStatus=\"vars\" &gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ${aa}--${vars.first}--${vars.last}--${vars.index} \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/\u5224\u65ad\u662f\u5426\u662flist\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20;index\u4ee3\u8868\u4e0b\u6807<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/c:foreach&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0&lt;c:foreach items=\"${userList}\" \u00a0var=\"aa\"&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ${aa.name}--${aa.address.city} \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 address\u5b58\u653e\u4e8euser\u91cc\u7684\u53e6\u4e00\u4e2a\u7c7b<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0&lt;\/c:foreach&gt;<\/div>\n<div><\/div>\n<div>Session:\u672c\u8d28\u662f\u4e00\u4e2a\u54c8\u5e0c\u8868\uff0c\u54c8\u5e0c\u8868\u7684key\u5c31\u662f\u4f20\u9012\u7ed9\u6d4f\u89c8\u5668\u7684\u540d\u4e3ajessionid\u7684Cookie\u503c\u3002<\/div>\n<div>\u5f53\u4e00\u4e2a\u503c\u8981\u4fdd\u5b58\u5230Session\u4e2d\uff0c\u987b\u6709\u4ee5\u4e0b\u6b65\u9aa4\uff1a<\/div>\n<div>(jessionid\u7684Cookie\u503c\u5728\u6d4f\u89c8\u5668\u5173\u95ed\u65f6\u4f1a\u81ea\u52a8\u5220\u9664\uff1b\u6216\u8005\u5c06\u5176MaxAge\u7684\u503c\u8bbe\u4e3a-1,\u4e5f\u80fd\u8fbe\u5230\u6d4f\u89c8\u5668\u5173\u95ed\u65f6\u81ea\u52a8\u5220\u9664\u76ee\u7684)<\/div>\n<div>\u00a0 \u00a0a.\u83b7\u53d6jsessionid\u7684\u503c\uff0c\u6ca1\u6709\u5c31\u8c03\u7528request.getSession()\u751f\u6210<\/div>\n<div>\u00a0 \u00a0b.\u5f97\u5230session\u5bf9\u8c61\u4e4b\u540e\uff0c\u901a\u8fc7setAttribute()\u5f80\u54c8\u5e0c\u8868\u4e2d\u5199\u6570\u636e<\/div>\n<div>\u00a0 \u00a0c.\u540c\u65f6\u8fd8\u53ef\u4ee5\u901a\u8fc7getAttribute\u83b7\u53d6\u8be5\u5c5e\u6027\u503c\u3002<\/div>\n<div><\/div>\n<div>fail to load the jni shared library \u00a0 \u00a0\u7531\u4e8ejdk\u7248\u672c\u4e0eeclipse\u4f4d\u6570\u7248\u672c\u4e0d\u4e00\u81f4<\/div>\n<div><a href=\"http:\/\/jingyan.baidu.com\/article\/9113f81b0607e42b3214c794.html\" target=\"_blank\" rel=\"nofollow noopener\">http:\/\/jingyan.baidu.com\/article\/9113f81b0607e42b3214c794.html<\/a><\/div>\n<\/div>\n<div>Tomcat7\u8def\u5f84:D:\\MainSoftWare\\tomcat7\\apache-tomcat-7.0.72\\webapps\\ROOT<\/div>\n<div>\n<div>taglib definition not consistent with specification version \u00a0\u95ee\u9898\uff1a<a href=\"http:\/\/www.ithao123.cn\/content-37861.html\" target=\"_blank\" rel=\"nofollow noopener\">http:\/\/www.ithao123.cn\/content-37861.html<\/a><\/div>\n<\/div>\n<div>23.\u81ea\u5b9a\u4e49\u6807\u7b7e: \u7ee7\u627fSimpleTagSupport<\/div>\n<div>\u00a0 \u00a0 TLD:\u6807\u7b7e\u5e93\u5b9a\u4e49<\/div>\n<div>\u00a0\u00a0taglib\u662f\u6839\u5143\u7d20,\u4e00\u822c\u5305\u542b\u4e09\u4e2a\u5143\u7d20\uff1a<\/div>\n<div>\u00a0 \u00a0 \u00a0 tlib-version:\u6807\u7b7e\u5e93\u5b9e\u73b0\u7684\u7248\u672c<\/div>\n<div>\u00a0 \u00a0 \u00a0 short-name:\u6807\u7b7e\u5e93\u77ed\u540d<\/div>\n<div>\u00a0 \u00a0 \u00a0 uri:\u6307\u5b9a\u8be5\u6807\u7b7e\u5e93\u7684\u552f\u4e00\u6807\u8bc6<\/div>\n<div>\u00a0 tag\uff1a\u5305\u542b\u4e0b\u5217\u5b50\u5143\u7d20\uff1a<\/div>\n<div>\u00a0 \u00a0 \u00a0 name:\u6807\u7b7e\u7684\u540d\u79f0\uff0cjsp\u901a\u8fc7\u6b64\u540d\u79f0\u6765\u4f7f\u7528\u8be5\u6807\u7b7e<\/div>\n<div>\u00a0 \u00a0 \u00a0 tag-class:\u6307\u5b9a\u6807\u7b7e\u7531\u54ea\u4e2a\u5904\u7406\u7c7b\u6765\u5904\u7406\u3002<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 body-content:\u6307\u5b9a\u6807\u7b7e\u4f53\u5185\u5bb9<\/div>\n<div>\n<div>&lt;taglib\u00a0xmlns=\"http:\/\/java.sun.com\/xml\/ns\/j2ee\"<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0xsi:schemaLocation=\"http:\/\/java.sun.com\/xml\/ns\/j2ee\u00a0http:\/\/java.sun.com\/xml\/ns\/j2ee\/web-jsptaglibrary_2_0.xsd\"<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0version=\"2.0\"&gt;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&lt;tlib-version&gt;1.0&lt;\/tlib-version&gt;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&lt;short-name&gt;SimpleTagLibrary&lt;\/short-name&gt;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&lt;uri&gt;\/jsp2-example-taglib.tld&lt;\/uri&gt; \u00a0 \u00a0\u00a0\/\/tld\u6587\u4ef6\u8def\u5f84<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&lt;tag&gt;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;name&gt;MyFirstTLD&lt;\/name&gt;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;tag-class&gt;com.lzx.MyFirstTag&lt;\/tag-class&gt;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;body-content&gt;empty&lt;\/body-content&gt;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&lt;\/tag&gt;<\/div>\n<div>&lt;\/taglib&gt;<\/div>\n<\/div>\n<div>\u5f15\u7528tld: &lt;%@\u00a0taglib\u00a0uri=\"\/jsp2-example-taglib.tld\"\u00a0prefix=\"first\"\u00a0%&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0&lt;first:MyFirstTLD\/&gt;<\/div>\n<div>24.\u5b9a\u4e49\u5e26\u5c5e\u6027\u7684\u6807\u7b7e\uff1a<\/div>\n<div>\u00a0 \u00a0\u5e26\u5c5e\u6027\u9700\u589e\u52a0\uff1a&lt;attribute&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;name&gt;ddd&lt;\/name&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;required&gt;true&lt;\/required&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;fragment&gt;true&lt;\/fragment&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0&lt;\/attribute&gt;<\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div>\u6765\u6e90\uff1a<\/div>\n<div><\/div>\n<div>https:\/\/blog.csdn.net\/q2857864700\/article\/details\/56676319<\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u8bbe\u7f6ejsp\u9ed8\u8ba4pageEncoding\uff1bwindows-&gt;preferen &hellip; <a href=\"https:\/\/www.xiaobo.li\/notes\/archives\/1404\">\u7ee7\u7eed\u9605\u8bfb <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[336],"tags":[],"class_list":["post-1404","post","type-post","status-publish","format-standard","hentry","category-jsp"],"_links":{"self":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts\/1404","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/comments?post=1404"}],"version-history":[{"count":0,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts\/1404\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/media?parent=1404"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/categories?post=1404"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/tags?post=1404"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}