??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日本一区二区三区,亚洲国产美女在线观看,另类小说亚洲色图http://www.tkk7.com/jiadongpo/May there be enough clouds in your life to make a beautiful sunset!zh-cnSat, 10 May 2025 07:30:28 GMTSat, 10 May 2025 07:30:28 GMT60PL/SQL Developer 9.0.6.1665 & 10.0.5.1710 无限用户?..http://www.tkk7.com/jiadongpo/archive/2013/10/15/404994.html志成中国志成中国Tue, 15 Oct 2013 01:02:00 GMThttp://www.tkk7.com/jiadongpo/archive/2013/10/15/404994.htmlhttp://www.tkk7.com/jiadongpo/comments/404994.htmlhttp://www.tkk7.com/jiadongpo/archive/2013/10/15/404994.html#Feedback1http://www.tkk7.com/jiadongpo/comments/commentRss/404994.htmlhttp://www.tkk7.com/jiadongpo/services/trackbacks/404994.html阅读全文

志成中国 2013-10-15 09:02 发表评论
]]>
ExtJS入门——开?http://www.tkk7.com/jiadongpo/archive/2013/01/05/393828.html志成中国志成中国Sat, 05 Jan 2013 09:04:00 GMThttp://www.tkk7.com/jiadongpo/archive/2013/01/05/393828.htmlhttp://www.tkk7.com/jiadongpo/comments/393828.htmlhttp://www.tkk7.com/jiadongpo/archive/2013/01/05/393828.html#Feedback2http://www.tkk7.com/jiadongpo/comments/commentRss/393828.htmlhttp://www.tkk7.com/jiadongpo/services/trackbacks/393828.html阅读全文

志成中国 2013-01-05 17:04 发表评论
]]>
抽奖http://www.tkk7.com/jiadongpo/archive/2012/11/09/391100.html志成中国志成中国Fri, 09 Nov 2012 08:03:00 GMThttp://www.tkk7.com/jiadongpo/archive/2012/11/09/391100.htmlhttp://www.tkk7.com/jiadongpo/comments/391100.htmlhttp://www.tkk7.com/jiadongpo/archive/2012/11/09/391100.html#Feedback2http://www.tkk7.com/jiadongpo/comments/commentRss/391100.htmlhttp://www.tkk7.com/jiadongpo/services/trackbacks/391100.html阅读全文

