Skip to content

Commit 7cf2365

Browse files
committed
Site updated: 2018-06-09 00:20:57
1 parent 363d496 commit 7cf2365

File tree

6 files changed

+9
-7
lines changed

6 files changed

+9
-7
lines changed

2017/04/02/JavaWeb-07-Servlet/index.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
<meta property="og:site_name" content="geekhoon">
9494
<meta property="og:description" content="概述1.概念Servlet是运行在服务器端的Java小程序,是Sun公司提供的一套规范,用来处理客户端请求的动态资源.Servlet是JavaWeb三大组件之一(Servlet,Filter,Listener),最为重要.Web资源分为静态资源与动态资源静态资源: HTML,文件,CSS,图片…动态资源: 由程序生成的,每次访问内容可能不一样,如Servlet,JSP">
9595
<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">
9797
<meta name="twitter:card" content="summary">
9898
<meta name="twitter:title" content="Servlet">
9999
<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
393393
<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>
394394
<p>当XXXServlet第一次被访问被初始化后,其他用户再访问XXXServlet的时候,不会重复创建,使用的是同一个XXXServlet,所以Servlet是单例的,线程不安全。</p>
395395
<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">&lt;servlet&gt;</div><div class="line"> &lt;servlet-name&gt;ServletDemo1&lt;/servlet-name&gt;</div><div class="line"> &lt;servlet-class&gt;com.itheima.demo2.servlet.ServletDemo1&lt;/servlet-class&gt;</div><div class="line"> &lt;/servlet&gt;</div><div class="line"> &lt;servlet-mapping&gt;</div><div class="line"> &lt;servlet-name&gt;ServletDemo1&lt;/servlet-name&gt;</div><div class="line"> &lt;url-pattern&gt;/ServletDemo1&lt;/url-pattern&gt;</div><div class="line"> &lt;/servlet-mapping&gt;</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>
396397
<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">在&lt;servlet&gt;中配置:</div><div class="line">&lt;!-- 取值为0或正整数:服务器启动时初始化(数字越小,越优先); --&gt;</div><div class="line">&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;</div><div class="line">一般从2开始设置,因为1是默认Servlet的优先级</div></pre></td></tr></table></figure>
397398
<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> 地址栏中的路径,必须和配置的完全一样
398399
</strong>2.目录匹配<em>*<br> /目录1/目录2/…./</em><br> 地址栏中路径,必须完全符合目录,但是目录后面的路径编写随意</p>
@@ -658,7 +659,7 @@ <h3 id="访问路径编写"><a href="#访问路径编写" class="headerlink" tit
658659

659660

660661

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>
662663

663664
</div>
664665
</section>

about/index.html

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,6 @@
7373

7474

7575

76-
77-
7876

7977
<link rel="alternate" href="/atom.xml" title="geekhoon" type="application/atom+xml" />
8078

atom.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -734,7 +734,7 @@
734734
<link href="https://geekhoon.github.io/2017/04/02/JavaWeb-07-Servlet/"/>
735735
<id>https://geekhoon.github.io/2017/04/02/JavaWeb-07-Servlet/</id>
736736
<published>2017-04-02T09:09:36.000Z</published>
737-
<updated>2018-06-04T17:18:49.483Z</updated>
737+
<updated>2018-06-08T16:20:14.669Z</updated>
738738

739739
<content type="html"><![CDATA[<h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p><strong>1.概念</strong><br>Servlet是运行在服务器端的Java小程序,是Sun公司提供的一套规范,用来处理客户端请求的动态资源.<br>Servlet是JavaWeb三大组件之一(Servlet,Filter,Listener),最为重要.<br>Web资源分为静态资源与动态资源<br>静态资源: HTML,文件,CSS,图片…<br>动态资源: 由程序生成的,每次访问内容可能不一样,如Servlet,JSP<br><a id="more"></a><br><strong>2.作用</strong><br>处理从客户端发送的请求,并对该请求做出响应<br>任务:<br> (1)获取请求参数<br> (2)处理请求<br> (3)响应(重定向,请求转发)</p>
740740
<h2 id="Servlet实现方式"><a href="#Servlet实现方式" class="headerlink" title="Servlet实现方式"></a>Servlet实现方式</h2><h3 id="版本1"><a href="#版本1" class="headerlink" title="版本1"></a>版本1</h3><p><strong>1.实现类</strong>: 实现Servlet接口,重写抽象方法(主要是service方法)<br><strong>2.配置文件(</strong>WEB_INF/web.xml): URL与类产生映射关系<br><strong>3.访问</strong>: 浏览器输入与自己配置对应的URL,执行效果:调用自定义类的service方法,Tomcat自己创建了Servlet对象,并调用service方法,此过程隐藏了</p>
@@ -751,6 +751,7 @@
751751
<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>
752752
<p>当XXXServlet第一次被访问被初始化后,其他用户再访问XXXServlet的时候,不会重复创建,使用的是同一个XXXServlet,所以Servlet是单例的,线程不安全。</p>
753753
<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>
754+
<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">&lt;servlet&gt;</div><div class="line"> &lt;servlet-name&gt;ServletDemo1&lt;/servlet-name&gt;</div><div class="line"> &lt;servlet-class&gt;com.itheima.demo2.servlet.ServletDemo1&lt;/servlet-class&gt;</div><div class="line"> &lt;/servlet&gt;</div><div class="line"> &lt;servlet-mapping&gt;</div><div class="line"> &lt;servlet-name&gt;ServletDemo1&lt;/servlet-name&gt;</div><div class="line"> &lt;url-pattern&gt;/ServletDemo1&lt;/url-pattern&gt;</div><div class="line"> &lt;/servlet-mapping&gt;</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>
754755
<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">在&lt;servlet&gt;中配置:</div><div class="line">&lt;!-- 取值为0或正整数:服务器启动时初始化(数字越小,越优先); --&gt;</div><div class="line">&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;</div><div class="line">一般从2开始设置,因为1是默认Servlet的优先级</div></pre></td></tr></table></figure>
755756
<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> 地址栏中的路径,必须和配置的完全一样
756757
</strong>2.目录匹配<em>*<br> /目录1/目录2/…./</em><br> 地址栏中路径,必须完全符合目录,但是目录后面的路径编写随意</p>

categories/index.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@
7373

7474

7575

76+
77+
7678

7779
<link rel="alternate" href="/atom.xml" title="geekhoon" type="application/atom+xml" />
7880

css/main.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1548,7 +1548,7 @@ pre .javascript .function {
15481548
width: 4px;
15491549
height: 4px;
15501550
border-radius: 50%;
1551-
background: #711bff;
1551+
background: #fb8ea8;
15521552
}
15531553
.links-of-blogroll {
15541554
font-size: 13px;

0 commit comments

Comments
 (0)