|
93 | 93 | <meta property="og:site_name" content="geekhoon"> |
94 | 94 | <meta property="og:description" content="概述1.概念Servlet是运行在服务器端的Java小程序,是Sun公司提供的一套规范,用来处理客户端请求的动态资源.Servlet是JavaWeb三大组件之一(Servlet,Filter,Listener),最为重要.Web资源分为静态资源与动态资源静态资源: HTML,文件,CSS,图片…动态资源: 由程序生成的,每次访问内容可能不一样,如Servlet,JSP"> |
95 | 95 | <meta property="og:image" content="http://oj3s07yy0.bkt.clouddn.com/blog/20180605/000657320.png"> |
96 | | -<meta property="og:updated_time" content="2018-06-04T17:18:49.483Z"> |
| 96 | +<meta property="og:updated_time" content="2018-06-08T16:20:14.669Z"> |
97 | 97 | <meta name="twitter:card" content="summary"> |
98 | 98 | <meta name="twitter:title" content="Servlet"> |
99 | 99 | <meta name="twitter:description" content="概述1.概念Servlet是运行在服务器端的Java小程序,是Sun公司提供的一套规范,用来处理客户端请求的动态资源.Servlet是JavaWeb三大组件之一(Servlet,Filter,Listener),最为重要.Web资源分为静态资源与动态资源静态资源: HTML,文件,CSS,图片…动态资源: 由程序生成的,每次访问内容可能不一样,如Servlet,JSP"> |
@@ -393,6 +393,7 @@ <h2 id="Servlet生命周期"><a href="#Servlet生命周期" class="headerlink" t |
393 | 393 | <p>Servlet生命周期:Servlet从创建到销毁的过程.<br> 何时创建:用户第一次访问Servlet创建Servlet的实例<br> 何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候.<br><strong>表述:</strong><br>用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).当Servlet项目从服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.</p> |
394 | 394 | <p>当XXXServlet第一次被访问被初始化后,其他用户再访问XXXServlet的时候,不会重复创建,使用的是同一个XXXServlet,所以Servlet是单例的,线程不安全。</p> |
395 | 395 | <h2 id="Servlet访问流程"><a href="#Servlet访问流程" class="headerlink" title="Servlet访问流程"></a>Servlet访问流程</h2><p><img src="http://oj3s07yy0.bkt.clouddn.com/blog/20180605/000657320.png" alt="mark"></p> |
| 396 | +<h3 id="代码演示"><a href="#代码演示" class="headerlink" title="代码演示"></a>代码演示</h3><p>Servlet中service方法的运行,其实是通过反射:<br><figure class="highlight"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line"><servlet></div><div class="line"> <servlet-name>ServletDemo1</servlet-name></div><div class="line"> <servlet-class>com.itheima.demo2.servlet.ServletDemo1</servlet-class></div><div class="line"> </servlet></div><div class="line"> <servlet-mapping></div><div class="line"> <servlet-name>ServletDemo1</servlet-name></div><div class="line"> <url-pattern>/ServletDemo1</url-pattern></div><div class="line"> </servlet-mapping></div><div class="line"> </div><div class="line"> Class clazz = Class.forName("com.itheima.demo2.servlet.ServletDemo1");</div><div class="line"> Method method = clazz.getMethod("service",HttpServletRequest.class,HttpServletResponse.class);</div><div class="line"> method.invoke(clazz.newInstance(),request,response);</div></pre></td></tr></table></figure></p> |
396 | 397 | <h3 id="设置Servlet初始化时机"><a href="#设置Servlet初始化时机" class="headerlink" title="设置Servlet初始化时机"></a>设置Servlet初始化时机</h3><figure class="highlight"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">在<servlet>中配置:</div><div class="line"><!-- 取值为0或正整数:服务器启动时初始化(数字越小,越优先); --></div><div class="line"><load-on-startup>1</load-on-startup></div><div class="line">一般从2开始设置,因为1是默认Servlet的优先级</div></pre></td></tr></table></figure> |
397 | 398 | <h3 id="url-pattern配置"><a href="#url-pattern配置" class="headerlink" title="url-pattern配置"></a>url-pattern配置</h3><p>Servlet映射URL时,URL的取值:<br><strong>1.完全路径匹配</strong><br><strong> /目录1/目录2/….<br> 地址栏中的路径,必须和配置的完全一样 |
398 | 399 | </strong>2.目录匹配<em>*<br> /目录1/目录2/…./</em><br> 地址栏中路径,必须完全符合目录,但是目录后面的路径编写随意</p> |
@@ -658,7 +659,7 @@ <h3 id="访问路径编写"><a href="#访问路径编写" class="headerlink" tit |
658 | 659 |
|
659 | 660 |
|
660 | 661 |
|
661 | | - <div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#概述"><span class="nav-number">1.</span> <span class="nav-text">概述</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Servlet实现方式"><span class="nav-number">2.</span> <span class="nav-text">Servlet实现方式</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#版本1"><span class="nav-number">2.1.</span> <span class="nav-text">版本1</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#版本2"><span class="nav-number">2.2.</span> <span class="nav-text">版本2</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#版本3"><span class="nav-number">2.3.</span> <span class="nav-text">版本3</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#HttpServlet源码分析"><span class="nav-number">2.3.1.</span> <span class="nav-text">HttpServlet源码分析</span></a></li></ol></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#适配器设计模式"><span class="nav-number">3.</span> <span class="nav-text">适配器设计模式</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Servlet编写具体实现"><span class="nav-number">4.</span> <span class="nav-text">Servlet编写具体实现</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#配置文件"><span class="nav-number">4.1.</span> <span class="nav-text">配置文件</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#login-html"><span class="nav-number">4.2.</span> <span class="nav-text">login.html</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#MyServlet-java"><span class="nav-number">4.3.</span> <span class="nav-text">MyServlet.java</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Servlet生命周期"><span class="nav-number">5.</span> <span class="nav-text">Servlet生命周期</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Servlet访问流程"><span class="nav-number">6.</span> <span class="nav-text">Servlet访问流程</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#设置Servlet初始化时机"><span class="nav-number">6.1.</span> <span class="nav-text">设置Servlet初始化时机</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#url-pattern配置"><span class="nav-number">6.2.</span> <span class="nav-text">url-pattern配置</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#访问路径编写"><span class="nav-number">6.3.</span> <span class="nav-text">访问路径编写</span></a></li></ol></li></ol></div> |
| 662 | + <div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#概述"><span class="nav-number">1.</span> <span class="nav-text">概述</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Servlet实现方式"><span class="nav-number">2.</span> <span class="nav-text">Servlet实现方式</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#版本1"><span class="nav-number">2.1.</span> <span class="nav-text">版本1</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#版本2"><span class="nav-number">2.2.</span> <span class="nav-text">版本2</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#版本3"><span class="nav-number">2.3.</span> <span class="nav-text">版本3</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#HttpServlet源码分析"><span class="nav-number">2.3.1.</span> <span class="nav-text">HttpServlet源码分析</span></a></li></ol></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#适配器设计模式"><span class="nav-number">3.</span> <span class="nav-text">适配器设计模式</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Servlet编写具体实现"><span class="nav-number">4.</span> <span class="nav-text">Servlet编写具体实现</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#配置文件"><span class="nav-number">4.1.</span> <span class="nav-text">配置文件</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#login-html"><span class="nav-number">4.2.</span> <span class="nav-text">login.html</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#MyServlet-java"><span class="nav-number">4.3.</span> <span class="nav-text">MyServlet.java</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Servlet生命周期"><span class="nav-number">5.</span> <span class="nav-text">Servlet生命周期</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Servlet访问流程"><span class="nav-number">6.</span> <span class="nav-text">Servlet访问流程</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#代码演示"><span class="nav-number">6.1.</span> <span class="nav-text">代码演示</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#设置Servlet初始化时机"><span class="nav-number">6.2.</span> <span class="nav-text">设置Servlet初始化时机</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#url-pattern配置"><span class="nav-number">6.3.</span> <span class="nav-text">url-pattern配置</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#访问路径编写"><span class="nav-number">6.4.</span> <span class="nav-text">访问路径编写</span></a></li></ol></li></ol></div> |
662 | 663 |
|
663 | 664 | </div> |
664 | 665 | </section> |
|
0 commit comments