志成中国 2012-11-09 16:03 发表评论
]]>
关键?/title><link>http://www.tkk7.com/jiadongpo/archive/2012/11/09/391099.html</link><dc:creator>志成中国</dc:creator><author>志成中国</author><pubDate>Fri, 09 Nov 2012 08:01:00 GMT</pubDate><guid>http://www.tkk7.com/jiadongpo/archive/2012/11/09/391099.html</guid><wfw:comment>http://www.tkk7.com/jiadongpo/comments/391099.html</wfw:comment><comments>http://www.tkk7.com/jiadongpo/archive/2012/11/09/391099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/jiadongpo/comments/commentRss/391099.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/jiadongpo/services/trackbacks/391099.html</trackback:ping><description><![CDATA[<h2><a id="viewpost1_TitleUrl" href="http://www.tkk7.com/jialisoftw/archive/2012/10/17/389744.html" style="cursor: pointer; color: #0066aa; text-decoration: none; ">Java中static、this、super、final用法</a></h2><div style="text-align: -webkit-auto; font-size: 13px; line-height: 19px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: #ffffff; "><div>Ԍ(x)本文具体讲解?jin)Java中static的用法,具体内容有static的静(rn)态方法、静(rn)态变量、静(rn)态类?⊙o⊙)Q你们觉得如何?</div><div>一、static</div><div>请先看下面这D늨序:(x)</div><div>public class Hello{</div><div>public static void main(String[] args){ //(1)</div><div>System.out.println("Hello,world!"); //(2)</div><div>}</div><div>}</div><div> </div><div>看过q段E序Q对于大多数学过Java 的从来说Q都不陌生。即使没有学qJavaQ而学q其它的高语言Q例如CQ那你也应该能看懂这D代码的意思。它只是单的输出“Hello,world”Q一点别的用处都没有Q然而,它却展示?jin)static关键字的主要用法?/div><div>?处,我们定义?jin)一个静(rn)态的Ҏ(gu)名ؓ(f)mainQ这意味着告诉Java~译器,我这个方法不需要创Z个此cȝ对象卛_使用。你q得你是怎么q行q个E序吗?一般,我们都是在命令行下,打入如下的命?加下划线为手动输?Q?/div><div> </div><div>javac Hello.java</div><div>java Hello</div><div>Hello,world!</div><div> </div><div>q就是你q行的过E,W一行用来编译Hello.javaq个文gQ执行完后,如果你查看当前,?x)发现多了(jin)一个Hello.class文gQ那是W一行生的Java二进制字节码。第二行是执行一个JavaE序的最普遍做法。执行结果如你所料。在2中,你可能会(x)惻IZ么要q样才能输出。好Q我们来分解一下这条语句。(如果没有安装Java文Q请到Sun的官方网站浏览J2SE APIQ首先,System是位于java.lang包中的一个核?j)类Q如果你查看它的定义Q你?x)发现有q样一行:(x)public static final PrintStream out;接着在进一步,点击PrintStreamq个链接,在METHOD面Q你?x)看到大量定义的?gu)Q查找printlnQ会(x)有这样一行:(x)</div><div> </div><div>public void println(String x)</div><div> </div><div>好了(jin)Q现在你应该明白Z么我们要那样调用?jin),out是System的一个静(rn)态变量,所以可以直接用,而out所属的cL一个printlnҎ(gu)?/div><div></div><div>?rn)态方?/div><div>通常Q在一个类中定义一个方法ؓ(f)staticQ那是_(d)无需本类的对象即可调用此Ҏ(gu)。如下所C:(x)</div><div>class Simple{</div><div>static void go(){</div><div>System.out.println("Go...");</div><div>}</div><div>}</div><div>public class Cal{</div><div>public static void main(String[] args){</div><div>Simple.go();</div><div>}</div><div>}</div><div> </div><div>调用一个静(rn)态方法就?#8220;cd.Ҏ(gu)?#8221;,?rn)态方法的使用很简单如上所C。一般来_(d)?rn)态方法常ؓ(f)应用E序中的其它cL供一些实用工h用,在Java的类库中大量的静(rn)态方法正是出于此目的而定义的?/div><div></div><div>?rn)态变?/div><div>?rn)态变量与?rn)态方法类伹{所有此cd例共享此?rn)态变量,也就是说在类装蝲Ӟ只分配一块存储空_(d)所有此cȝ对象都可以操控此块存储空_(d)当然对于final则另当别Z(jin)。看下面q段代码Q?/div><div> </div><div>class Value{</div><div>static int c=0;</div><div>static void inc(){</div><div>c++;</div><div>}</div><div>}</div><div>class Count{</div><div>public static void prt(String s){</div><div>System.out.println(s);</div><div>}</div><div>public static void main(String[] args){</div><div>Value v1,v2;</div><div>v1=new Value();</div><div>v2=new Value();</div><div>prt("v1.c="+v1.c+" v2.c="+v2.c);</div><div>v1.inc();</div><div>prt("v1.c="+v1.c+" v2.c="+v2.c);</div><div>}</div><div>}</div><div> </div><div>l果如下Q?/div><div> </div><div>v1.c=0 v2.c=0</div><div>v1.c=1 v2.c=1</div><div> </div><div>由此可以证明它们׃n一块存储区。static变量有点cM于C中的全局变量的概c(din)值得探讨的是?rn)态变量的初始化问题。我们修改上面的E序Q?/div><div> </div><div>class Value{</div><div>static int c=0;</div><div>Value(){</div><div>c=15;</div><div>}</div><div>Value(int i){</div><div>c=i;</div><div>}</div><div>static void inc(){</div><div>c++;</div><div>}</div><div>}</div><div>class Count{</div><div>public static void prt(String s){</div><div>System.out.println(s);</div><div>}</div><div>Value v=new Value(10);</div><div>static Value v1,v2;</div><div>static{</div><div>prt("v1.c="+v1.c+" v2.c="+v2.c);</div><div>v1=new Value(27);</div><div>prt("v1.c="+v1.c+" v2.c="+v2.c);</div><div>v2=new Value(15);</div><div>prt("v1.c="+v1.c+" v2.c="+v2.c);</div><div>}</div><div>public static void main(String[] args){</div><div>Count ct=new Count();</div><div>prt("ct.c="+ct.v.c);</div><div>prt("v1.c="+v1.c+" v2.c="+v2.c);</div><div>v1.inc();</div><div>prt("v1.c="+v1.c+" v2.c="+v2.c);</div><div>prt("ct.c="+ct.v.c);</div><div>}</div><div>}</div><div> </div><div>q行l果如下Q?/div><div>v1.c=0 v2.c=0</div><div>v1.c=27 v2.c=27</div><div>v1.c=15 v2.c=15</div><div>ct.c=10</div><div>v1.c=10 v2.c=10</div><div>v1.c=11 v2.c=11</div><div>ct.c=11</div><div> </div><div>q个E序展示?jin)?rn)态初始化的各U特性。如果你初次接触JavaQ结果可能o(h)你吃惊。可能会(x)对static后加大括h到困惑。首先要告诉你的是,static定义的变量会(x)优先于Q何其它非static变量Q不论其出现的顺序如何。正如在E序中所表现的,虽然v出现在v1和v2的前面,但是l果却是v1和v2的初始化在v的前面。在static{后面跟着一D代码,q是用来q行昑ּ的静(rn)态变量初始化Q这D代码只?x)初始化一ơ,且在c被W一ơ装载时。如果你能读懂ƈ理解q段代码Q会(x)帮助你对static关键字的认识。在涉及(qing)到承的时候,?x)先初始化父cȝstatic变量Q然后是子类的,依次cL。非?rn)态变量不是本文的主题Q在此不做详l讨论,请参考Think in Java中的讲解?/div><div></div><div>?rn)态类</div><div>通常一个普通类不允许声明ؓ(f)?rn)态的Q只有一个内部类才可以。这时这个声明ؓ(f)?rn)态的内部cd以直接作Z个普通类来用,而不需实例一个外部类。如下代码所C:(x)</div><div> </div><div>public class StaticCls{</div><div>public static void main(String[] args){</div><div>OuterCls.InnerCls oi=new OuterCls.InnerCls();</div><div>}</div><div>}</div><div>class OuterCls{</div><div>public static class InnerCls{</div><div>InnerCls(){</div><div>System.out.println("InnerCls");</div><div>}</div><div>}</div><div>}</div><div> </div><div>输出l果?x)如你所料?/div></div><img src ="http://www.tkk7.com/jiadongpo/aggbug/391099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jiadongpo/" target="_blank">志成中国</a> 2012-11-09 16:01 <a href="http://www.tkk7.com/jiadongpo/archive/2012/11/09/391099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>异常问题http://www.tkk7.com/jiadongpo/archive/2012/11/09/391098.html志成中国志成中国Fri, 09 Nov 2012 08:00:00 GMThttp://www.tkk7.com/jiadongpo/archive/2012/11/09/391098.htmlhttp://www.tkk7.com/jiadongpo/comments/391098.htmlhttp://www.tkk7.com/jiadongpo/archive/2012/11/09/391098.html#Feedback0http://www.tkk7.com/jiadongpo/comments/commentRss/391098.htmlhttp://www.tkk7.com/jiadongpo/services/trackbacks/391098.htmljava try catch 谁先执行问题Q你能说明白?/div>
问题1 
 try {}里有一个return语句Q那么紧跟在q个try后的finally {}里的code?x)不会(x)被执行Q什么时候被执行Q在return前还是后? 
