﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-lingling</title><link>http://www.blogjava.net/lingling/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:00:18 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:00:18 GMT</pubDate><ttl>60</ttl><item><title>Junit测试</title><link>http://www.blogjava.net/lingling/archive/2011/01/23/343392.html</link><dc:creator>向日葵</dc:creator><author>向日葵</author><pubDate>Sun, 23 Jan 2011 02:20:00 GMT</pubDate><guid>http://www.blogjava.net/lingling/archive/2011/01/23/343392.html</guid><wfw:comment>http://www.blogjava.net/lingling/comments/343392.html</wfw:comment><comments>http://www.blogjava.net/lingling/archive/2011/01/23/343392.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lingling/comments/commentRss/343392.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lingling/services/trackbacks/343392.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
&nbsp;
<p style="margin: 0cm 0cm 0pt; background: #fafafa"><span lang="EN-US">Junit</span>是由<span lang="EN-US"> Erich Gamma </span>和<span lang="EN-US"> Kent Beck </span>编写的一个回归测试框架（<span lang="EN-US">regression testing framework</span>）。<span lang="EN-US">Junit</span>是一套框架，继承<span lang="EN-US">TestCase</span>类，就可以用<span lang="EN-US">Junit</span>进行自动测试了。</p>
<p style="margin: 0cm 0cm 0pt; background: #fafafa"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p style="text-align: left; background: #fafafa; mso-pagination: widow-orphan; mso-outline-level: 2" class="MsoNormal" align="left"><strong><span style="font-family: 宋体; letter-spacing: 0.4pt; font-size: 12pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体" lang="EN-US">1 junit</span></strong><strong><span style="font-family: 宋体; letter-spacing: 0.4pt; font-size: 12pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">特性<span lang="EN-US"><o:p></o:p></span></span></strong></p>
<p style="text-align: left; background: #fafafa; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 宋体; letter-spacing: 0.4pt; font-size: 12pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">　　<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="text-align: center; background: #f6f6f6; mso-pagination: widow-orphan" class="MsoNormal" align="center"><span style="font-family: 宋体; letter-spacing: 0.4pt; font-size: 12pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体" lang="EN-US"><a title="查看图片" href="http://baike.baidu.com/image/346bd85c65208400fbf2c0f9" target="_blank"><span style="color: #136ec2; font-size: 1pt; text-decoration: none; mso-bidi-font-size: 12.0pt; text-underline: none">&nbsp;&nbsp;</span></a><a href="http://baike.baidu.com/image/346bd85c65208400fbf2c0f9" target="_blank"><span style="color: #136ec2; text-decoration: none; text-underline: none"><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> <v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype></span></a><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/lingling/zzzzzzzz.jpg" width="491" height="472" /><o:p></o:p></span></p>
<p style="text-align: center; background: #f6f6f6; mso-pagination: widow-orphan" class="MsoNormal" align="center"><span style="font-family: 宋体; letter-spacing: 0.4pt; color: #666666; font-size: 9pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体" lang="EN-US">junit<o:p></o:p></span></p>
<p style="text-align: left; background: #fafafa; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 宋体; letter-spacing: 0.4pt; font-size: 12pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体" lang="EN-US">Junit</span><span style="font-family: 宋体; letter-spacing: 0.4pt; font-size: 12pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">是一个开放源代码的<span lang="EN-US">Java</span>测试框架，用于编写和运行可重复的测试。他是用于单元测试框架体系<span lang="EN-US">xUnit</span>的一个实例（用于<span lang="EN-US">java</span>语言）。它包括以下特性：<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="text-align: left; background: #fafafa; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 宋体; letter-spacing: 0.4pt; font-size: 12pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">　　① 用于测试期望结果的断言（<span lang="EN-US">Assertion</span>）<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="text-align: left; background: #fafafa; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 宋体; letter-spacing: 0.4pt; font-size: 12pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">　　② 用于共享共同测试数据的测试工具<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="text-align: left; background: #fafafa; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 宋体; letter-spacing: 0.4pt; font-size: 12pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">　　③ 用于方便的组织和运行测试的测试套件<span lang="EN-US"> <o:p></o:p></span></span></p>
<p style="text-indent: 26.25pt; margin: 0cm 0cm 0pt; background: #fafafa"><span style="letter-spacing: 0.4pt">④ 图形和文本的测试运行器<span lang="EN-US"><o:p></o:p></span></span></p>
<p style="text-indent: 26.25pt; margin: 0cm 0cm 0pt; background: #fafafa"><span style="letter-spacing: 0.4pt" lang="EN-US"><o:p>&nbsp;<br />
</o:p></span><strong style="mso-bidi-font-weight: normal"><span style="letter-spacing: 0.4pt" lang="EN-US">2 Eclipse</span><span style="letter-spacing: 0.4pt">中配置<span lang="EN-US">Junit<o:p></o:p></span></span></strong></p>
<p style="text-indent: 26.25pt; margin: 0cm 0cm 0pt; background: #fafafa"><span style="letter-spacing: 0.4pt">右击要使用的<span lang="EN-US">junit</span>的项目，点击<span lang="EN-US">properties—java bulid path-libraries</span>，点击<span lang="EN-US">Add External JARs,</span>加上<span lang="EN-US">JUNIT</span>包。<span lang="EN-US"><o:p></o:p></span></span></p>
<p style="text-indent: 26.25pt; margin: 0cm 0cm 0pt; background: #fafafa"><span style="letter-spacing: 0.4pt" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p style="margin: 0cm 0cm 0pt; background: #fafafa"><strong style="mso-bidi-font-weight: normal"><span style="letter-spacing: 0.4pt" lang="EN-US"><span style="mso-tab-count: 1">&nbsp;</span>3 </span><span style="letter-spacing: 0.4pt">用法<span lang="EN-US"><o:p></o:p></span></span></strong></p>
<p style="margin: 0cm 0cm 0pt; background: #fafafa; mso-layout-grid-align: none"><span style="letter-spacing: 0.4pt" lang="EN-US">- </span><span style="letter-spacing: 0.4pt">创建，从<span lang="EN-US">junit.framework.TestCase</span>派生<span lang="EN-US">nuit test</span>需要的<span lang="EN-US">test case.<o:p></o:p></span></span></p>
<p style="margin: 0cm 0cm 0pt; background: #fafafa; mso-layout-grid-align: none"><span style="letter-spacing: 0.4pt" lang="EN-US">- </span><span style="letter-spacing: 0.4pt">书写测试方法<span lang="EN-US"><o:p></o:p></span></span></p>
<p style="margin: 0cm 0cm 0pt; background: #fafafa; mso-layout-grid-align: none"><span style="letter-spacing: 0.4pt" lang="EN-US">- </span><span style="letter-spacing: 0.4pt">编译 书写玩<span lang="EN-US">test case</span>后，编译所写的<span lang="EN-US">test case</span>类<span lang="EN-US"><o:p></o:p></span></span></p>
<p style="margin: 0cm 0cm 0pt; background: #fafafa; mso-layout-grid-align: none"><span style="letter-spacing: 0.4pt" lang="EN-US">- </span><span style="letter-spacing: 0.4pt">运行，启动<span lang="EN-US">junit test runnner </span>来运行这个<span lang="EN-US">test case</span>。<span lang="EN-US"><o:p></o:p></span></span></p>
<p style="margin: 0cm 0cm 0pt; background: #fafafa; mso-layout-grid-align: none"><span style="letter-spacing: 0.4pt" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p style="margin: 0cm 0cm 0pt; background: #fafafa; mso-layout-grid-align: none"><span style="letter-spacing: 0.4pt" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p style="margin: 0cm 0cm 0pt; background: #fafafa; mso-layout-grid-align: none"><span style="letter-spacing: 0.4pt">实例代码：<span lang="EN-US"><o:p></o:p></span></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">package</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> com.dr.test;</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> java.util.List;</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> junit.framework.TestCase;</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> com.dr.dao.StudentDao;</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> com.dr.dao.impl.StudentDaoImpl;</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> com.dr.vo.Student;</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">public</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">class</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> StudentDaoImplTest </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">extends</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> TestCase{</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>StudentDao </span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">dao</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">;</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">protected</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">void</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> setUp() </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">throws</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> Exception{</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">dao</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">=</span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">new</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> StudentDaoImpl();</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>}</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">protected</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">void</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> tearDown() </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">throws</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> Exception{</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>}</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">public</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">void</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> testAdd(){</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Student stu=</span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">new</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> Student();</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>stu.setName(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">"ling"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">);</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>stu.setAge(1);</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>stu.setEmail(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">"ling@126.com"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">);</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">dao</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">.addStudent(stu);</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>}</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">public</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">void</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"> testListStudent(){</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>List&lt;Student&gt; list=</span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">dao</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">.getStudentList();</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.</span><em><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">out</span></em><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US">.println(list.size());</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>}</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="mso-font-kerning: 0pt" lang="EN-US">}<o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="mso-font-kerning: 0pt" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p style="text-indent: 26.25pt; margin: 0cm 0cm 0pt; background: #fafafa"><span style="letter-spacing: 0.4pt" lang="EN-US">Junit</span><span style="letter-spacing: 0.4pt">中的两个函数：<span lang="EN-US">setUp</span>与<span lang="EN-US">tearDown,</span>是<span lang="EN-US">junit framework</span>中提供初始化金额反初始化每个测试方法的。<span lang="EN-US">setUp</span>在每个测试方法调用前被调用，负责初始化测试方法所需要的测试环境；<span lang="EN-US">teardown</span>在每个测试方法被调用之后被调用，负责撤销测试环境。<span lang="EN-US"><o:p></o:p></span></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="mso-font-kerning: 0pt" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-font-kerning: 0pt">测试结果：<br />
<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/lingling/aaaaaaaa.jpg" width="966" height="197" /></span><span style="mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; mso-layout-grid-align: none" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; font-size: 10pt; mso-font-kerning: 0pt" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p style="text-indent: 26.25pt; margin: 0cm 0cm 0pt; background: #fafafa"><span style="color: #333333; font-size: 11pt; mso-hansi-font-family: ˎ̥; mso-ascii-font-family: ˎ̥">在</span><span style="font-family: ˎ̥; color: #333333; font-size: 11pt" lang="EN-US">JUnit</span><span style="color: #333333; font-size: 11pt; mso-hansi-font-family: ˎ̥; mso-ascii-font-family: ˎ̥">的窗口中显示了一个绿条，绿条证明测试成功。</span><span style="letter-spacing: 0.4pt" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.blogjava.net/lingling/aggbug/343392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingling/" target="_blank">向日葵</a> 2011-01-23 10:20 <a href="http://www.blogjava.net/lingling/archive/2011/01/23/343392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>listener监听器</title><link>http://www.blogjava.net/lingling/archive/2011/01/18/343172.html</link><dc:creator>向日葵</dc:creator><author>向日葵</author><pubDate>Tue, 18 Jan 2011 13:39:00 GMT</pubDate><guid>http://www.blogjava.net/lingling/archive/2011/01/18/343172.html</guid><wfw:comment>http://www.blogjava.net/lingling/comments/343172.html</wfw:comment><comments>http://www.blogjava.net/lingling/archive/2011/01/18/343172.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/lingling/comments/commentRss/343172.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lingling/services/trackbacks/343172.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-family: Arial; color: black">Listener</span><span style="font-family: 宋体; color: black">是</span><span style="font-family: Arial; color: black">Servlet</span><span style="font-family: 宋体; color: black">的监听器，它可以监听客户端的请求、服务端的操作等。通过监听器，可以自动激发一些操作，比如监听在线的用户的数量。当增加一个</span><span style="font-family: Arial; color: black">HttpSession</span><span style="font-family: 宋体; color: black">时，就激发</span><span style="font-family: Arial; color: black">sessionCreated(HttpSessionEvent se)</span><span style="font-family: 宋体; color: black">方法，这样就可以给在线人数加</span><span style="font-family: Arial; color: black">1</span><span style="font-family: 宋体; color: black">。常用的监听接口有以下几个：</span></p>
<p style="text-align: left; margin-bottom: 12pt; background: white" class="MsoNormal" align="left"><span style="font-family: Arial; color: black">ServletContextListener</span><span style="font-family: 宋体; color: black">监听</span><span style="font-family: Arial; color: black">ServletContext</span><span style="font-family: 宋体; color: black">。当创建</span><span style="font-family: Arial; color: black">ServletContext</span><span style="font-family: 宋体; color: black">时，激发</span><span style="font-family: Arial; color: black"> contextInitialized(ServletContextEvent sce)</span><span style="font-family: 宋体; color: black">方法；当销毁</span><span style="font-family: Arial; color: black">ServletContext</span><span style="font-family: 宋体; color: black">时，激发</span><span style="font-family: Arial; color: black">contextDestroyed(ServletContextEvent sce)</span><span style="font-family: 宋体; color: black">方法。</span></p>
<p style="text-align: left; margin-bottom: 12pt; background: white" class="MsoNormal" align="left"><span style="font-family: Arial; color: black">ServletContextAttributeListener</span><span style="font-family: 宋体; color: black">监听对</span><span style="font-family: Arial; color: black">ServletContext</span><span style="font-family: 宋体; color: black">属性的操作，比如增加、删除、修改属性。</span></p>
<p style="text-align: left; background: white" class="MsoNormal" align="left"><span style="font-family: Arial; color: black">HttpSessionListener</span><span style="font-family: 宋体; color: black">监听</span><span style="font-family: Arial; color: black">HttpSession</span><span style="font-family: 宋体; color: black">的操作。当创建一个</span><span style="font-family: Arial; color: black">Session</span><span style="font-family: 宋体; color: black">时，激发</span><span style="font-family: Arial; color: black">session Created(HttpSessionEvent se)</span><span style="font-family: 宋体; color: black">方法；当销毁一个</span><span style="font-family: Arial; color: black">Session</span><span style="font-family: 宋体; color: black">时，激发</span><span style="font-family: Arial; color: black">sessionDestroyed (HttpSessionEvent se)</span><span style="font-family: 宋体; color: black">方法。</span></p>
<p style="text-align: left; margin-bottom: 12pt; background: white" class="MsoNormal" align="left"><span style="font-family: Arial; color: black">HttpSessionAttributeListener</span><span style="font-family: 宋体; color: black">监听</span><span style="font-family: Arial; color: black">HttpSession</span><span style="font-family: 宋体; color: black">中的属性的操作。当在</span><span style="font-family: Arial; color: black">Session</span><span style="font-family: 宋体; color: black">增加一个属性时，激发</span><span style="font-family: Arial; color: black"> attributeAdded(HttpSessionBindingEvent se) </span><span style="font-family: 宋体; color: black">方法；当在</span><span style="font-family: Arial; color: black">Session</span><span style="font-family: 宋体; color: black">删除一个属性时，激发</span><span style="font-family: Arial; color: black">attributeRemoved(HttpSessionBindingEvent se)</span><span style="font-family: 宋体; color: black">方法；当在</span><span style="font-family: Arial; color: black">Session</span><span style="font-family: 宋体; color: black">属性被重新设置时，激发</span><span style="font-family: Arial; color: black">attributeReplaced(HttpSessionBindingEvent se) </span><span style="font-family: 宋体; color: black">方法。</span></p>
<p style="text-align: left; background: white" class="MsoNormal" align="left"><span style="font-family: 宋体; color: black">下面我们开发一个具体的例子，这个监听器能够统计在线的人数。<br />
<br />
</span></p>
<p style="text-align: left; background: white" class="MsoNormal" align="left"><span style="font-family: 宋体; color: black">程序源代码：</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">package</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> com.dr.web.listener;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> javax.servlet.ServletContext;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> javax.servlet.ServletContextEvent;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> javax.servlet.ServletContextListener;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> javax.servlet.http.HttpSessionEvent;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> javax.servlet.http.HttpSessionListener;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">class</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> UserCountListener </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">implements</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> ServletContextListener,</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpSessionListener {</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span><span style="font-family: 宋体; color: #3f7f5f; font-size: 10pt">每个</span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">web</span><span style="font-family: 宋体; color: #3f7f5f; font-size: 10pt">应用都有且仅有一个</span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">ServletContext</span><span style="font-family: 宋体; color: #3f7f5f; font-size: 10pt">对象，这个对象在所有的</span><u><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">Servlet</span></u><span style="font-family: 宋体; color: #3f7f5f; font-size: 10pt">都可以使用。</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">/**</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&nbsp;&nbsp;&nbsp; &nbsp;* </span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">因为一个</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">web</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">应用就一个</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">ServletContext </span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">对象，因此可以使用</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">ServletContext </span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">来做一些全局性的属性设置等。</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&nbsp;&nbsp;&nbsp; &nbsp;* </span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">比如网站访问计数器等等</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&nbsp;&nbsp;&nbsp; &nbsp;* </span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&nbsp;&nbsp;&nbsp; &nbsp;* </span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&nbsp;&nbsp;&nbsp; &nbsp;* ServletContext </span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">是一个应用程序与</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">Web</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">容器</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">(<u>tomcat</u></span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">之类</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">)</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">交互的接口</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">,</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">同时它也是管理应用程序资源的对象，</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">通过它可以读取</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">web.xml</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">中一些配置，如</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&lt;context-<u>param</u>&gt;</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">中的信息，读取应用中的资源等。</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session </span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">是一个会话对象，也就是说当客户端访问服务器页面时，它才产生，</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">原理是服务器对每个客户端产生一个</span><u><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">sessionid</span></u><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">值</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">,</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">并把它也保存在客户端，</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">每次请求时验证这个</span><u><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">sessionid</span></u><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">是否是创建了</span><u><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">sessionid</span></u><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">的客户端，在服务器端对应这个</span><u><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">sessionid</span></u><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">会创建一个缓存区，</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">存储一些相关信息</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">,</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">程序员可以操作，如被用于购物车，存储用户信息等，这个区域只有对特定用户有访问权限，对其他客户是拒绝访问的，这就是一个会话。</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Request </span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">是一个请求对象，也就是说它的生命很短暂，只在一个请求中存在，如一个页面到另一个页面，</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">一个页面到</span><u><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">servlet</span></u><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">或</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">action,</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">一个</span><u><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">servlet</span></u><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">或</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">action</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">到</span><u><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">jsp</span></u><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">页面等</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">,</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">你可以用它的</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">setAttribute</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">方法传递需要的信息</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">(</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">对象</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">),</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">验证请求方的信息</span><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">,</span><span style="font-family: 宋体; color: #3f5fbf; font-size: 10pt">获得请求方发过来的文件内容等。</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: #3f5fbf; font-size: 10pt">&nbsp;&nbsp;&nbsp; &nbsp;*/</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">private</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> ServletContext </span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt">sc</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">void</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> contextDestroyed(ServletContextEvent arg0) {</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">void</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> contextInitialized(ServletContextEvent event) {</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServletContext sc = event.getServletContext();</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc.setAttribute(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"Users"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">, </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">new</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> Integer(0));</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">this</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">.</span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt">sc</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> = sc;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">void</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> sessionCreated(HttpSessionEvent event) {</span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span><span style="font-family: 宋体; color: #3f7f5f; font-size: 10pt">在线</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><em><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt">out</span></em><span style="font-family: 'Courier New'; color: black; font-size: 10pt">.println(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"new user login our web site"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">);</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Integer users = (Integer)</span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt">sc</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">.getAttribute(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"Users"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">);</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt">sc</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">.setAttribute(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"Users"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">, ++users);</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">void</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> sessionDestroyed(HttpSessionEvent event) {</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Integer users = (Integer)</span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt">sc</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">.getAttribute(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"Users"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">);</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt">sc</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">.setAttribute(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"Users"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">, --users);</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left; background: white" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">}</span></p>
<p style="text-align: left; background: white" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">Web.xml</span><span style="font-family: 宋体; color: black; font-size: 10pt">中配置如下：</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">listener</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">listener-class</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">com.dr.web.listener.UserCountListener</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">listener-class</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
<p style="text-align: left; background: white" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&lt;/</span><span style="font-family: 'Courier New'; color: #3f7f7f; font-size: 10pt">listener</span><span style="font-family: 'Courier New'; color: teal; font-size: 10pt">&gt;</span></p>
<p style="text-align: left; margin-bottom: 12pt; background: white" class="MsoNormal" align="left"><span style="font-family: 宋体; color: black">在</span><span style="font-family: Arial; color: black">UserCountListener</span><span style="font-family: 宋体; color: black">里，用</span><span style="font-family: Arial; color: black">users</span><span style="font-family: 宋体; color: black">代表当前在线的人数，</span><span style="font-family: Arial; color: black">UserCountListener</span><span style="font-family: 宋体; color: black">将在</span><span style="font-family: Arial; color: black">Web</span><span style="font-family: 宋体; color: black">服务器启动时自动执行。当</span><span style="font-family: Arial; color: black">UserCountListener</span><span style="font-family: 宋体; color: black">构造好后，把</span><span style="font-family: Arial; color: black">users</span><span style="font-family: 宋体; color: black">设置为</span><span style="font-family: Arial; color: black"> 0</span><span style="font-family: 宋体; color: black">。每增加一个</span><span style="font-family: Arial; color: black">Session</span><span style="font-family: 宋体; color: black">，</span><span style="font-family: Arial; color: black">UserCountListener</span><span style="font-family: 宋体; color: black">会自动调用</span><span style="font-family: Arial; color: black">sessionCreated(HttpSessionEvent event)</span><span style="font-family: 宋体; color: black">方法；每销毁一个</span><span style="font-family: Arial; color: black">Session</span><span style="font-family: 宋体; color: black">，</span><span style="font-family: Arial; color: black">UserCountListener</span><span style="font-family: 宋体; color: black">会自动调用</span><span style="font-family: Arial; color: black"> sessionDestroyed(HttpSessionEvent se)</span><span style="font-family: 宋体; color: black">方法。当调用</span><span style="font-family: Arial; color: black">sessionCreated(HttpSessionEvent event)</span><span style="font-family: 宋体; color: black">方法时，说明又有一个客户在请求，此时使在线的人数（</span><span style="font-family: Arial; color: black">users</span><span style="font-family: 宋体; color: black">）加</span><span style="font-family: Arial; color: black">1</span><span style="font-family: 宋体; color: black">，并且把</span><span style="font-family: Arial; color: black">user</span><span style="font-family: 宋体; color: black">写到</span><span style="font-family: Arial; color: black">ServletContext</span><span style="font-family: 宋体; color: black">中。</span><span style="font-family: Arial; color: black"> ServletContext</span><span style="font-family: 宋体; color: black">的信息是所有客户端共享的，这样，每个客户端都可以读取到当前在线的人数。</span></p>
<p><span style="font-family: 宋体">运行结果：<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/lingling/44444.jpg" width="718" height="265" /><br />
<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/lingling/66666666.jpg" width="710" height="257" /></span></p>
<img src ="http://www.blogjava.net/lingling/aggbug/343172.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingling/" target="_blank">向日葵</a> 2011-01-18 21:39 <a href="http://www.blogjava.net/lingling/archive/2011/01/18/343172.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MVC小程序</title><link>http://www.blogjava.net/lingling/archive/2010/12/14/340606.html</link><dc:creator>向日葵</dc:creator><author>向日葵</author><pubDate>Tue, 14 Dec 2010 02:35:00 GMT</pubDate><guid>http://www.blogjava.net/lingling/archive/2010/12/14/340606.html</guid><wfw:comment>http://www.blogjava.net/lingling/comments/340606.html</wfw:comment><comments>http://www.blogjava.net/lingling/archive/2010/12/14/340606.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/lingling/comments/commentRss/340606.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lingling/services/trackbacks/340606.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;MVC是三个单词的缩写,分别为： 模型(Model),视图(View)和控制Control)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑，通常可以用JavaBean或EJB来实现。 View层用于与用户的交互，通常用JSP来实现。 Control层是Model与View之间沟通的桥梁，它可以分派用户的请求并选择恰当的视图以用于显示，同时它也可...&nbsp;&nbsp;<a href='http://www.blogjava.net/lingling/archive/2010/12/14/340606.html'>阅读全文</a><img src ="http://www.blogjava.net/lingling/aggbug/340606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingling/" target="_blank">向日葵</a> 2010-12-14 10:35 <a href="http://www.blogjava.net/lingling/archive/2010/12/14/340606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>过滤器—防止未登录直接访问网站内部</title><link>http://www.blogjava.net/lingling/archive/2010/12/14/340601.html</link><dc:creator>向日葵</dc:creator><author>向日葵</author><pubDate>Tue, 14 Dec 2010 02:26:00 GMT</pubDate><guid>http://www.blogjava.net/lingling/archive/2010/12/14/340601.html</guid><wfw:comment>http://www.blogjava.net/lingling/comments/340601.html</wfw:comment><comments>http://www.blogjava.net/lingling/archive/2010/12/14/340601.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/lingling/comments/commentRss/340601.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lingling/services/trackbacks/340601.html</trackback:ping><description><![CDATA[&nbsp;
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">有些网站需要登录以后才能访问网站内部资源，这就需要我们做一个过滤器，当用户访问网站内部资源时，要先经过过滤器，过滤器判断是否有这个用户，有则跳转进入网站内部页面，没有则返回登录页面。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">过滤器代码：</span></p>
<p class="MsoNormal"><span lang="EN-US">package com.dr.course;</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">import java.io.IOException;</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">import javax.servlet.Filter;</span></p>
<p class="MsoNormal"><span lang="EN-US">import javax.servlet.FilterChain;</span></p>
<p class="MsoNormal"><span lang="EN-US">import javax.servlet.FilterConfig;</span></p>
<p class="MsoNormal"><span lang="EN-US">import javax.servlet.ServletException;</span></p>
<p class="MsoNormal"><span lang="EN-US">import javax.servlet.ServletRequest;</span></p>
<p class="MsoNormal"><span lang="EN-US">import javax.servlet.ServletResponse;</span></p>
<p class="MsoNormal"><span lang="EN-US">import javax.servlet.http.HttpServletRequest;</span></p>
<p class="MsoNormal"><span lang="EN-US">import javax.servlet.http.HttpSession;</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">import com.dr.common.Global;</span></p>
<p class="MsoNormal"><span lang="EN-US">import com.dr.vo.User;</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">public class IsLoginFilter implements Filter {</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void destroy() {</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void doFilter(ServletRequest request, ServletResponse response,</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>FilterChain filterChain) throws IOException, ServletException {</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println("every request pass here");</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>HttpServletRequest hrequest=(HttpServletRequest)request;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>HttpSession session=hrequest.getSession();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>User user =<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>(User)session.getAttribute(Global.USER);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(user == null){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">跳转到登陆页面</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>hrequest.getRequestDispatcher("/index.jsp").forward(request,response);<span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>filterChain.doFilter(request, response);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void init(FilterConfig filterConfig) throws ServletException {</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">LoginServlet</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">类，进行登录之后的处理：</span></p>
<p class="MsoNormal"><span lang="EN-US">package com.dr.course;</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">import java.io.IOException;</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">import javax.servlet.ServletException;</span></p>
<p class="MsoNormal"><span lang="EN-US">import javax.servlet.http.HttpServlet;</span></p>
<p class="MsoNormal"><span lang="EN-US">import javax.servlet.http.HttpServletRequest;</span></p>
<p class="MsoNormal"><span lang="EN-US">import javax.servlet.http.HttpServletResponse;</span></p>
<p class="MsoNormal"><span lang="EN-US">import javax.servlet.http.HttpSession;</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">import com.dr.common.Global;</span></p>
<p class="MsoNormal"><span lang="EN-US">import com.dr.vo.User;</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">public class LoginServlet extends HttpServlet{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String userName=request.getParameter("username");</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String passWord=request.getParameter("password");</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println("userName | " + userName);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println("passWord | " + passWord);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>User user = new User();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>user.setUserName(userName);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>user.setPassWord(passWord);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>HttpSession session = request.getSession();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>//</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">登录成功，把</span><span lang="EN-US">User</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">放到</span><span lang="EN-US">session</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">，然后在拦截器中判断</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>//key--value</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>session.setAttribute(Global.USER, user);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>request.getRequestDispatcher("/admin/main.jsp").forward(request, response);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">web.xml</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">中配置如下：</span></p>
<p class="MsoNormal" style="text-indent: -24pt; text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><a href="http://www.blogjava.net/lingling/admin/迪瑞/平时/12.8/CheckIsLogin/WebRoot/WEB-INF/web.xml##"><strong><span style="color: red; font-family: 'Courier New'; mso-bidi-font-size: 12.0pt">-</span></strong></a> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">filter</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -24pt; text-align: left; mso-pagination: widow-orphan" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: red; font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">&nbsp;</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">filter-name</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">isLogin</span></strong><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;/</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">filter-name</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> <o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -24pt; text-align: left; mso-pagination: widow-orphan" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: red; font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">&nbsp;</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">filter-class</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">com.dr.course.IsLoginFilter</span></strong><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;/</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">filter-class</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> <o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -12pt; text-align: left; mso-pagination: widow-orphan" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: red; font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">&nbsp;</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;/</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">filter</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -24pt; text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><a href="http://www.blogjava.net/lingling/admin/迪瑞/平时/12.8/CheckIsLogin/WebRoot/WEB-INF/web.xml##"><strong><span style="color: red; font-family: 'Courier New'; mso-bidi-font-size: 12.0pt">-</span></strong></a> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">filter-mapping</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -24pt; text-align: left; mso-pagination: widow-orphan" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: red; font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">&nbsp;</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">filter-name</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">isLogin</span></strong><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;/</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">filter-name</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> <o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -24pt; text-align: left; mso-pagination: widow-orphan" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: red; font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">&nbsp;</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">url-pattern</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">/admin/*</span></strong><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;/</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">url-pattern</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> <o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -12pt; text-align: left; mso-pagination: widow-orphan" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: red; font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">&nbsp;</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;/</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">filter-mapping</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -24pt; text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><a href="http://www.blogjava.net/lingling/admin/迪瑞/平时/12.8/CheckIsLogin/WebRoot/WEB-INF/web.xml##"><strong><span style="color: red; font-family: 'Courier New'; mso-bidi-font-size: 12.0pt">-</span></strong></a> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">servlet</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -24pt; text-align: left; mso-pagination: widow-orphan" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: red; font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">&nbsp;</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">servlet-name</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">login</span></strong><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;/</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">servlet-name</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> <o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -24pt; text-align: left; mso-pagination: widow-orphan" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: red; font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">&nbsp;</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">servlet-class</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">com.dr.course.LoginServlet</span></strong><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;/</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">servlet-class</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> <o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -12pt; text-align: left; mso-pagination: widow-orphan" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: red; font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">&nbsp;</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;/</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">servlet</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -24pt; text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><a href="http://www.blogjava.net/lingling/admin/迪瑞/平时/12.8/CheckIsLogin/WebRoot/WEB-INF/web.xml##"><strong><span style="color: red; font-family: 'Courier New'; mso-bidi-font-size: 12.0pt">-</span></strong></a> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">servlet-mapping</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -24pt; text-align: left; mso-pagination: widow-orphan" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: red; font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">&nbsp;</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">servlet-name</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">login</span></strong><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;/</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">servlet-name</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> <o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -24pt; text-align: left; mso-pagination: widow-orphan" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: red; font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">&nbsp;</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">url-pattern</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">/login</span></strong><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;/</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">url-pattern</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> <o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: -12pt; text-align: left; mso-pagination: widow-orphan" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: red; font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt">&nbsp;</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"> </span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&lt;/</span><span lang="EN-US" style="font-size: 10pt; color: #990000; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">servlet-mapping</span><span lang="EN-US" style="font-size: 10pt; color: blue; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-bidi-font-size: 12.0pt">&gt;<br />
</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p><br />
&nbsp;未登录界面：<br />
<img height="128" alt="" src="http://www.blogjava.net/images/blogjava_net/lingling/ceshi1.jpg" width="261" border="0" /><br />
成功登录的界面：<br />
<img height="134" alt="" src="http://www.blogjava.net/images/blogjava_net/lingling/ceshi2.jpg" width="777" border="0" /><br />
</o:p></span></p>
<img src ="http://www.blogjava.net/lingling/aggbug/340601.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingling/" target="_blank">向日葵</a> 2010-12-14 10:26 <a href="http://www.blogjava.net/lingling/archive/2010/12/14/340601.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>邮箱自动登录</title><link>http://www.blogjava.net/lingling/archive/2010/12/13/340539.html</link><dc:creator>向日葵</dc:creator><author>向日葵</author><pubDate>Mon, 13 Dec 2010 10:54:00 GMT</pubDate><guid>http://www.blogjava.net/lingling/archive/2010/12/13/340539.html</guid><wfw:comment>http://www.blogjava.net/lingling/comments/340539.html</wfw:comment><comments>http://www.blogjava.net/lingling/archive/2010/12/13/340539.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lingling/comments/commentRss/340539.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lingling/services/trackbacks/340539.html</trackback:ping><description><![CDATA[&nbsp;
<p>cookie<span style="font-family: 宋体">为用户登陆服务器后，服务器写在客户端的文件。</span></p>
<p><span style="font-family: 宋体">我们在登录</span>126<span style="font-family: 宋体">邮箱时，如果勾选上两周内自动登录，两周内不用输入用户名和密码邮箱会自动登录，这是因为第一次登录时服务器将用户名和密码写入</span>cookie<span style="font-family: 宋体">中，并返回给客户端。</span></p>
<p><span style="font-family: 宋体">下次登录时</span>Http<span style="font-family: 宋体">协议会带着用户的</span>cookie<span style="font-family: 宋体">去服务器验证，因为服务器已经存储用户的信息，所以会自动登录。</span></p>
<p><span style="font-family: 宋体">登录代码：</span></p>
<p>package com.dr.course;</p>
<p>import java.io.IOException;&nbsp;&nbsp; </p>
<p>import javax.servlet.ServletException;&nbsp;&nbsp; </p>
<p>import javax.servlet.http.Cookie;&nbsp;&nbsp; </p>
<p>import javax.servlet.http.HttpServlet;&nbsp;&nbsp; </p>
<p>import javax.servlet.http.HttpServletRequest;&nbsp;&nbsp; </p>
<p>import javax.servlet.http.HttpServletResponse;&nbsp;&nbsp; </p>
<p>public class LoginServlet extends HttpServlet {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; public void doGet(HttpServletRequest request, HttpServletResponse response)&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.doPost(request, response);&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; public void doPost(HttpServletRequest request, HttpServletResponse response)&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String username=request.getParameter("username");&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String password=request.getParameter("password");&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String savetime=request.getParameter("saveTime");&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(CheckLogin.login(username, password)){&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(null!=savetime){&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int saveTime=Integer.parseInt(savetime);//<span style="font-family: 宋体">这里接受的表单值为天来计算的</span>&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int seconds=saveTime*24*60*60;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cookie cookie = new Cookie("user", username+"=="+password);&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cookie.setMaxAge(seconds);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.addCookie(cookie);&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.setAttribute("username",username);&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.getRequestDispatcher("/main126.jsp").forward(request,response);&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.getRequestDispatcher("/failure.jsp").forward(request,response);&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </p>
<p>}&nbsp;&nbsp; </p>
<p><span style="font-family: 宋体">验证代码：</span></p>
<p>package com.dr.course;</p>
<p>import java.io.IOException;&nbsp;&nbsp; </p>
<p>import javax.servlet.Filter;&nbsp;&nbsp; </p>
<p>import javax.servlet.FilterChain;&nbsp;&nbsp; </p>
<p>import javax.servlet.FilterConfig;&nbsp;&nbsp; </p>
<p>import javax.servlet.ServletException;&nbsp;&nbsp; </p>
<p>import javax.servlet.ServletRequest;&nbsp;&nbsp; </p>
<p>import javax.servlet.ServletResponse;&nbsp;&nbsp; </p>
<p>import javax.servlet.http.Cookie;&nbsp;&nbsp; </p>
<p>import javax.servlet.http.HttpServletRequest;&nbsp;&nbsp; </p>
<p>import javax.servlet.http.HttpServletResponse;&nbsp;&nbsp; </p>
<p>public class IndexFilter implements Filter {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; public void destroy() {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; public void doFilter(ServletRequest arg0, ServletResponse arg1,&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FilterChain arg2) throws IOException, ServletException { </p>
<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("every request pass here haha");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletRequest request = (HttpServletRequest) arg0;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse response = (HttpServletResponse) arg1;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cookie[] cookies = request.getCookies();&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] cooks = null;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String username = null;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String password = null;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cookies != null) {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Cookie coo : cookies) {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String aa = coo.getValue();&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cooks = aa.split("==");&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cooks.length == 2) {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; username = cooks[0];&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; password = cooks[1];&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("cookie username | " + username);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("cookie password | " + password);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (CheckLogin.login(username, password)) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println("check successfully cookie data ");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.getSession().setAttribute("username",username);&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.getRequestDispatcher("/main126.jsp").forward(request, response);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arg2.doFilter(request,response );&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; public void init(FilterConfig arg0) throws ServletException {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </p>
<p>}</p>
<p>package com.dr.course;</p>
<p>public class CheckLogin {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;public static boolean login(String username, String password) {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ("admin".equals(username) &amp;&amp; "123456".equals(password)) {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;} else {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </p>
<p>}</p>
<p>web.xml<span style="font-family: 宋体">中配置如下：</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: Verdana"><a href="file:///E:/迪瑞/平时/12.8/AutoLoginFilter/WebRoot/WEB-INF/web.xml##"><strong><span style="color: red; font-family: 'Courier New'">-</span></strong></a> </span><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">loginFilter</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-class</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">com.dr.course.IndexFilter</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-class</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -12pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: Verdana"><a href="file:///E:/迪瑞/平时/12.8/AutoLoginFilter/WebRoot/WEB-INF/web.xml##"><strong><span style="color: red; font-family: 'Courier New'">-</span></strong></a> </span><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-mapping</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">loginFilter</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">url-pattern</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">/main126.jsp</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">url-pattern</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -12pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-mapping</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: Verdana"><a href="file:///E:/迪瑞/平时/12.8/AutoLoginFilter/WebRoot/WEB-INF/web.xml##"><strong><span style="color: red; font-family: 'Courier New'">-</span></strong></a> </span><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">servlet</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">servlet-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">LoginServlet</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">servlet-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">servlet-class</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">com.dr.course.LoginServlet</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">servlet-class</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -12pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">servlet</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: Verdana"><a href="file:///E:/迪瑞/平时/12.8/AutoLoginFilter/WebRoot/WEB-INF/web.xml##"><strong><span style="color: red; font-family: 'Courier New'">-</span></strong></a> </span><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">servlet-mapping</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">servlet-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">LoginServlet</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">servlet-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">url-pattern</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">/login.do</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">url-pattern</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -12pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">servlet-mapping</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p><span style="font-size: 10pt; color: black; font-family: 宋体">将目录加入到</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">Tomcat</span><span style="font-size: 10pt; color: black; font-family: 宋体">中，开启</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">Tomcat</span><span style="font-size: 10pt; color: black; font-family: 宋体">，打开浏览器输入网址</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">:http://127.0.0.1:8080/AutoLogin/login.do</span><span style="font-size: 10pt; color: black; font-family: 宋体">进行测试。</span></p>
<img src ="http://www.blogjava.net/lingling/aggbug/340539.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingling/" target="_blank">向日葵</a> 2010-12-13 18:54 <a href="http://www.blogjava.net/lingling/archive/2010/12/13/340539.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Http乱码过滤器</title><link>http://www.blogjava.net/lingling/archive/2010/12/13/340538.html</link><dc:creator>向日葵</dc:creator><author>向日葵</author><pubDate>Mon, 13 Dec 2010 10:44:00 GMT</pubDate><guid>http://www.blogjava.net/lingling/archive/2010/12/13/340538.html</guid><wfw:comment>http://www.blogjava.net/lingling/comments/340538.html</wfw:comment><comments>http://www.blogjava.net/lingling/archive/2010/12/13/340538.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/lingling/comments/commentRss/340538.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lingling/services/trackbacks/340538.html</trackback:ping><description><![CDATA[&nbsp;
<p>Http<span style="font-family: 宋体">协议中默认的编码字符集和平台字符集都不是中文的，所以</span>Web<span style="font-family: 宋体">项目中经常会遇到中文乱码问题。</span></p>
<p><span style="font-family: 宋体">为防止中文乱码出现，首先我们要把项目中每个网页的编码形式改成中文的，</span>HTML<span style="font-family: 宋体">网页中的</span>charset<span style="font-family: 宋体">改成</span>UTF-8<span style="font-family: 宋体">，</span>JSP<span style="font-family: 宋体">网页中的</span>pageEncoding<span style="font-family: 宋体">改成</span>UTF-8<span style="font-family: 宋体">。</span></p>
<p><span style="font-family: 宋体">然后我们做一个过滤器，每次对网页的请求都会进入到过滤器，并且把</span>request<span style="font-family: 宋体">和</span>response<span style="font-family: 宋体">都改成</span>UTF-8<span style="font-family: 宋体">编码形式，这样防止了中文乱码的出现。</span></p>
<p><span style="font-family: 宋体">源代码如下：</span></p>
<p>package com.dr.servletform;</p>
<p>import java.io.IOException;</p>
<p>import javax.servlet.Filter;</p>
<p>import javax.servlet.FilterChain;</p>
<p>import javax.servlet.FilterConfig;</p>
<p>import javax.servlet.ServletException;</p>
<p>import javax.servlet.ServletRequest;</p>
<p>import javax.servlet.ServletResponse;</p>
<p>import javax.servlet.jsp.jstl.core.Config;</p>
<p>public class MyFilter implements Filter{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String encoding="";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void destroy() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void doFilter(ServletRequest request, ServletResponse response,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FilterChain chain) throws IOException, ServletException {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("pass here-------");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.setCharacterEncoding(encoding);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setCharacterEncoding(encoding);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chain.doFilter(request, response);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void init(FilterConfig config) throws ServletException {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String encoding=config.getInitParameter("encoding");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.encoding=encoding;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(encoding);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p>web.xml<span style="font-family: 宋体">中配置如下：</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">MyFilter</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-class</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">com.dr.servletform.MyFilter</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-class</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: Verdana"><a href="file:///E:/迪瑞/平时/12.6/Servlet_Form1_Project/WebRoot/WEB-INF/web.xml##"><strong><span style="color: red; font-family: 'Courier New'">-</span></strong></a> </span><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">init-param</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">param-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">encoding</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">param-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">param-value</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">UTF-8</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">param-value</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -12pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">init-param</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -12pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: Verdana"><a href="file:///E:/迪瑞/平时/12.6/Servlet_Form1_Project/WebRoot/WEB-INF/web.xml##"><strong><span style="color: red; font-family: 'Courier New'">-</span></strong></a> </span><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-mapping</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">MyFilter</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-name</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -24pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">url-pattern</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span><strong><span style="font-size: 10pt; font-family: Verdana">/*</span></strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">url-pattern</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<p style="text-indent: -12pt; text-align: left" align="left"><strong>&nbsp;</strong><span style="font-size: 10pt; color: blue; font-family: Verdana">&lt;/</span><span style="font-size: 10pt; color: #990000; font-family: Verdana">filter-mapping</span><span style="font-size: 10pt; color: blue; font-family: Verdana">&gt;</span></p>
<img src ="http://www.blogjava.net/lingling/aggbug/340538.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingling/" target="_blank">向日葵</a> 2010-12-13 18:44 <a href="http://www.blogjava.net/lingling/archive/2010/12/13/340538.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBC</title><link>http://www.blogjava.net/lingling/archive/2010/12/08/340090.html</link><dc:creator>向日葵</dc:creator><author>向日葵</author><pubDate>Wed, 08 Dec 2010 11:54:00 GMT</pubDate><guid>http://www.blogjava.net/lingling/archive/2010/12/08/340090.html</guid><wfw:comment>http://www.blogjava.net/lingling/comments/340090.html</wfw:comment><comments>http://www.blogjava.net/lingling/archive/2010/12/08/340090.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lingling/comments/commentRss/340090.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lingling/services/trackbacks/340090.html</trackback:ping><description><![CDATA[&nbsp;
<p>JDBC<span style="font-family: 宋体">是</span>Java<span style="font-family: 宋体">语言提供访问和操作数据库的一种途径，通过使用</span>JDBC<span style="font-family: 宋体">可以操作任意的</span>SQL<span style="font-family: 宋体">语句，来访问和操作数据库</span></p>
<p>JDBC<span style="font-family: 宋体">编程步骤：</span></p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-family: Symbol"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">加载数据库驱动（</span>jar <span style="font-family: 宋体">文件）</span> </p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-family: Symbol"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">获得数据库连接</span></p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-family: Symbol"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">创建语句</span> (SQL)</p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-family: Symbol"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">执行查询</span></p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-family: Symbol"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">遍历结果集</span></p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-family: Symbol"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">关闭数据库连接</span></p>
<p><span style="font-family: 宋体">示例小程序：</span></p>
<p>package com.dr.jdbc;</p>
<p>/**</p>
<p>&nbsp;* DriverManager <span style="font-family: 宋体">驱动程序管理器</span>&nbsp;<span style="font-family: 宋体">在数据库和相应驱动程序之间建立连接</span></p>
<p>&nbsp;* Connection <span style="font-family: 宋体">对象代表与数据库的连接，也就是在已经加载的</span>Driver<span style="font-family: 宋体">和数据库之间建立连接</span></p>
<p>&nbsp;* Statement <span style="font-family: 宋体">提供在基层连接上运行</span>SQL<span style="font-family: 宋体">语句，并且访问结果</span></p>
<p>&nbsp;* ResultSet <span style="font-family: 宋体">在</span>Statement<span style="font-family: 宋体">执行</span>SQL<span style="font-family: 宋体">语句时，有时会返回</span>ResultSet<span style="font-family: 宋体">结果集，包含的是查询的结果集</span></p>
<p>&nbsp;*/</p>
<p>import java.sql.Connection;</p>
<p>import java.sql.DriverManager;</p>
<p>import java.sql.ResultSet;</p>
<p>import java.sql.SQLException;</p>
<p>import java.sql.Statement;</p>
<p>public class Test {</p>
<p>&nbsp;&nbsp;&nbsp; public static void main(String[] args) {&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query();</p>
<p>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; public static void query(){&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connection conn = null;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try { </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;//1.<span style="font-family: 宋体">加载数据库驱动</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class.forName("com.mysql.jdbc.Driver");&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //2.<span style="font-family: 宋体">获得数据库连接</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //DriverManager <span style="font-family: 宋体">驱动程序管理器</span>&nbsp;<span style="font-family: 宋体">在数据库和相应驱动程序之间建立连</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc_db", "root", "1234");&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;//3.<span style="font-family: 宋体">创建语句</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String sql = "select * from UserTbl";&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体">返回一个执行</span>SQL<span style="font-family: 宋体">的句柄</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Statement stmt = conn.createStatement();&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体">返回查询的</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //4.<span style="font-family: 宋体">执行语句</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ResultSet rs = stmt.executeQuery(sql); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //5.<span style="font-family: 宋体">遍历结果集</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(rs.next()){&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int id = rs.getInt(1);&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String username = rs.getString(2);&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String password = rs.getString(3);&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int age = rs.getInt(4);&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(id+":"+username+":"+password+":"+age);&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }finally{&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(conn!=null){&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体">关闭数据库连接</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.close();&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (SQLException e) {&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn = null;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<img src ="http://www.blogjava.net/lingling/aggbug/340090.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingling/" target="_blank">向日葵</a> 2010-12-08 19:54 <a href="http://www.blogjava.net/lingling/archive/2010/12/08/340090.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>socket应用小程序</title><link>http://www.blogjava.net/lingling/archive/2010/11/12/337931.html</link><dc:creator>向日葵</dc:creator><author>向日葵</author><pubDate>Fri, 12 Nov 2010 10:14:00 GMT</pubDate><guid>http://www.blogjava.net/lingling/archive/2010/11/12/337931.html</guid><wfw:comment>http://www.blogjava.net/lingling/comments/337931.html</wfw:comment><comments>http://www.blogjava.net/lingling/archive/2010/11/12/337931.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lingling/comments/commentRss/337931.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lingling/services/trackbacks/337931.html</trackback:ping><description><![CDATA[1.包含客户端和服务器两部分程序，并且两个程序能分开独立运行。<br />
2.客户端可以输入服务器地址和端口，连接服务器。<br />
3..服务器能接受客户端连接，并向客户端输出发送的字符串。<br />
<br />
代码如下：<br />
服务器端：<br />
<p>package com.dr.Demo01;</p>
<p>import java.io.PrintStream;<br />
import java.net.ServerSocket;<br />
import java.net.Socket;</p>
<p>public class ServerSocket01 {</p>
<p>&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;ServerSocket server=null;<br />
&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;//服务器在9999端口开辟了服务<br />
&nbsp;&nbsp;&nbsp;server=new ServerSocket(9999);<br />
&nbsp;&nbsp;}catch(Exception e){}<br />
&nbsp;&nbsp;//对于服务器而言，所有用户的请求都是通过SeverSocket实现<br />
&nbsp;&nbsp;Socket client=null;<br />
&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;//服务器在此等待用户的链接<br />
&nbsp;&nbsp;&nbsp;System.out.println("等待客户端链接、、、");<br />
&nbsp;&nbsp;&nbsp;client=server.accept();//服务端接收到一个client<br />
&nbsp;&nbsp;}catch(Exception e){}<br />
&nbsp;&nbsp;//要向客户端打印信息<br />
&nbsp;&nbsp;PrintStream out=null;<br />
&nbsp;&nbsp;//得到向客户端输出信息的能力<br />
&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;out=new PrintStream(client.getOutputStream());<br />
&nbsp;&nbsp;}catch(Exception e){}<br />
&nbsp;&nbsp;out.println("Hi,how do you do?");<br />
&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;client.close();<br />
&nbsp;&nbsp;&nbsp;server.close();<br />
&nbsp;&nbsp;}catch(Exception e){}<br />
&nbsp;&nbsp;System.out.println("客户端回应完毕、、、");<br />
&nbsp;}</p>
<p>}</p>
<br />
客户端：<br />
<br />
<p>package com.dr.Demo01;</p>
<p>import java.io.BufferedReader;<br />
import java.io.InputStreamReader;<br />
import java.net.Socket;</p>
<p>public class ClientSocket01 {</p>
<p>&nbsp;public static void main(String[] args) {<br />
&nbsp;<br />
&nbsp;&nbsp;Socket client=null;<br />
&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;//实际上表示要链接到服务器上去了<br />
&nbsp;&nbsp;&nbsp;client=new Socket("192.168.1.23",9999);<br />
&nbsp;&nbsp;}catch(Exception e){}<br />
&nbsp;&nbsp;//等待服务器端的回应<br />
&nbsp;&nbsp;String str=null;<br />
&nbsp;&nbsp;//如果直接使用InputStream接受会比较麻烦<br />
&nbsp;&nbsp;//最好的方法是可以把内容放入发哦缓冲流之中进行读取<br />
&nbsp;&nbsp;BufferedReader buf=null;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;buf=new BufferedReader(new InputStreamReader(client.getInputStream()));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str=buf.readLine();<br />
&nbsp;&nbsp;}catch(Exception e){}<br />
&nbsp;&nbsp;System.out.println(str);<br />
&nbsp;}</p>
<p>}</p>
<br />
<br />
<br />
<img src ="http://www.blogjava.net/lingling/aggbug/337931.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingling/" target="_blank">向日葵</a> 2010-11-12 18:14 <a href="http://www.blogjava.net/lingling/archive/2010/11/12/337931.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>线程间通信小应用</title><link>http://www.blogjava.net/lingling/archive/2010/11/10/337744.html</link><dc:creator>向日葵</dc:creator><author>向日葵</author><pubDate>Wed, 10 Nov 2010 10:48:00 GMT</pubDate><guid>http://www.blogjava.net/lingling/archive/2010/11/10/337744.html</guid><wfw:comment>http://www.blogjava.net/lingling/comments/337744.html</wfw:comment><comments>http://www.blogjava.net/lingling/archive/2010/11/10/337744.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lingling/comments/commentRss/337744.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lingling/services/trackbacks/337744.html</trackback:ping><description><![CDATA[&nbsp;
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">线程间通信：一个线程向数据存储空间添加数据（</span><span lang="EN-US">Benz</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">），另一个线程从数据存储空间取出数据（</span><span lang="EN-US">BMW</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">）。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">程序有两种以外需要考虑：</span></p>
<p class="MsoNormal" style="margin-left: 18pt; text-indent: 21pt; tab-stops: list 18.0pt; mso-list: l1 level1 lfo1; mso-char-indent-count: 2.0"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">假设</span><span lang="EN-US">Benz</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">线程刚向数据存储空间添加了一辆车的名字。还没有加入这辆车的颜色，</span><span lang="EN-US">CPU</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">就切换到了</span><span lang="EN-US">BMW</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">线程，</span><span lang="EN-US">Benz</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">线程将把这辆车的名字和上辆车的颜色联系到了一起。</span></p>
<p class="MsoNormal" style="margin-left: 18pt; text-indent: 21pt; tab-stops: list 18.0pt; mso-list: l1 level1 lfo1; mso-char-indent-count: 2.0"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">2、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US">Benz</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">放了若干次的数据。</span><span lang="EN-US">BMW</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">才开始取数据，或者是，</span><span lang="EN-US">BMW</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">取完了一个数据后，还没等到</span><span lang="EN-US">Benz</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">放入新的数据，又重复取出已取过的数据。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">可能出现的问题：</span></p>
<p class="MsoNormal" style="margin-left: 18pt; text-indent: 21pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo2; mso-char-indent-count: 2.0"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US">Benz</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">比</span><span lang="EN-US">BMW</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">快时，</span><span lang="EN-US">BMW</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">会漏掉一些数据没有取到。</span></p>
<p class="MsoNormal" style="margin-left: 18pt; text-indent: 21pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo2; mso-char-indent-count: 2.0"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">2、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US">BMW</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">比</span><span lang="EN-US">Benz</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">快时，</span><span lang="EN-US">BMW</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">取相同的数据。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">多个线程共享同一资源的时候，必须进行同步，采用同步方法，解决第一个问题。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">线程的等待和唤醒机制：</span></p>
<p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span lang="EN-US">wait()</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">：告诉当前线程放弃监视器并进入睡眠状态，直到其他线程进入同一监视器并调用</span><span lang="EN-US">notify</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">为止。</span></p>
<p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span lang="EN-US">notify()</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">：唤醒同一对象监视器中调用</span><span lang="EN-US">wait</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的第一个线程。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">程序中采用线程的等待和唤醒机制，当发现</span><span lang="EN-US">BMW</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">没有取走内容时，</span><span lang="EN-US">Benz</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">应该等待，当</span><span lang="EN-US">BMW</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">把内容取走之后，</span><span lang="EN-US">Benz</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">才可以放。这样解决了第二个问题。</span></p>
<p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">代码如下：</span></p>
<p class="MsoNormal"><span lang="EN-US">package com.dr.test;</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">class Car{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>private String name="</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">奔驰</span><span lang="EN-US">";</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>private String color="</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">银色</span><span lang="EN-US">";</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>private boolean flag=false;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public synchronized void set(String name,String color){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">如果</span><span lang="EN-US">flag</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的值不是</span><span lang="EN-US">true</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">则要等待</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(!flag){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">等待</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>try{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>wait();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}catch(Exception e){}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">如果向下继续执行了，则表示可以设置，</span><span lang="EN-US">flag=true</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>this.name=name;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>this.color=color;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>flag=false;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>notify();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public synchronized void get(){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">如果</span><span lang="EN-US">flag</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的值为</span><span lang="EN-US">true</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的时候，表示要等待</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(flag){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>try{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>wait();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}catch(Exception e){}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">如果向下执行了，则表示允许取出</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println(this.name+"--&gt;"+this.color);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">改变标志，表示可以生产了</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>flag=true;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>notify();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span lang="EN-US">class Benz implements Runnable{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Car car=null;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public Benz(Car c){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>this.car=c;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void run(){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int i=0;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>while(true){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(i==0){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>car.set("</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">宝马</span><span lang="EN-US">", "</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">红色</span><span lang="EN-US">");</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>i=1;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>else{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>car.set("</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">奔驰</span><span lang="EN-US">", "</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">银色</span><span lang="EN-US">");</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>i=0;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span lang="EN-US">class BMW implements Runnable{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Car car=null;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public BMW(Car c){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>this.car=c;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void run(){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>while(true){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>car.get();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span lang="EN-US">public class Demo01 {</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public static void main(String[] args) {</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Car c=new Car();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Benz benz=new Benz(c);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>BMW bmw=new BMW(c);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>new Thread(benz).start();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>new Thread(bmw).start();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">运行结果：<br />
</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p><img height="527" alt="" src="http://www.blogjava.net/images/blogjava_net/lingling/999999.jpg" width="256" border="0" />&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.blogjava.net/lingling/aggbug/337744.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingling/" target="_blank">向日葵</a> 2010-11-10 18:48 <a href="http://www.blogjava.net/lingling/archive/2010/11/10/337744.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>线程实现的两种方式</title><link>http://www.blogjava.net/lingling/archive/2010/11/08/337557.html</link><dc:creator>向日葵</dc:creator><author>向日葵</author><pubDate>Mon, 08 Nov 2010 09:49:00 GMT</pubDate><guid>http://www.blogjava.net/lingling/archive/2010/11/08/337557.html</guid><wfw:comment>http://www.blogjava.net/lingling/comments/337557.html</wfw:comment><comments>http://www.blogjava.net/lingling/archive/2010/11/08/337557.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lingling/comments/commentRss/337557.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lingling/services/trackbacks/337557.html</trackback:ping><description><![CDATA[&nbsp;
<p class="MsoNormal"><span lang="EN-US">Java</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">线程的实现有两种方式：</span></p>
<p class="MsoNormal"><span lang="EN-US">1 </span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">通过继承</span><span lang="EN-US">Thread</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">类来实现。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">每个线程都是通过某个特定</span><span lang="EN-US">Thread</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">对象所对应的方法</span><span lang="EN-US">run()l</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">来完成其操作的，方法</span><span lang="EN-US">run()</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">成为线程体。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">如果想要启动多线程，则肯定调用</span><span lang="EN-US">start()</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">方法，</span><span lang="EN-US">start</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">方法可以调用被子类覆写过的</span><span lang="EN-US">run</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">方法</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">不过这种这种实现方式会受到单继承的局限</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">示例代码：</span></p>
<p class="MsoNormal"><span lang="EN-US">package com.dr.demo01;</span></p>
<p class="MsoNormal"><span lang="EN-US">//</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">一个类只要继承了</span><span lang="EN-US">Thread</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">类，则此类就是多线程类</span></p>
<p class="MsoNormal"><span lang="EN-US">class MyThread extends Thread{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>private String name;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public MyThread(String name){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>this.name=name;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">如果要使用多线程，则必须有一个方法的主体</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void run(){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">打印输出</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for(int i=0;i&lt;15;i++){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println(this.name+"---&gt;</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">在运行、、、</span><span lang="EN-US">");</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span lang="EN-US">public class ThreadDemo01{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public static void main(String args[]){</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MyThread mt1=new MyThread("</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">线程</span><span lang="EN-US">A");</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MyThread mt2=new MyThread("</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">线程</span><span lang="EN-US">B");</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MyThread mt3=new MyThread("</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">线程</span><span lang="EN-US">C");</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>mt1.run();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>mt2.run();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>mt3.run();</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2 </span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">通过实现</span><span lang="EN-US">Runnable</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">接口来实现。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">该实现方式有以下好处：</span></p>
<p class="MsoNormal" style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">①<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">适合多个相干同程序代码的线程去处理同一资源的情况。</span></p>
<p class="MsoNormal" style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">②<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">可以避免由于</span><span lang="EN-US">Java</span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">单继承特性带来的局限。</span></p>
<p class="MsoNormal" style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">③<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">有利于程序的健壮性，代码能够被多个线程共享。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">示例代码：</span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">package</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> com.dr.Demo05;</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">class</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> MyThread </span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">implements</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> Runnable{</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">public</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> </span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">void</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> run(){</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">for</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt">(</span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">int</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> i=0;i&lt;100;i++){</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">try</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt">{</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Thread.<em>sleep</em>(1000);</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">catch</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt">(Exception e){}</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.</span><em><span lang="EN-US" style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'; mso-font-kerning: 0pt">out</span></em><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt">.println(Thread.<em>currentThread</em>().getName()+</span><span lang="EN-US" style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'; mso-font-kerning: 0pt">"--</span><span style="font-size: 10pt; color: #2a00ff; font-family: 宋体; mso-hansi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-family: 'Courier New'">运行中</span><span lang="EN-US" style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'; mso-font-kerning: 0pt">--"</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt">);</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>}</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt">}</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">public</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> </span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">class</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> Demo05 {</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span></span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">public</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> </span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">static</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> </span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">void</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> main(String[] args) {</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MyThread mt=</span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">new</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> MyThread();</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Thread t1=</span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">new</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> Thread(mt,</span><span lang="EN-US" style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'; mso-font-kerning: 0pt">"</span><span style="font-size: 10pt; color: #2a00ff; font-family: 宋体; mso-hansi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-family: 'Courier New'">线程</span><span lang="EN-US" style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'; mso-font-kerning: 0pt">A"</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt">);</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Thread t2=</span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">new</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> Thread(mt,</span><span lang="EN-US" style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'; mso-font-kerning: 0pt">"</span><span style="font-size: 10pt; color: #2a00ff; font-family: 宋体; mso-hansi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-family: 'Courier New'">线程</span><span lang="EN-US" style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'; mso-font-kerning: 0pt">B"</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt">);</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Thread t3=</span><strong><span lang="EN-US" style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'; mso-font-kerning: 0pt">new</span></strong><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"> Thread(mt,</span><span lang="EN-US" style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'; mso-font-kerning: 0pt">"</span><span style="font-size: 10pt; color: #2a00ff; font-family: 宋体; mso-hansi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-bidi-font-family: 'Courier New'">线程</span><span lang="EN-US" style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'; mso-font-kerning: 0pt">C"</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt">);</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>t1.start();</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>t2.start();</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>t3.start();</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>}</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: 'Courier New'; mso-font-kerning: 0pt">}</span><span lang="EN-US" style="font-size: 10pt; font-family: 'Courier New'; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<img src ="http://www.blogjava.net/lingling/aggbug/337557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lingling/" target="_blank">向日葵</a> 2010-11-08 17:49 <a href="http://www.blogjava.net/lingling/archive/2010/11/08/337557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>