也许你的{案是在return之前Q但往更细地说Q我的答案是在return中间执行Q请看下面程序代码的q行l果Q?nbsp;
public  class Test {
public static void main(String[] args) {
System.out.println(new Test().test());;
}
static int test()
{
int x = 1;
try
{
return x;
}
finally
{
++x;
}
}
}
---------执行l果是什? Z?---------
问题2
下面的程序代码输出的l果是多?
public class  smallT
{
public static void  main(String args[])
{
smallT t  = new  smallT();
int  b  =  t.get();
System.out.println(b);
}
public int  get()
{
try
{
return 1 ;
}
finally
{
return 2 ;
}
}
}
       2012-6-19 16:23 满意回答 输出??Q?/div>
20705080 回答的很好了(jin)Q只有几点补充下Q首先代码例子用的是基本数据cdQ他们进行传值就是传|其次finally的用途是用来回收pȝ资源的,没有catch也是正常的用(不catchQ把异常throw回调用方法)(j)Q再有finally和return是有关系的,而且l常有h提,是finally的代码在return前运行,q就是我Z么先说你的例子是基本数据cd的原因,因ؓ(f)return xQ?Q;被放入stack中,stack是后q先出的Q等待f(xi)inallyq行完再q行Q但他已l被赋g(jin)是1Q如果你把代码改成这栯试看
public Something getSome(){
         Something s = new Something("Dog");
         try{
              return s;
        }finally{
             s.name ="cat";
         }}
加个c?/div>
class Something{
        public String name ;
        something(String name){
               this.name = name;}
}
因ؓ(f)相对于基本数据类型,引用传g的值是个地址Qreturn sQ地址Q?攑օstack中,又被取出时地址不变但地址那边的数据已l是cat?jin)赞?| 评论 
W??/div>
有finally的话
try 里的return    是先保存x的结?  {待f(xi)inally走完   虽然x?? 但是return的D?  
因ؓ(f)到return的时候已l把x的值取出来  {待f(xi)inally走完  不管x怎么? 之前?是不?x)变?/div>
W??/div>
return     {待f(xi)inally走完   但是finally里return?  所以返回的?
    赞同0| 评论                2012-6-19 14:54 畅捷通丶E?| 五 
W一个是1Q因?x=1 try里面q回的是1 后面又执行了(jin)finally 后。X ? 但是没有q回。所?q是1
W二个是2Q因为finally最后执行,q回的是2. 赞同0| 评论                2012-6-19 14:56 java2000_net | 
finally中的语句是一定要执行的,q点是肯定的。finally中的语句执行在try之后。通常try是要和catchQ不捕获异常try没意义?jin)?j)。一般的用法是:(x)
try{
1惌执行的代?/div>
}catch(Exception e){
 2异常处理
}finally{
3最l执行的代码
}
1中代码没错执行的序是1->3
1中代码有错执行的序?->3
finally中的代码和return是没关系的,你可以把return写在M地方。它只和try、catch有关。假如你把问题一Ufinally的代码写成:(x)
finally{
return ++x;
}那么l果是2?jin)?/div>
finally一定会(x)执行Q且在try或catch之后执行?/div>
不知道这么说能明白吗~~~
不明白可以问Q我再回{~~~ 赞同0| 评论                2012-6-19 15:22 黑夜也明?| 四 
问题1Q答?1。因为return的值在执行finally之前已经定下来?jin)。所以即使在finally里怎么该值它始终?Q除非在finally里在return ++x重新修改q回的倹{return x它不?x)直接返回值回去而是{程序执行完finaly后才q回?/div>
你因该有听过有finaly的程序一定会(x)执行finaly代码吧?/div>
问题2Q答?2。根据一的结Z也是成立的?赞同0| 评论                2012-6-19 16:41 iedgtg | 五 
W一个问题:(x)输出的是1Q因为finallyL在try-catch执行之后执行Q而且Q一定是在return之前执行。第一个问题里应该是在return xQ之前执行,但是Q此时return的值已l固定了(jin)Q就是说finally再执行也改变不了(jin)return的|当然x的值成?Q但是return的值已l固定ؓ(f)1?jin)?/div>
W二个问题:(x)输出的是2Q因为finally一定是在return之前执行Q本来程序return的值是1Q即要return?jin),但是有finallyQ所以finally先执行,所以return的值是2?/div>
但是W二U情况不使用Q就是说finally里不用returnQ因样finally没有正常的执行完毕Q这是不推荐的?赞同0| 评论         


志成中国 2012-11-09 16:00 发表评论
]]>当当|问题get_post问题http://www.tkk7.com/jiadongpo/archive/2012/11/09/391097.html志成中国志成中国Fri, 09 Nov 2012 07:49:00 GMThttp://www.tkk7.com/jiadongpo/archive/2012/11/09/391097.htmlhttp://www.tkk7.com/jiadongpo/comments/391097.htmlhttp://www.tkk7.com/jiadongpo/archive/2012/11/09/391097.html#Feedback0http://www.tkk7.com/jiadongpo/comments/commentRss/391097.htmlhttp://www.tkk7.com/jiadongpo/services/trackbacks/391097.html /WEB-INF/jsp/main/main.jsp /WEB-INF/jsp/user/login_form.jsp 所以取得结果在toLoginAction的execute里运行两? String pass = iuserDao.findPassWordByEmail(email); System.out.println(email); System.out.println(pass); 也输Zơ:(x)条g不同Q输出内容不? 当login_form.jsp里的表单
使用post方式提交Ӟ控制台输出如下:(x) root@root.com root null null 当login_form.jsp里的表单 使用get方式提交Ӟ控制台输出如下:(x) root@root.com root root@root.com root 解决Ҏ(gu)一Q加struts的token拦截器,只让表单提交一ơ? 解决Ҏ(gu)二:(x)转一个actionQ就是把他自动提交的那个h通过action的{发取消掉? 问题Q? Z么get和post的默认请求后取到的g(x)不同Q? Z么在window的电(sh)脑里没有问题Q? ---------------------------------------------- 在window下Q正常输出如下:(x) root@root.com root ---------------------------------------------- ~存问题Q服务器~存或者浏览器~存或者浏览器bugQ,D提交两次Q与操作pȝ、程序、js提交是没关系Q? getQ通过URL路传参,当页面再ơ提交,q会(x)把URL中的g递给actionQ所有属性再ơ被填充׃出现null? post:URL路径没有信息Q当再次提交Q就出现属性就出现null? 你在学生机器?把在tomcat中work目录删除、在把\webapps 中项目删除,把web容器~存清空下! 或者把学生机器重新启动下,把服务器~存d清除? ---------------------------------------------- ---------------------------------------------- 囄Qstruts-user.xml配置如下Q? ---------------------------------------------- ToLoginActioncd? Q? ---------------------------------------------- q入主页面的URL如:(x) ---------------------------------------------- 登陆的URL如:(x) ---------------------------------------------- 登陆界面Q? ---------------------------------------------- windwopȝ下提交输出如图:(x) ---------------------------------------------- Linuxpȝ下,采用get提交时 ---------------------------------------------- Linuxpȝ下,采用post提交? ---------------------------------------------- 最后在学生?sh)脑上又试?jin)几次Qget方式提交正常和window系l下一样了(jin)Qpost方? 提交q是没改变,不知道ؓ(f)什么? ---------------------------------------------- 邮g内容如下Q? 发g人:(x)贾东? 发送时_(d)(x) 2012-11-08 09:37 收g人:(x)zhaozq 主题Q?dang_get_post 赵老师Q? (zhn)好。学生的E序有点问题Q想听一下?zhn)的理解。问题描q如下:(x) q入当当|的main面Q点登陆输入用户名,密码后,点登陆会(x)hToLoginActionQ? q入main面。在ToLoginAction里打C(jin)email和passQ登陆之后输出结果在linux pȝ下与window下不同。windowpȝ下正常输出,而在linuxpȝ下有输出两次Qƈ? login_form.jsp时表单提交方法ؓ(f)getӞ两次都能正常输出Q当提交方式为post里,W? 二次为null。例如:(x) 在windowpȝ下:(x) 我们在输入框Q输入用户名Qroot@qq.com 密码rootQ会(x)输出如下Q? root@qq.com root 在linuxpȝ? 当login_form.jsp的表单提交ؓ(f)getӞ输出root@qq.comrootӞ 输出如下Q? root@qq.com root root@qq.com root 当login_form.jsp的表单提交ؓ(f)postӞ输入root@qq.comrootӞ 输出如下Q? root@qq.com root null null 原因分析Q首先想的是submit按钮在用jsӞ有自动提交功能,可是也没使用js啊, q有在linuxpȝ有自qform机制。还有一个是E序有问题? 解决Ҏ(gu)Q我l这个action加了(jin)个token表单拦截器就可以。说明是表单提交两次? 问题是:(x)1.Z么表单会(x)提交两次Q而在window下只提交一个? 2.Z么在linux下用get和post提交方式W二ơ取到的g(x)不一栗? 3. form提交时在linuxpȝ下与window有什么不一栗? 附g内是E序源码Q谢谢?zhn)的宝贉|间? ? w体健康,工作利! 贾东坡北方区 北方基地目?目l理 E-mail: jiadp@tarena.com.cn Address: 北京?jng)昌q_北七安宏富创业园科技园综合楼3? Mobile: 18301442726 Fax: 86-10-82823773 Website: www.tarena.com.cn ---------------------------------------------- 发g人:(x)zhaozq 发送时_(d)(x) 2012-11-08 11:21 收g人:(x)jiadp 主题Q?回复: dang_get_post 贾老师Q? (zhn)好Q? 你们班的学生机器是不是采用的是云服务器? zhaozq ---------------------------------------------- 赵老师Q? (zhn)好。我们班的机器都是普通主机,linuxpȝ的,不是用核的,也不是云服务器? 谢谢(zhn)的宝贵旉? ---------------------------------------------- 贾老师Q? (zhn)好Q? ~存问题Q服务器~存或者浏览器~存或者浏览器bugQ,D提交两次Q与操作pȝ、程序、js提交是没关系Q? getQ通过URL路传参,当页面再ơ提交,q会(x)把URL中的g递给actionQ所有属性再ơ被填充׃出现null? post:URL路径没有信息Q当再次提交Q就出现属性就出现null? 你在学生机器?把在tomcat中work目录删除、在把\webapps 中项目删除,把web容器~存清空下! 或者把学生机器重新启动下,把服务器~存d清除? zhaozq ---------------------------------------------- 赵老师Q? (zhn)好。?zhn)的分析很有道理,可是我用另外几台电(sh)脑Q试?jin)也不行Q所以不该是~存问题? 览器bugQ这个还没测试,因ؓ(f)所有学生的?sh)脑都是同样的系l,同样的浏览器Q都是这? 情况。要是缓存问题,怎么可能用token拦截?jin),拦截下的是缓存的Q还是我自己提交的,以及(qing) 在哪地方~存。还有个问题是Q在web学习(fn)的时候也有表单提交,Z么就没有q种情况Q是 不是和struts有关? 谢谢Q?zhn)的宝贉|间? ---------------------------------------------- 赵老师回复Q? (zhn)好。?zhn)的分析很有道理,可是我用另外几台电(sh)脑Q试?jin)也不行Q所以不该是~存问题? 览器bugQ这个还没测试,因ؓ(f)所有学生的?sh)脑都是同样的系l,同样的浏览器Q都是这? 情况。要是缓存问题,怎么可能用token拦截?jin),拦截下的是缓存的Q还是我自己提交的,以及(qing) token不是拦截?jin),而是令牌值相同不在提交,不是在window pȝ提交没问题吗Q那׃E序无关?jin),那就是系l? ~存或者浏览器~存中,正常当浏览器关闭Q缓存中数据清除,但是如果机房比较热、服务器处于长期q营{情况都?x)导致缓存信息无法清I,而媄(jing)响程序执? 在哪地方~存。还有个问题是Q在web学习(fn)的时候也有表单提交,Z么就没有q种情况Q是 ~存 不是和struts有关? 和struts没有关系Q而是与计机g讑֤有关Q这个媄(jing)响具体什么时候会(x)造成Q这个都不能预计Q这U情况一般比较少见? ? w体健康,工作利! ---------------------------------------------- 赵老师Q? (zhn)好。谢谢?zhn)的详l解{,真是受益匪浅Q这个问题可以划上句话了(jin)。同学们都很喜欢? (zhn)讲课,风趣q默、也易于接受Q期待?zhn)更多的讲解? 谢谢Q?zhn)的精讲解。?zhn)辛苦了(jin)? ? w体健康,工作利! ---------------------------------------------- ---------------------------------------------- Debug linuxpȝ下截囑֦下:(x) ---------------------------------------------- get方式Ӟ(x)正常情况下:(x)输出和win一样了(jin)? root@root.com root ---------------------------------------------- post方式Ӟ(x)输出如下Q? root@root.com root null null -------------------------------------------------------------------------------------------

志成中国 2012-11-09 15:49 发表评论
]]>Servlet生命周期 http://www.tkk7.com/jiadongpo/archive/2012/10/20/389915.html志成中国志成中国Sat, 20 Oct 2012 05:01:00 GMThttp://www.tkk7.com/jiadongpo/archive/2012/10/20/389915.htmlhttp://www.tkk7.com/jiadongpo/comments/389915.htmlhttp://www.tkk7.com/jiadongpo/archive/2012/10/20/389915.html#Feedback0http://www.tkk7.com/jiadongpo/comments/commentRss/389915.htmlhttp://www.tkk7.com/jiadongpo/services/trackbacks/389915.html 大多数程序员都知道Servlet的生命周期,单的概括q就分ؓ(f)四步Qservletcd?-->实例?-->服务--->销 毁。对q个q程只是肤浅?jin)解下,对于servlet何时被销毁,q是不太情楚。下面我们描qC下Tomcat与Servlet是如何工作的,首先看下面的 时序?

1、Web Client 向Servlet容器QTomcatQ发出Httph

2、Servlet容器接收Web Client的请?/span>

3、Servlet容器创徏一个HttpRequest对象Q将Web Clienth的信息封装到q个对象?/span>

4、Servlet容器创徏一个HttpResponse对象

5、Servlet容器调用HttpServlet对象的serviceҎ(gu)Q把HttpRequest对象与HttpResponse对象作ؓ(f)参数

     传给 HttpServlet对象

6、HttpServlet调用HttpRequest对象的有x法,获取Httph信息

7、HttpServlet调用HttpResponse对象的有x法,生成响应数据

8、Servlet容器把HttpServlet的响应结果传lWeb Client

 

对于Servlet容器(Tomcat)与HttpServlet是怎样q行交互的呢Q看下类?/p>

Servlet的框架是׃个Java包组成的Qjavax.servlet与javax.servlet.http。在javax.servlet包中 定义?jin)所有的Servletc都必须实现或者扩展的通用接口和类。在javax.servlet.http包中定义?jin)采用Http协议通信?HttpServletcRServlet的框架的核心(j)是javax.servlet.Servlet接口Q所有的Servlet都必d现这个接口?/p>

在Servlet接口中定义了(jin)5个方法,

其中3个方法代表了(jin)Servlet的生命周期:(x)

1、initҎ(gu)Q负责初始化Servlet对象?/span>

2、serviceҎ(gu)Q负责响应客L(fng)h?/span>

3、destroyҎ(gu)Q当Servlet对象退出生命周期时Q负责释攑֍用的资源?/span>

 

一、创建Servlet对象的时?/strong>

1、Servlet容器启动Ӟ(x)dweb.xml配置文g中的信息Q构造指定的Servlet对象Q创建ServletConfig对象Q同时将ServletConfig对象作ؓ(f)参数来调用Servlet对象的initҎ(gu)?/p>

2、在Servlet容器启动后:(x)客户首次向Servlet发出hQServlet容器?x)判断内存中是否存在指定的Servlet对象Q如果没有则创徏 它,然后Ҏ(gu)客户的请求创建HttpRequest?nbsp;      HttpResponse对象Q从而调用Servlet

     对象的serviceҎ(gu)?/p>

3、Servlet的类文g被更新后Q重新创建Servlet

      Servlet容器在启动时自动创徏ServletQ这是由在web.xml文g中ؓ(f)Servlet讄?lt;load-on-startup>属性决?/p>

      的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的Ş式存在?/p>

二、销毁Servlet对象的时?/strong>

1?span style="color: #ff0000; ">Servlet容器停止或者重新启?/span>QServlet容器调用Servlet对象的destroyҎ(gu)来释放资源。以上所讲的是Servlet对象的生命周期。那么Servlet容器如何知道创徏哪一个Servlet对象Q?/p>

Servlet对象如何配置Q实际上q些信息是通过dweb.xml配置文g来实现的?/p>

我们来看一下web.xml文g中的Servlet对象的配|节信息

Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?/p>

<servlet>

    <servlet-name>action<servlet-name>

    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

    <init-param>

        <param-name>config</param-name>

        <param-value>/WEB-INF/struts-config.xml</param-value>

    </init-param>

    <init-param>

        <param-name>detail</param-name>

        <param-value>2</param-value>

    </init-param>

    <init-param>

        <param-name>debug</param-name>

        <param-value>2</param-value>

    </init-param>

    <load-on-startup>2</load-on-startup>

</servlet>

<servlet-mapping>

    <servlet-name>action</servlet-name>

    <url-pattern>*.do</url-pattern>

</servlet-mapping>

Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-

下面对上面的配置节信息进行解?/p>

servlet-nameQServlet对象的名U?/p>

servlet-classQ创建Servlet对象所要调用的c?/p>

param-nameQ参数名U?/p>

param-valueQ参数?/p>

load-on-startupQServlet容器启动时加载Servlet对象的顺?/p>

servlet-mapping/servlet-nameQ要与servlet中的servlet-name配置节内容对?/p>

url-patternQ客戯问的Servlet的相对URL路径

 

       当Servlet容器启动的时候读?lt;servlet>配置节信息,Ҏ(gu)<servlet-class>配置节信息创?Servlet对象Q同时根?lt;init-param>配置节信息创建HttpServletConfig对象Q然后执行Servlet对象 的initҎ(gu)Qƈ且根?lt;load-on-startup>配置节信息来军_创徏Servlet对象的顺序,如果此配|节信息数或者没 有配|,那么在Servlet容器启动Ӟ不加蝲此Servlet对象。当客户讉KServlet容器ӞServlet容器Ҏ(gu)客户讉K的URL?址Q通过<servlet-mapping>配置节中?lt;url-pattern>配置节信息找到指定的Servlet对象Qƈ 调用此Servlet对象的serviceҎ(gu)?/p>

 

Z(jin)验证下,我新Z(jin)一个web app工程Q新Z个ServletQ如?

Java代码  收藏代码
  1. package com.tdt.servlet;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10. public class TestServlet extends HttpServlet {  
  11.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  12.             throws ServletException, IOException {  
  13.         this.doPost(request, response);  
  14.     }  
  15.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  16.             throws ServletException, IOException {  
  17.   
  18.         response.setContentType("text/html");  
  19.         PrintWriter out = response.getWriter();  
  20.         out.println("Hello,this is a test");  
  21.       
  22.         out.flush();  
  23.         out.close();  
  24.     }  
  25.   
  26.     public void destroy() {  
  27.         System.err.println(getServletName()+"生命周期l束");;  
  28.     }  
  29.       
  30.     public void init() throws ServletException {  
  31.         System.out.println(getServletName()+"执行初始?);  
  32.     }  
  33. }  

 当servlet被销毁时?x)在控制C打印提示语句Q不q我发现在tomcat中,只要不停止web容器Qservlet是不?x)被销毁的。有没有什么方 法,当serviceҎ(gu)执行完毕销毁这个servlet呢,我问?jin)下老师Q他说写一个监听器Q不q我不知道怎么d现它Q如果有朋友知道实现的过E, q请赐教?/p>

志成中国 2012-10-20 13:01 发表评论
]]>
OracleW记-薛v露老师http://www.tkk7.com/jiadongpo/archive/2012/10/20/389914.html志成中国志成中国Sat, 20 Oct 2012 04:57:00 GMThttp://www.tkk7.com/jiadongpo/archive/2012/10/20/389914.htmlhttp://www.tkk7.com/jiadongpo/comments/389914.htmlhttp://www.tkk7.com/jiadongpo/archive/2012/10/20/389914.html#Feedback0http://www.tkk7.com/jiadongpo/comments/commentRss/389914.htmlhttp://www.tkk7.com/jiadongpo/services/trackbacks/389914.html阅读全文

志成中国 2012-10-20 12:57 发表评论
]]>
վ֩ģ壺 ޾Ʒ۵Ӱ߹ۿ| һҹߴ| ѹ߹ۿ| ϸëƬ| һaƬɫëƬ| 123Ʒ| պߵӰ| 99ƷƷ| ޹ƷƬþ| ڵƵ| ֻĻ| Ů18ëƬaëƬ| 51ҹƷƵ| Ļ| 츾AVӰ| ƷŮٸavѾþ| þ޾Ʒav| þ޾ƷĻ| ޾ƷƬ߹ۿ| Ů˸߳Ƶ߹ۿ | Ʒѿþþ㽶| ޾Ʒþþþþ| þþþAVרվ| 69Ƶ߹ۿ| ѹۿ| ƵַѲ| ľþþƷ1| ڵƷƵ| ߹ۿɫƬվ| պ Ļ| Ļߵ| վ߹ۿ| AV߲ | ޸Ƶһ| 18վƬѹۿ| þûɫվ| Ůɫվ| Ůվѹۿ| 㽶Ʒþ| ޾Ʒ˳ɵӰ| һĻ|