??xml version="1.0" encoding="utf-8" standalone="yes"?>91亚洲精品自在在线观看,亚洲综合无码精品一区二区三区,久久亚洲精品无码avhttp://m.tkk7.com/meil/<br><font size="3px" >非澹泊无以明?非宁静无以致q?</font>zh-cnMon, 12 May 2025 11:10:47 GMTMon, 12 May 2025 11:10:47 GMT60l想创业的程序员的徏?/title><link>http://m.tkk7.com/meil/archive/2007/07/02/127705.html</link><dc:creator>向东博客</dc:creator><author>向东博客</author><pubDate>Mon, 02 Jul 2007 15:17:00 GMT</pubDate><guid>http://m.tkk7.com/meil/archive/2007/07/02/127705.html</guid><wfw:comment>http://m.tkk7.com/meil/comments/127705.html</wfw:comment><comments>http://m.tkk7.com/meil/archive/2007/07/02/127705.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.tkk7.com/meil/comments/commentRss/127705.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/meil/services/trackbacks/127705.html</trackback:ping><description><![CDATA[<div id="8g4uo8g" class="postcontent"> <p><span style="font-size: 12pt;"><strong>一Q技术换q股</strong></span></p> <p><span style="font-size: 12pt;">        淘宝|是个好东东Q当个掌柜就可以赚钱Q当淘宝掌柜赚了钱干什么呢Q最好是做个自己的网站,把淘宝店当宣传和门市Q把自己的网站当资Q耕耘升倹{?/span></p> <p><span style="font-size: 12pt;">        E序员的机遇在于Q?span style="font-family: Times New Roman;">99%</span>的淘宝掌柜自己做不了一个成长性强可维护的独立|站Q如果有人给?span style="font-family: Times New Roman;">10%</span>的股份请你编E,你就可以想买权证一P赌它一把,最坏是零蛋Q最好是<span style="font-family: Times New Roman;">VC</span>W一轮进入,你就套现?/span></p> <p><span style="font-size: 12pt;">       E序员要在心态上把徏|站当成炒权证,一分钱的现金都不要Ҏ的,p股䆾Q这P那天心情不爽了,或者那个掌柜干的事没戏Q立d散伙Q没有一分钱的心理压力?/span></p> <p> </p> <p><span style="font-size: 12pt;"><strong>捷径二:技术换</strong></span></p> <p><span style="font-size: 12pt;">        董\博客火吧Q可董\为啥没象徐静蕾一栯己做个鲜花村的网站呢Q不是不惻I肯定是没技?span style="font-family: Times New Roman;">+</span>不愿意花钱操心去弄?/span></p> <p><span style="font-size: 12pt;">        如果你帮董\免费弄一个呢Q一分钱不要Q一个百分点的股份也不要Q就要他的网站下面有一行字Q本站由董\_丝E序员小<span style="font-family: Times New Roman;">X</span>公益制作l护Q联p邮?span style="font-family: Times New Roman;">….</span></span></p> <p><span style="font-size: 12pt;">        E序员不可能都去h癑ֺ拿上期权{套玎ͼ人家已经规范了,要想发胦Q就要搭上潜力企业,怎么搭上潜力企业?span style="font-family: Times New Roman;">CEO</span>呢?</span></p> <p><span style="font-size: 12pt;">        Ҏ<span style="font-family: Times New Roman;">SNS</span>六度I间理论Q名人的_丝最杂,你帮名h的忙Q一定有名h的粉丝帮你一把?/span></p> <p><span style="font-size: 12pt;">        眼光不用太高Q比董\?span style="font-family: Times New Roman;">100</span>LQ某行业的名Z很用,你要是给你们家乡的县长弄个网站,保证你们家h一定受益,当然Q前提是要落实清楚,<span style="font-family: Times New Roman;">Y</span>是不是个马上双规的贪官?/span></p> <p> </p> <p><span style="font-size: 12pt;"><strong>捷径三:技术换市场</strong></span></p> <p><span style="font-size: 12pt;">        E序员最Ҏ犯的错误是盲目自信地l自q产品定义用户?/span></p> <p><span style="font-size: 12pt;">        q些日子闹腾最凶的新浪搜狐腾讯博客互相搬家是典型Q大安嚷嚷自己有个博客搬家工具Q恶狠狠地把自己的程序品功能定义成Qؓ从某处搬家到我这里的博客用户服务?/span></p> <p><span style="font-size: 12pt;">其实Q博客的_丝们才最需要这样一个工P</span></p> <p><span style="font-size: 12pt;">【博客珍藏工兗?/span></p> <p><span style="font-size: 12pt;">把你最喜欢的博客,全部下蝲C的硬盘,全部<span style="font-family: Times New Roman;">Word</span>文档、保存全部链接和评论Q你可以随时看,也可以随便把q些博客整理分nl你的好朋友?/span></p> <p><span style="font-size: 12pt;">如果新浪肯出q样一个工P贫僧一定把当年明月的博客都珍藏下来Q然后,闲着没事的时候,到处转脓?/span></p> <p><span style="font-size: 12pt;">如果博客的粉丝们都用新浪的【博客珍藏工兗到处下载搜狐和腾讯?span style="font-family: Times New Roman;">Blogbus</span>的博客,那新的【博客珍藏工兗岂不就可以L<span style="font-family: Times New Roman;">PK</span>那个搜狗输入法的影响力了Q?/span></p> <p><span style="font-size: 12pt;"><span style="font-family: Times New Roman;">So</span>Q程序员应该惛_某个应用Q就开发一个小E序Q然后免费给大家随便用,让用戯己去定义它能做什么,E序员唯一的回报是Q品牌市场的口碑营销?/span></p> <p><span style="font-size: 12pt;">如果Q你真做了一个万能的【博客珍藏工兗?/span></p> <p><span style="font-size: 12pt;">张朝阌你去他的游艇上谈谈收购,也不是没可能的,只要是品真有用Q真好Q就不怕张朝阳不担心万一新浪专用了,搜狐又落后挨打很操蛋?/span></p> </div> <img src ="http://m.tkk7.com/meil/aggbug/127705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/meil/" target="_blank">向东博客</a> 2007-07-02 23:17 <a href="http://m.tkk7.com/meil/archive/2007/07/02/127705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA面试题汇?/title><link>http://m.tkk7.com/meil/archive/2007/05/26/120131.html</link><dc:creator>向东博客</dc:creator><author>向东博客</author><pubDate>Fri, 25 May 2007 23:41:00 GMT</pubDate><guid>http://m.tkk7.com/meil/archive/2007/05/26/120131.html</guid><wfw:comment>http://m.tkk7.com/meil/comments/120131.html</wfw:comment><comments>http://m.tkk7.com/meil/archive/2007/05/26/120131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/meil/comments/commentRss/120131.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/meil/services/trackbacks/120131.html</trackback:ping><description><![CDATA[<span id="4wgeiku" class=oblog_text>  <p>1. Java中的异常处理机制的简单原理和应用?nbsp; </p> <p>当JavaE序q反了Java的语义规则时QJava虚拟机就会将发生的错误表CZؓ一个异常。违反语义规则包?U情c一U是Javacd内置的语义检查。例如数l下标越?会引发IndexOutOfBoundsException;讉Knull的对象时会引发NullPointerException。另一U情况就是Java允许E序员扩展这U语义检查,E序员可以创q异常Qƈ自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子cR?nbsp; </p> <p>2. Java的接口和C++的虚cȝ相同和不同处?nbsp; </p> <p>׃Java不支持多l承Q而有可能某个cL对象要用分别在几个cL对象里面的方法或属性,现有的单l承机制׃能满求。与l承相比Q接口有更高的灵zL,因ؓ接口中没有Q何实C码。当一个类实现了接口以后,该类要实现接口里面所有的Ҏ和属性,q且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口?nbsp; </p> <p>3. 垃圾回收的优点和原理。ƈ考虑2U回收机制?nbsp; </p> <p>Java语言中一个显著的特点是引入了垃圑֛收机Ӟ使c++E序员最头疼的内存管理的问题q刃而解Q它使得JavaE序员在~写E序的时候不再需要考虑内存理。由于有个垃圑֛收机ӞJava中的对象不再?#8220;作用?#8221;的概念,只有对象的引用才?#8220;作用?#8221;。垃圑֛收可以有效的防止内存泄露Q有效的使用可以使用的内存。垃圑֛收器通常是作Z个单独的低别的U程q行Q不可预知的情况下对内存堆中已经M的或者长旉没有使用的对象进行清除和回收Q程序员不能实时的调用垃圑֛收器Ҏ个对象或所有对象进行垃圑֛收。回收机制有分代复制垃圾回收和标记垃圑֛Ӟ增量垃圾回收?nbsp; </p> <p>4.U程同步的方法?nbsp; </p> <p>wait():使一个线E处于等待状态,q且释放所持有的对象的lock?nbsp; </p> <p>sleep():使一个正在运行的U程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常?nbsp; </p> <p>notify():唤醒一个处于等待状态的U程Q注意的是在调用此方法的时候,q不能确切地唤醒某一个等待状态的U程Q而是由JVM定唤醒哪个U程Q而且不是按优先?nbsp; </p> <p>Allnotity():唤醒所有处入等待状态的U程Q注意ƈ不是l所有唤醒线E一个对象的锁,而是让它们竞争?nbsp; </p> <p>5. Error与Exception有什么区别?  </p> <p>Error表示pȝU的错误和程序不必处理的异常Q?nbsp; </p> <p>Exception表示需要捕捉或者需要程序进行处理的异常?nbsp; </p> <p>6. 在java中一个类被声明ؓfinalcdQ表CZ什么意思?  </p> <p>   表示该类不能被承,是顶U类?br>   <br>7 heap和stack有什么区别?/p> <p>   栈是一U线形集合,其添加和删除元素的操作应在同一D完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素?/p> <p>8谈谈final, finally, finalize的区别?/p> <p>  final—修饰符Q关键字Q如果一个类被声明ؓfinalQ意味着它不能再z出新的子c,不能作ؓ父类被ѝ因此一个类不能既被声明?abstract的,又被声明为final的。将变量或方法声明ؓfinalQ可以保证它们在使用中不被改变。被声明为final的变量必d声明时给定初|而在以后的引用中只能dQ不可修攏V被声明为final的方法也同样只能使用Q不能重载?nbsp; <br>  finally—异常处理时提供 finally 块来执行M清除操作。如果抛Z个异常,那么相匹配的 catch 子句׃执行Q然后控制就会进?finally 块(如果有的话)?nbsp; <br>  finalize—方法名。Java 技术允怋?finalize() Ҏ在垃圾收集器对象从内存中清除出M前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对q个对象调用的。它是在 Object cM定义的,因此所有的c都l承了它。子c覆?finalize() Ҏ以整理系l资源或者执行其他清理工作。finalize() Ҏ是在垃圾攉器删除对象之前对q个对象调用的?</p> <p>9  Anonymous Inner Class (匿名内部c? 是否可以extends(l承)其它c,是否可以implements(实现)interface(接口)?</p> <p>  匿名的内部类是没有名字的内部cR不能extends(l承) 其它c,但一个内部类可以作ؓ一个接口,由另一个内部类实现?<br><br>10  Static Nested Class ?Inner Class的不?<br>Nested Class Q一般是C++的说法)QInner Class (一般是JAVA的说?。Java内部cMC++嵌套cL大的不同在于是否有指向外部的引用上?<br>  注: 静态内部类QInner ClassQ意味着1创徏一个static内部cȝ对象Q不需要一个外部类对象Q?不能从一个static内部cȝ一个对象访问一个外部类对象  .<br><span id="oe84oyi" class=oblog_text> </p> <p>11   &?amp;&的区别?nbsp; <br>  &是位q算W?amp;&是布逻辑q算W?nbsp; </p> <p>12  HashMap和Hashtable的区别?/p> <p>  都属于Map接口的类Q实C惟一键映到特定的g?nbsp; <br>  HashMap cL有分cL者排序。它允许一?null 键和多个 null 倹{?nbsp; </p> <p><br>  Hashtable cM?HashMapQ但是不允许 null 键和 null 倹{它也比 HashMap 慢,因ؓ它是同步的?/p> <p>13 Collection ?Collections的区别?/p> <p>    Collection是个java.util下的接口Q它是各U集合结构的父接口?<br>  Collections是个java.util下的c,它包含有各种有关集合操作的静态方法?/p> <p>14 什么时候用assert?/p> <p>  断言是一个包含布表辑ּ的语句,在执行这个语句时假定该表辑ּ?true?nbsp; <br>如果表达式计ؓ falseQ那么系l会报告一?Assertionerror。它用于调试目的Q?nbsp; <br>assert(a > 0); // throws an Assertionerror if a <= 0  <br>断言可以有两UŞ式:  <br>assert Expression1 ;  <br>assert Expression1 : Expression2 ;  <br>  Expression1 应该L产生一个布倹{?nbsp; <br>  Expression2 可以是得Z个值的L表达式。这个值用于生成显C更多调?nbsp; <br>信息?String 消息?nbsp; <br>  断言在默认情况下是禁用的。要在编译时启用断言Q需要?source 1.4 标记Q?<br>  javac -source 1.4 Test.java  <br>  要在q行时启用断aQ可使用 -enableassertions 或?-ea 标记?nbsp; <br>  要在q行旉择用断言Q可使用 -da 或?-disableassertions 标记?nbsp; <br>  要系l类中启用断aQ可使用 -esa 或?-dsa 标记。还可以在包的基上启用或者禁用断a?nbsp; <br>  可以在预计正常情况下不会到达的Q何位|上攄断言。断a可以用于验证传递给U有Ҏ的参数。不q,断言不应该用于验证传递给公有Ҏ的参敎ͼ因ؓ不管是否启用了断aQ公有方法都必须查其参数。不q,既可以在公有Ҏ中,也可以在非公有方法中利用断言试后置条g。另外,断言不应该以M方式改变E序的状态?nbsp; </p> <p>15 GC是什? Z么要有GC? (基础)?/p> <p>  GC是垃圾收集器。Java E序员不用担心内存管理,因ؓ垃圾攉器会自动q行理。要h垃圾攉Q可以调用下面的Ҏ之一Q?<br>  System.gc()  <br>  Runtime.getRuntime().gc()</p> <p>16 String s = new String("xyz");创徏了几个String Object?</p> <p>  两个对象Q一个是“xyz”,一个是指向“xyz”的引用对象s?/p> <p>17 Math.round(11.5){於多少? Math.round(-11.5){於多少?</p> <p>  Math.round(11.5)q回QlongQ?2QMath.round(-11.5)q回QlongQ?11;</p> <p>18 short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?</p> <p>  short s1 = 1; s1 = s1 + 1;有错Qs1是short型,s1+1是int?不能昑ּ转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确?/p> <p>19 sleep() ?wait() 有什么区? 搞线E的最?/p> <p>  sleep()Ҏ是ɾU程停止一D|间的Ҏ。在sleep 旉间隔期满后,U程不一定立x复执行。这是因为在那个时刻Q其它线E可能正在运行而且没有被调度ؓ攑ּ执行Q除?a)“醒来”的线E具有更高的优先U?(b)正在q行的线E因为其它原因而阻塞?nbsp; <br>  wait()是线E交互时Q如果线E对一个同步对象x 发出一个wait()调用Q该U程会暂停执行,被调对象q入{待状态,直到被唤醒或{待旉到?nbsp; </p> <p>20 Java有没有goto?  <br>  Goto—java中的保留字,现在没有在java中用?/p> <span id="k8w4k44" class=oblog_text>  <p>21 数组有没有length()q个Ҏ? String有没有length()q个ҎQ?/p> <p>  数组没有length()q个ҎQ有length的属性?nbsp; <br>  String有有length()q个Ҏ?</p> <p>22 Overload和Override的区别。Overloaded的方法是否可以改变返回值的cd?</p> <p>  Ҏ的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父cM子类之间多态性的一U表玎ͼ重蝲Overloading是一个类中多态性的一U表现。如果在子类中定义某Ҏ与其父类有相同的名称和参敎ͼ我们说该Ҏ被重?Overriding)。子cȝ对象使用q个ҎӞ调用子cM的定义,对它而言Q父cM的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参C数或有不同的参数cdQ则UCؓҎ的重?Overloading)?nbsp; <br>Overloaded的方法是可以改变q回值的cd?</p> <p>23 Set里的元素是不能重复的Q那么用什么方法来区分重复与否? 是用==q是equals()? 它们有何区别?</p> <p>  Set里的元素是不能重复的Q那么用iterator()Ҏ来区分重复与否。equals()是判M个Set是否相等?equals()?=Ҏ军_引用值是否指向同一对象equals()在类中被覆盖Qؓ的是当两个分ȝ对象的内容和cd盔R的话Q返回真倹{?nbsp; </p> <p>24最常见到的runtime exception?/p> <p>ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException,EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, Secur  <br>ityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException  </p> <p>25 error和exception有什么区?</p> <p>  error 表示恢复不是不可能但很困隄情况下的一U严重问题。比如说内存溢出。不可能指望E序能处理这L情况?nbsp; <br>  exception 表示一U设计或实现问题。也是_它表C如果程序运行正常,从不会发生的情况?/p> <p>26 List, Set, Map是否l承自Collection接口?</p> <p>     ListQSet?nbsp; <br>     Map不是<br>     <br>27 abstract class和interface有什么区?</p> <p>  声明Ҏ的存在而不d现它的类被叫做抽象类Qabstract classQ,它用于要创徏一个体现某些基本行为的c,qؓ该类声明ҎQ但不能在该cM实现该类的情c不能创建abstract cȝ实例。然而可以创Z个变量,其类型是一个抽象类Qƈ让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract cȝ子类为它们父cM的所有抽象方法提供实玎ͼ否则它们也是抽象cMؓ。取而代之,在子cM实现该方法。知道其行ؓ的其它类可以在类中实现这些方法?nbsp; <br>  接口QinterfaceQ是抽象cȝ变体。在接口中,所有方法都是抽象的。多l承性可通过实现q样的接口而获得。接口中的所有方法都是抽象的Q没有一个有E序体。接口只可以定义static final成员变量。接口的实现与子cȝ|除了该实现类不能从接口定义中l承行ؓ。当cd现特D接口时Q它定义Q即程序体l予Q所有这U接口的Ҏ。然后,它可以在实现了该接口的类的Q何对象上调用接口的方法。由于有抽象c,它允怋用接口名作ؓ引用变量的类型。通常的动态联~将生效。引用可以{换到接口cd或从接口cd转换Qinstanceof q算W可以用来决定某对象的类是否实现了接口?nbsp; </p> <p>28 abstract的method是否可同时是static,是否可同时是nativeQ是否可同时是synchronized?</p> <p>  都不?/p> <p>29 接口是否可承接? 抽象cL否可实现(implements)接口? 抽象cL否可l承实体c?concrete class)?</p> <p>  接口可以l承接口。抽象类可以实现(implements)接口Q抽象类可承实体类Q但前提是实体类必须有明的构造函数?/p> <p>30 启动一个线E是用run()q是start()?</p> <p>  启动一个线E是调用start()ҎQɾU程所代表的虚拟处理机处于可运行状态,q意味着它可以由JVM调度q执行。这q不意味着U程׃立即q行。run()Ҏ可以产生必须退出的标志来停止一个线E?br><br><span id="q444wyw" class=oblog_text> </p> <p>31 构造器Constructor是否可被override?</p> <p>  构造器Constructor不能被承,因此不能重写OverridingQ但可以被重载Overloading?/p> <p>32 是否可以l承Stringc?</p> <p>  StringcLfinalcL不可以ѝ?/p> <p>33 当一个线E进入一个对象的一个synchronizedҎ后,其它U程是否可进入此对象的其它方?</p> <p>  不能Q一个对象的一个synchronizedҎ只能׃个线E访问?/p> <p>33  try {}里有一个return语句Q那么紧跟在q个try后的finally {}里的code会不</p> <p>会被执行Q什么时候被执行Q在return前还是后?  <br>  会执行,在return前执行?/p> <p>34 ~程? 用最有效率的Ҏ出2乘以8{於?  </p> <p>  2 << 3  </p> <p>35 两个对象值相?x.equals(y) == true)Q但却可有不同的hash codeQ这句话对不?</p> <p>  不对Q有相同的hash code?/p> <p>36  当一个对象被当作参数传递到一个方法后Q此Ҏ可改变这个对象的属性,q可q回变化后的l果Q那么这里到底是g递还是引用传?</p> <p>  是g递。Java~程语言只由g递参数。当一个对象实例作Z个参数被传递到Ҏ中时Q参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变Q但对象的引用是永远不会改变的?/p> <p>37  swtich是否能作用在byte上,是否能作用在long上,是否能作用在String?</p> <p>  switchQexpr1Q中Qexpr1是一个整数表辑ּ。因此传递给 switch ?case 语句的参数应该是 int?short?char 或?byte。long,string 都不能作用于swtich?nbsp; <br>38 Hashtable和HashMap</p> <p>  Hashtablel承自Dictionaryc,而HashMap是Java1.2引进的Map interface的一个实?nbsp; <br>  HashMap允许null作ؓ一个entry的key或者valueQ而Hashtable不允?<br>q有是QHashMap把Hashtable的containsҎL了,Ҏcontainsvalue和containsKey。因为containsҎҎ让h引v误解?<br>  最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是Q在 <br>多个U程讉KHashtableӞ不需要自׃ؓ它的Ҏ实现同步Q而HashMap必Mؓ之提供外同步?nbsp; <br>Hashtable和HashMap采用的hash/rehash法都大概一P所以性能不会有很大的差异?br><br></p> <div align=right> <p>    JAVA面试题汇?    <a title=日志JAVA面试题汇?nbsp;一 target=_blank hasbox="2"><u><font color=#810081>一</font></u></a> <a title=日志JAVA面试题汇?nbsp;? target=_blank hasbox="2"><u><font color=#810081>?/font></u></a> <a title=日志JAVA面试题汇?nbsp;? target=_blank hasbox="2"><u><font color=#810081>?/font></u></a> <a title=日志JAVA面试题汇?nbsp;? target=_blank><u><font color=#810081>?</font></u></a></p> </div> <p> <table cellSpacing=0 cellPadding=0 width="100%" border=0> <tbody> <tr> <td height=3> </td> </tr> </tbody> </table> <table cellSpacing=0 cellPadding=0 width="100%" border=0> <tbody> <tr> </tr> </tbody> </table> <table height=14 cellSpacing=0 cellPadding=0 width="100%" align=center border=0> <tbody> <tr> <td> </td> </tr> </tbody> </table> </p> <div class="88i44m4" id=blogaddon> <li>标签Q?span><a ><u><font color=#0000ff>java</font></u></a></span> <span><a ><u><font color=#0000ff>面试?/font></u></a></span>  </li> </div> </span></span></span></span> <img src ="http://m.tkk7.com/meil/aggbug/120131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/meil/" target="_blank">向东博客</a> 2007-05-26 07:41 <a href="http://m.tkk7.com/meil/archive/2007/05/26/120131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>做好老板p懂得留住员工http://m.tkk7.com/meil/archive/2007/05/23/119446.html向东博客向东博客Wed, 23 May 2007 09:14:00 GMThttp://m.tkk7.com/meil/archive/2007/05/23/119446.htmlhttp://m.tkk7.com/meil/comments/119446.htmlhttp://m.tkk7.com/meil/archive/2007/05/23/119446.html#Feedback2http://m.tkk7.com/meil/comments/commentRss/119446.htmlhttp://m.tkk7.com/meil/services/trackbacks/119446.html一天,一只兔子在山洞前写文章Q?
一只狼Cq来Q问Q?#8220;兔子啊,你在q什么?”
{曰Q?#8220;写文章?#8221;问:“什么题目?”{曰Q?#8220;《浅谈兔子是怎样吃掉狼的》?#8221;
狼哈哈大W,表示不信Q于是兔子把狼领q山z?
q了一会,兔子独自走出山洞Ql写文章?
一只野猪走了过来,问:“兔子你在写什么?”{:“?章?#8221;问:“题目是什么?”
{:“《浅谈兔子是如何把野猪吃掉的》?#8221;野猪不信Q于是同L事情发生?
最后,在山z里Q一只狮子在一堆白骨之_满意的剔着牙读着兔子交给它的文章Q?
题目Q《一只动物,能力大小关键要看你的老板是谁?

q只兔子有次不小心告诉了他的一个兔子朋友,q消息逐渐在森林中传播Q?
狮子知道后非常生气,他告诉兔子:“如果q个星期没有食物q洞Q我吃你?#8221;
于是兔子l箋在洞口写文章
一只小鹿走q来Q?#8220;兔子Q你在干什么啊Q?#8221;
“写文?#8221;“什么题?#8221;““《浅谈兔子是怎样吃掉狼的?#8221;
“哈哈Q这个事情全林都知道啊Q你别胡弄我了,我是不会q洞?#8221;
“我马上要退休了Q狮子说要找个h替我,N你不惌文章的兔子变成鹿?#8221;
鹿想了惻Il于忍不住诱惑,跟随兔子走进z里?
q了一会,兔子独自走出山洞Ql写文章
一只小马走q来Q同h事情发生了?
最后,在山z里Q一只狮子在一堆白骨之_满意的剔着牙读着兔子交给它的文章
题目是:《如何发展下U动物ؓ老板提供食物?/span>

随着旉的推U,狮子长大Q兔子的食物已远q不能填p子?
一日,他告诉兔子:“我的食物量要加倍,例如Q原?天一只小鹿,现在?天一只,如果一周之内改变不了局面我吃你?
于是Q兔子离开z口Q跑q森林深处,他见C只狼
“你相信兔子能L吃掉狼吗”
狼哈哈大W,表示不信Q于是兔子把狼领q山z?
q了一会,兔子独自走出山洞Ql进入森林深?
q回他碰C只野?---“你相信兔子能L吃掉野猪?#8221;
野猪不信Q于是同L事情发生了?
原来林深处的动物ƈ不知道兔子和狮子的故?
最后,在山z里Q一只狮子在一堆白骨之_满意的剔着牙读着兔子交给它的文章
题目是:《如何实现由坐商到行商的转型板提供更多的食??/strong>


旉飞快Q{g_兔子在森林里的名气越来越?
因ؓ大家都知道它有一个很历害的老板
q只兔开始横行霸道,ZZQ没有动物敢?
它时时想起和乌龟赛跑的羞?
它找C龟说Q?#8220;三天之内Q见我老板Q?#8221;扬长而去
乌龟难过的哭?
q时却碰C一位猎?
乌龟把这事告诉了?
猎h哈哈大笑
于是林里发生了一仉大事?
猎h披着狮子皮和乌龟一起在吃兔子火?
C丢了半张U片歪歪扭扭的写着Q山外青山楼外楼Q强中还有强中手啊!Q?


在很长一D|间里林里恢复了往日的宁静Q兔子吃狼的故事g快要被大家忘C
不过一只年ȝ老虎在听说了q个故事后,被激发了灉|
于是他抓住了一只羚,对羚说Q如果你可以象以前的兔子那样为我带来食物那我׃吃你?
于是Q羚无奈的{应了老虎Q而老虎也悠然自得的q了山洞?
可是三天q去了,也没有见羊领一只动物进z。他实在憋不住了Q想出来看看情况?
羊早已不在了,他异常愤怒。正在他暴蟩如雷的时候突然发C羊写的一文?
题目是:《想要做好老板先要懂得怎样留住员工?/strong>

向东博客 2007-05-23 17:14 发表评论
]]>
你知道什么时候应该用Web Service吗?http://m.tkk7.com/meil/archive/2007/04/07/109095.html向东博客向东博客Sat, 07 Apr 2007 06:16:00 GMThttp://m.tkk7.com/meil/archive/2007/04/07/109095.htmlhttp://m.tkk7.com/meil/comments/109095.htmlhttp://m.tkk7.com/meil/archive/2007/04/07/109095.html#Feedback1http://m.tkk7.com/meil/comments/commentRss/109095.htmlhttp://m.tkk7.com/meil/services/trackbacks/109095.html现在我将列D三种情况Q在q三U情况下Q你会发现使用Web service会带来极大的好处。此后,我还会DZ应该使用Web service的一些情c?

 

跨越防火墙的通信

如果你的应用E序有成千上万的用户Q而且他们都分布在世界各地Q那么客L和服务器之间的通信是一个棘手的问题。那是因为客L和服务器之间通常都会有防火墙或者代理服务器。在q种情况下,你想使用DCOM׃是那么简单了Q而且Q通常你也不愿意把你的客户端程序发布到如此庞大数量的每一个用h中。于是,你最l选择了用览器作为客LQ写下一堆ASP面Q把应用E序的中间层暴露l最l用戗结果呢Q运气好的话Q只是开发难度大了一些,q气不好的话Q就会得C个根本无法维护的应用E序?/p>

惌一下你应该怎么在你的应用程序里面加入一个新的页面:你必d建立好用L?Web面)Q以及在q个面后面Q包含相应商业逻辑的中间层lg。这q不够,你还要再建立臛_一个ASP面Q用来接受用戯入的信息Q调用中间层lgQ把l果格式化ؓHTML形式Q最后还要把"l果?送回览器。要是客L代码不再如此依赖于HTML表单Q客L的编E不q单多了吗Q还有,建立ASP面的那一步可以省略掉吗?

当然。如果你的中间层lg是Web service的话Q你完全可以从用L面直接调用中间层lgQ从而省掉徏立ASP面的那一步。要调用Web serviceQ你可以直接使用Microsoft SOAP Toolkit?NETq样的SOAP客户端,也可以用你自己开发的SOAP客户端,然后把它和你的应用程序连接v来。这样做Q不仅可以羃短开发周期,q可以减代码的复杂度,q增强整个应用程序的可维护性。同Ӟ你的应用E序也不再需要在每次调用中间层组件时Q都跌{到相应的"l果?了?

以我的经验来看,在一个用L面和中间层有较多交互的应用程序中Q用Web serviceq种l构Q可以轻杄节省花在用户界面~程上的20%的开发时间。这样做q有另一个好处,是你将得到一个由Web servicel成的中间层Q这一层是完全可以在应用程序集成或其他场合下被重用的。最后,通过Web service把你的应用程序的逻辑和数据暴露出来,q可以让其它q_上的客户重用你的应用E序?/p>

应用E序集成

企业U的应用E序开发者都知道Q企业里l常都要把用不同语言写成的在不同q_上运行的各种E序集成hQ而这U集成将p很大的开发的力量。你的应用程序经帔R需要从q行在古老的IBML上的E序中获取数据;或者再把数据发送到L或UNIX应用E序中去。即使是在同一个^CQ不同的软g厂商生的各UY件也常常需要集成v来。通过Web serviceQ应用程序可以用标准的方法把功能和数据暴露出来,供其它的应用E序使用?/p>

例如Q你有一个订单登录程序,用于d从客h的新订单Q包括客户信息、发货地址、数量、h格和付款方式{信息。同Ӟ你还有一个订单执行程序,用于实际货物发送的理。这两个E序是来自不同Y件厂商的。一份新订单q来之后Q订单登录程序需要通知订单执行E序发送货物。通过在订单执行程序上面增加一层Web serviceQ订单执行程序可以把"AddOrder"函数暴露出来。这P每当有新订单到来Ӟ订单dE序可以调用这个函数来发送货物了。进而通过Web service集成应用E序

B2B的集?/p>

用Web service集成应用E序Q可以你公司内部的商务处理更加自动化。但当交易跨了你的供应商和客户Q突破了公司的界U时又会怎么样呢Q跨公司的商务交易集成通常叫做B2B集成?/p>

Web service是B2B集成成功的关键。通过Web serviceQ你的公司可以把关键的商务应用暴露给指定的供应商和客戗例如,把你的电子下单系l和电子发票pȝ暴露出来Q你的客户就可以以电子的方式向你发送购货订单,而你的供应商则可以以电子的方式把原料采购的发发送给你。当Ӟqƈ不是一个新的概念:电子文档交换(EDI)早就是这样了。Web service和EDI之间的主要区别在于,Web service的实现要比EDI单得多,而且Web service是运行在Internet上的Q在世界M地方都可L实现Q这样其q行成本q对较低。不q,Web serviceq不像EDI那样Q是文档交换或B2B集成的一套完整的解决Ҏ。Web service只是B2B集成的一个关键部分,q需要许多其它的部分才能完成q个集成?/p>

用Web service来实现B2B集成的最大好处在于可以轻易实C操作性。只要把你的商务逻辑暴露出来Q成为Web serviceQ你可以让M指定的合作伙伴轻杄调用你的商务逻辑Q而不他们的pȝ在什么^Cq行Q用的是什么开发语a。这样就大大减少了花在B2B集成的上的时间和成本。这L低成本让许多原本无法承受EDI的投资成本的中小企业也能实现B2B集成?/p>

软g重用

软g重用是一个很大的主题Q它有很多的形式和程度。最基本的Ş式是源代码模块或者类一U的重用。另一UŞ式是二进制Ş式的lg重用。当前,像表格控件或用户界面控gq样的可重用软glg在市Z都占有很大的份额。但q类软g的重用都有一个很严重的限Ӟ重用仅限于代码,而数据不能被重用。原因在于你可以很轻易的发布lg甚至源代码,但要发布数据没那么Ҏ了,除非那些数据都是不会l常变化的静态数据?

而Web service允许你在重用代码的同Ӟ重用代码后面的数据。用Web serviceQ你不再像以前那P要先从第三方购买、安装Y件组Ӟ再从你的应用E序中调用这些组件。你只需要直接调用远端的Web service可以了。D个例子,你想在你的应用程序中认用户输入的邮件地址Q那么,你只需把这个地址直接发送给相应的Web serviceQ这个Web service ׃帮你查阅街道地址、城市、省区和邮政~码{信息,认q个地址的确在相应的邮政~码区域。Web service 的提供商可以按时间或使用ơ数来对q项服务q行收费。这L服务要通过lg重用来实现是不现实的Q因为那L话你必须下蝲q安装好包含街道地址、城市、省区和邮政~码{信息的数据库,而且q个数据库还是不能实时更新的?/p>

另一UY仉用的情况是把好几个应用程序的功能集成h。例如,你想要徏立一个局域网上的门户站点应用Q让用户既可以查询他们的联邦快递包裹,察看股市行情Q又可以理他们的日E安排,q可以在U购买电q。现在Web上有很多应用E序供应商,都在其应用中实现了上面的q些功能。一旦他们把q些功能都通过Web service 暴露出来Q你可以非常轻易地把所有这些功能都集成C的门L点中Qؓ用户提供一个统一的、友好的界面?br>用Web service来集成各U应用中的功能,为用h供一个统一的界?br>许多应用E序都会利用Web serviceQ把当前Zlg的应用程序结构扩展ؓlg和Web service 的؜合结构。你也可以在应用E序中用第三方的Web service 提供的功能。你q可以把你自q应用E序的功能通过Web service 提供l别人。所有这些情况下Q你都可以重用代码和代码后面的数据。MQWeb service 是软g重用的一U非常有力的形式?/p>

什么时候不应该使用Web Service

一个对Web service的完整介l还应该包括什么时候不该用Web service。经q前面的介绍Q我们知道了Web service 在通过Webq行互操作或q程调用的时候是最有用的。不q,q有许多情况QWeb serviceҎ不能l你带来M好处?/p>

单机应用E序

目前Q我们还有很多桌面应用程序是供商用和个h使用的。其中一些只需要与q行在本Z的其他程序通信。在q种情况下,我们最好就不要再用Web service Q只要用本地的API可以了。COM非常适合于在q种情况下工作,因ؓ它既又快。运行在一台服务器上的服务器Y件也是这P最好直接用COM或其他本地的API来进行应用程序间的调用。当然Web service 也能用在q些情况下,但那样不仅消耗太大,而且不会l你带来M好处?/p>

局域网上的同构应用E序

在许多应用中Q你所有的E序都是用VB或VC开发的Q都在Windowsq_下用COMQ都q行在同一个局域网上。例如,你有两个服务器应用程序需要相互通信Q或者你有一个Win32或WinForm的客L序要q接到局域网上的另一个服务器E序。在q些E序里用DCOM会比SOAP/HTTP有效的多。类似的Q如果你的一?NETE序要连接到LAN上的另一?NETE序Q那么你应该使用.NET remoting。有的是,?NET remoting中,你也可以指定使用SOAP/HTTP来进行Web service 调用。不q最好还是直接通过TCPq行RPC调用Q那样会有效得多。MQ只要你从应用程序结构的角度看来Q有别的Ҏ比Web service 更有效,更可行,那就不要再用Web service?/p>

ȝ

Web service是创建可互操作的分布式应用程序的新^台。Web service 的主要目标是跨^台的可互操作性。ؓ了达到这一目标QWeb service 是完全基于XML、XSD{独立于q_、独立于软g供应商的标准的?

Web service在应用程序跨q_和跨|络q行通信的时候是非常有用的。Web service适用于应用程序集成、B2B集成、代码和数据重用Q以及通过Webq行客户端和服务器的通信的场合?

当然QWeb service也不是万能的Q你不能到处滥用Web service。在有些情况下,Web service 会降低应用程序的性能Q而不会带来Q何好处。例如,一台机器或一个局域网里面q行的同构应用程序就不应该用Web service q行通信?/p>

向东博客 2007-04-07 14:16 发表评论
]]>
JSP中的路径问题http://m.tkk7.com/meil/archive/2006/10/10/74166.html向东博客向东博客Tue, 10 Oct 2006 00:58:00 GMThttp://m.tkk7.com/meil/archive/2006/10/10/74166.htmlhttp://m.tkk7.com/meil/comments/74166.htmlhttp://m.tkk7.com/meil/archive/2006/10/10/74166.html#Feedback0http://m.tkk7.com/meil/comments/commentRss/74166.htmlhttp://m.tkk7.com/meil/services/trackbacks/74166.html 一Q?/font> 问题

    JSP 中究竟采用绝对\径还是采用相对\径随着所采用技术的来复杂,q个问题也变得越来越难以解决?/span>

Q) 采用相对路径遇到的问?/span>

l          相对路径固然比较灉|Q但如果惛_刉面内的代码却变得比较困难Q因Z同的面h不同的相对\径,复制后必MҎ一个连接的路径?/font>

l          如果面被多于一个的面所包含Q那么被包含面中的相对路径是不正的?/font>

l          如果采用 Struts ?/span> Action q回面Q那么由于页面\径与 Action 路径不同Q得浏览器无法正确解释面中的路径Q如面?/span> /pages/cust/cust.jsp Q图片所有目录ؓ /images/title.gif Q这时在 /pages/cust/cust.jsp 中的所用的路径?/span> ?./../images/title.gif?/font> Q但是如果某一?/span> Action ?/span> Forward 指向q个 JSP 文gQ而这?/span> Action 的\径ؓ /cust/manage.do Q那么页面内容中 ?./../images/title.gif?/font> ׃再指向正的路径了?/span>

解决以上问题g只有使用l对路径了?/font>

Q) 采用l对路径遇到的问?/span>

l          随着不同?/span> Web 应用发布方式Q绝对\径的g不同。如 Web 应用发布?/span> MyApp Q则路径 ?MyApp/images/title.gif?/font> 是正的Q但发布为另一应用时如 MyApp2 Q这个\径就不对了,也许q个情况比较,但以 default 方式发布 Web 应用时以上绝对\径也不同Q?/span> ?images/title.gif?/font> ?/span>

二. 解决Ҏ

Q)   采用l对路径Q但Z解决不同部v方式的差别,在所有非 struts 标签的\径前?/span> ${pageContext.request.contextPath} Q如原\径ؓQ?/span>

?images/title.gif?/font> Q改?/span>

?{pageContext.request.contextPath}/images/title.gif?/font> ?/span>

代码 ?${pageContext.request.contextPath}?/font> 的作用是取出部v的应用程序名Q这样不如何部|Ԍ所用\径都是正的?/span>

~点Q?/span>

操作不便Q其他工h法正解?/span> ${pageContext.request.contextPath}

Q)   采用相对路径Q在每个 JSP 文g中加?/span> base 标签Q如Q?/span>

<base href="http://${header['host']}${pageContext.request.contextPath}/pages/cust/relation.jsp" />

q样所有的路径都可以用相对\径?/font>

~点Q?/span>

对于被包含的文g依然无效?/font>

    真正使用旉要灵zd用1Q和Q)Q写出更加健壮的代码?/span>



向东博客 2006-10-10 08:58 发表评论
]]>
java文g路径http://m.tkk7.com/meil/archive/2006/10/10/74165.html向东博客向东博客Tue, 10 Oct 2006 00:58:00 GMThttp://m.tkk7.com/meil/archive/2006/10/10/74165.htmlhttp://m.tkk7.com/meil/comments/74165.htmlhttp://m.tkk7.com/meil/archive/2006/10/10/74165.html#Feedback0http://m.tkk7.com/meil/comments/commentRss/74165.htmlhttp://m.tkk7.com/meil/services/trackbacks/74165.htmlSystem.out.println(System.getProperty("user.dir"));

如果你用q个Ҏ来杳看你JSP面Q可以发现它的\径很奇怪,其实它是JSP引擎路径。所以当你用
    new File(String path);
Ӟ如果用的是相对\径,得相对真实的当前\径,而不是Q何你惛_然的路径 ?br />当然对于q个Ҏ用”绝对\径“一般是不会出错的。只是这PE序的灵zL就受到了限制。下面就是一个绝对\?的例子:
    String xmlPath = "D:\\PublicFiles\\WCI\\navigation.xml";

Part 2
FileStream file = this.getClass().getClassLoader().getResourceAsStream(String xmlPath);
q个有点复杂Q我了解的也不多Q这里就说说现在我所了解的吧Q以后再补充Q?br />System.out.println(this.getClass().getClassLoader().getResource("/").getPath());
如此可以看到相对?”的根\径?br />对 ?FileStream fileStream = this.getClass().getClassLoader().getResourceAsStream(filePath);
q里的filePathg只能用相对\径,臛_我不知道用绝对\径怎么表示Q?br />下面取个相对路径的例子:
    String filePath = "/../../Resources/XML/navigation.xml"; //表达规则和LINUX一栗?br />
System.out.println(this.getClass().getClassLoader().getResource(".").getPath());
System.out.println(this.getClass().getClassLoader().getResource("/").getPath());
System.out.println(this.getClass().getClassLoader().getResource("").getPath());
System.out.println(this.getClass().getClassLoader().getResource("..").getPath());
怿Q看q这四个路径l果应该知道在哪放|自q文g了,用什么样的语句能扑ֈ?br />
今天在写一个写JSPӞ到上面的文件\径的问题Q简单的了解下,怿其中定有不少的错误,希望你能提出q改正,我在此谢q了Q?br />


向东博客 2006-10-10 08:58 发表评论
]]>
java(Web)中相对\径,l对路径问题ȝhttp://m.tkk7.com/meil/archive/2006/10/10/73908.html向东博客向东博客Tue, 10 Oct 2006 00:58:00 GMThttp://m.tkk7.com/meil/archive/2006/10/10/73908.htmlhttp://m.tkk7.com/meil/comments/73908.htmlhttp://m.tkk7.com/meil/archive/2006/10/10/73908.html#Feedback1http://m.tkk7.com/meil/comments/commentRss/73908.htmlhttp://m.tkk7.com/meil/services/trackbacks/73908.html 前一D|_׃在处理Web应用下的文g创徏与移动等Q因此涉及到很多关于java
中相对\径,l对路径{问题。同Ӟ对于Web应用中的相对路径Q绝对\径,以及Java.io.File
cd习了一下。也找了一些资料。希望大安到类似的问题Q可以更有效的解冟?

=================================================================================
1.基本概念的理?/p>

  l对路径Q绝对\径就是你的主上的文件或目录在硬盘上真正的\径,(URL和物理\?例如Q?br />C:\xyz\test.txt 代表了test.txt文g的绝对\径?a >http://www.sun.com/index.htm也代表了一?br />URLl对路径?/p>

  相对路径Q相对与某个基准目录的\径。包含Web的相对\径(HTML中的相对目录Q,例如Q在
Servlet中,"/"代表Web应用的跟目录。和物理路径的相对表C。例如:"./" 代表当前目录,
"../"代表上目录。这U类似的表示Q也是属于相对\径?/p>

另外关于URIQURL,URN{内容,请参考RFC相关文档标准?/p>

RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,
(http://www.ietf.org/rfc/rfc2396.txt)


2.关于JSP/Servlet中的相对路径和绝对\径?/p>

2.1服务器端的地址

   服务器端的相对地址指的是相对于你的web应用的地址Q这个地址是在服务器端解析?br />Q不同于html和javascript中的相对地址Q他们是由客L览器解析的Q也是说这时?br />在jsp和servlet中的相对地址应该是相对于你的web应用Q即相对?a >http://192.168.0.1/webapp/的?

  其用到的地方有:
 forwardQservlet中的request.getRequestDispatcher(address);q个address?br />在服务器端解析的Q所以,你要forward到a.jsp应该q么写:
request.getRequestDispatcher(?user/a.jsp?q个/相对于当前的web应用webappQ?br />其绝对地址是Q?a >http://192.168.0.1/webapp/user/a.jsp?
sendRedirectQ在jsp?lt;%response.sendRedirect("/rtccp/user/a.jsp");%>

2.22、客L的地址
 
       所有的html面中的相对地址都是相对于服务器根目?http://192.168.0.1/)的,
而不?跟目录下的该Web应用的目?http://192.168.0.1/webapp/的?
 Html中的form表单的action属性的地址应该是相对于服务器根目录(http://192.168.0.1/)的,
所以,如果提交到a.jsp为:actionQ?/webapp/user/a.jsp"或action="<%=request.getContextPath()%>"/user/a.jspQ?br />  提交到servlet为actiomQ?/webapp/handleservlet"  
   Javascript也是在客L解析的,所以其相对路径和form表单一栗?
 

  因此Q一般情况下Q在JSP/HTML面{引用的CSS,Javascript.Action{属性前面最好都加上
<%=request.getContextPath()%>,以确保所引用的文仉属于Web应用中的目录?br />另外Q应该尽量避免用类?.","./","../../"{类似的相对该文件位|的相对路径Q这?br />当文件移动时Q很Ҏ出问题?/p>


3. JSP/Servlet中获得当前应用的相对路径和绝对\?br />3.1 JSP中获得当前应用的相对路径和绝对\?br /> 根目录所对应的绝对\?request.getRequestURI()
 文g的绝对\径  ? :application.getRealPath(request.getRequestURI());
 当前web应用的绝对\?:application.getRealPath("/");
 取得h文g的上层目?new File(application.getRealPath(request.getRequestURI())).getParent()

3.2 Servlet中获得当前应用的相对路径和绝对\?br /> 根目录所对应的绝对\?request.getServletPath();
 文g的绝对\径  ?:request.getSession().getServletContext().getRealPath
(request.getRequestURI())   
 当前web应用的绝对\?:servletConfig.getServletContext().getRealPath("/");
     (ServletContext对象获得几种方式Q?br />       javax.servlet.http.HttpSession.getServletContext()
       javax.servlet.jsp.PageContext.getServletContext()
       javax.servlet.ServletConfig.getServletContext()
     )

4.java 的Class中获得相对\径,l对路径的方?br />4.1单独的JavacM获得l对路径
  Ҏjava.io.File的Doc文挡Q可?
 默认情况下new File("/")代表的目录ؓQSystem.getProperty("user.dir")?br /> 一下程序获得执行类的当前\?br />package org.cheng.file;
import java.io.File;

public class FileTest {
    public static void main(String[] args) throws Exception {      

  System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));    

  System.out.println(FileTest.class.getClassLoader().getResource(""));       

  System.out.println(ClassLoader.getSystemResource(""));       
  System.out.println(FileTest.class.getResource(""));       
  System.out.println(FileTest.class.getResource("/")); //Class文g所在\径?
  System.out.println(new File("/").getAbsolutePath());       
  System.out.println(System.getProperty("user.dir"));   
 }
}

4.2服务器中的Javac获得当前\径(来自|络Q?br />(1).Weblogic

WebApplication的系l文件根目录是你的weblogic安装所在根目录?br />例如Q如果你的weblogic安装在c:\bea\weblogic700.....
那么Q你的文件根路径是c:\.
所以,有两U方式能够让你访问你的服务器端的文gQ?br />a.使用l对路径Q?br />比如你的参数文件放在c:\yourconfig\yourconf.propertiesQ?br />直接使用 new FileInputStream("yourconfig/yourconf.properties");
b.使用相对路径Q?br />相对路径的根目录是你的webapplication的根路径Q即WEB-INF的上一U目录,你的参数文件放

在yourwebapp\yourconfig\yourconf.propertiesQ?br />q样使用Q?br />new FileInputStream("./yourconfig/yourconf.properties");
q两U方式均可,自己选择?/p>

(2).Tomcat

在类中输出System.getProperty("user.dir");昄的是%Tomcat_Home%/bin

(3).Resin

不是你的JSP攄相对路径,是JSP引擎执行q个JSP~译成SERVLET
的\径ؓ?比如用新建文件法试File f = new File("a.htm");
q个a.htm在resin的安装目录下

(4).如何ȝ对\径哪Q?/p>

在Java文g中getResource或getResourceAsStream均可

例:getClass().getResourceAsStream(filePath);//filePath可以?/filename",q里?代表web

发布根\径下WEB-INF/classes

默认使用该方法的路径是:WEB-INF/classes。已l在Tomcat中测试?/p>

5.d文g时的相对路径Q避免硬~码和绝对\径的使用。(来自|络Q?br />5.1 采用Spring的DI机制获得文gQ避免硬~码?br />   参考下面的q接内容Q?br />   http://www.javajia.net/viewtopic.php?p=90213&
5.2 配置文g的读?br /> 参考下面的q接内容Q?br /> http://dev.csdn.net/develop/article/39/39681.shtm
5.3 通过虚拟路径或相对\径读取一个xml文gQ避免硬~码
 参考下面的q接内容Q?br /> http://club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8
 
6.Java中文件的常用操作Q复ӞUdQ删除,创徏{)Q来自网l)
 常用 java File 操作c?
 http://www.easydone.cn/014/200604022353065155.htm
 
 Java文g操作大全QJSP中)
 http://www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.html

 java文g操作详解QJava中文|)
 http://www.51cto.com/html/2005/1108/10947.htm

 JAVA 如何创徏\删除\修改\复制目录及文?br /> http://www.gamvan.com/developer/java/2005/2/264.html

ȝQ?br /> 通过上面内容的用,可以解决在Web应用服务器端Q移动文Ӟ查找文gQ复?br /> 删除文g{操作,同时Ҏ务器的相对地址Q绝对地址概念更加清晰?br />参考URI,的RFC标准文挡。同时对Java.io.File. Java.net.URI.{内容了解透彻
对其他方面的理解可以更加深入和透彻?br />==================================================================================

参考资?
java/docs/

java.io.File
java.io.InputStream
java.io.OutputStream
java.io.FileInputStream
java.io.FileReader;
java.io.FileOutputStream
java.io.FileWriter;
java.net.URI
java.net.URL


l对路径与相对\径祥?br />http://www.webjx.com/htmldata/2005-02-26/1109430310.html

[『J道习l』]JSP和Servlet中的l对路径和相对\?br />http://w3china.org/blog/more.asp?name=pcthomas&id=9122&commentid=12376

JSP,Servlet,Class获得当前应用的相对\径和l对路径
http://cy.lzu.edu.cn/cy/club/clubPage.jsp?ccStyle=0&tID=886&ccID=77

如何获得当前文g路径
http://www.matrix.org.cn/resource/article/44/44113_java.html

通过Spring注入机制Q取得文?br />http://www.javajia.net/viewtopic.php?p=90213&

配置文g的读?
http://dev.csdn.net/develop/article/39/39681.shtm

d配置文g,通过虚拟路径或相对\径读取一个xml文gQ避免硬~码Q?
http://club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8

常用 java File 操作c?br />http://www.easydone.cn/014/200604022353065155.htm

Java文g操作大全
http://www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.html

Java文g操作详解
http://www.51cto.com/html/2005/1108/10947.htm




向东博客 2006-10-10 08:58 发表评论
]]>
JAVAE序员面?2?你能回答多少? http://m.tkk7.com/meil/archive/2006/10/10/74170.html向东博客向东博客Tue, 10 Oct 2006 00:57:00 GMThttp://m.tkk7.com/meil/archive/2006/10/10/74170.htmlhttp://m.tkk7.com/meil/comments/74170.htmlhttp://m.tkk7.com/meil/archive/2006/10/10/74170.html#Feedback7http://m.tkk7.com/meil/comments/commentRss/74170.htmlhttp://m.tkk7.com/meil/services/trackbacks/74170.html     W一Q谈谈finalQ finallyQ finalize的区别?/font>
 

    finalQ修饰符Q关键字Q如果一个类被声明ؓfinalQ意味着它不能再z出新的子c,不能作ؓ父类被ѝ因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明ؓfinalQ可以保证它们在使用中不被改变。被声明为final的变量必d声明时给定初|而在以后的引用中只能dQ不可修攏V被声明为final的方法也同样只能使用Q不能重载finallyQ再异常处理时提供 finally 块来执行M清除操作。如果抛Z个异常,那么相匹配的 catch 子句׃执行Q然后控制就会进入 finally 块(如果有的话)。?br />
    finalizeQ方法名。Java 技术允怋用 finalizeQ) Ҏ在垃圾收集器对象从内存中清除出M前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对q个对象调用的。它是在 Object cM定义的,因此所有的c都l承了它。子c覆盖 finalizeQ) Ҏ以整理系l资源或者执行其他清理工作。finalizeQ) Ҏ是在垃圾攉器删除对象之前对q个对象调用的。?br />
    W二QAnonymous Inner Class Q匿名内部类Q 是否可以extendsQ承)其它c,是否可以implementsQ实玎ͼinterfaceQ接口)Q?br />
    匿名的内部类是没有名字的内部cR不能extendsQ承) 其它c,但一个内部类可以作ؓ一个接口,由另一个内部类实现。?br />
    W三QStatic Nested Class 和 Inner Class的不同,说得多好Q面试题有的很笼l)?/span> 

    Nested Class Q一般是C++的说法)QInner Class Q一般是JAVA的说法)。Java内部cMC++嵌套cL大的不同在于是否有指向外部的引用上。具体可见httpQ?/www.frontfree.net/articles/services/view.aspQid=704&page=1 

    注: 静态内部类QInner ClassQ意味着1创徏一个static内部cȝ对象Q不需要一个外部类对象Q?不能从一个static内部cȝ一个对象访问一个外部类对象 

    W四Q?amp;?amp;&的区别?/strong> 

    &是位q算W?amp;&是布逻辑q算W。?br />
    W五QHashMap和Hashtable的区别。?br />
    都属于Map接口的类Q实C惟一键映到特定的g。?br />
    HashMap cL有分cL者排序。它允许一个 null 键和多个 null 倹{?br />
    Hashtable cM于 HashMapQ但是不允许 null 键和 null 倹{它也比 HashMap 慢,因ؓ它是同步的。?br />
    W六QCollection 和 Collections的区别?/strong> 

    Collections是个java.util下的c,它包含有各种有关集合操作的静态方法。?br />
    Collection是个java.util下的接口Q它是各U集合结构的父接口。?br />
    W七Q什么时候用assert?/strong>  

  断言是一个包含布表辑ּ的语句,在执行这个语句时假定该表辑ּ为 true。如果表辑ּ计算为 falseQ那么系l会报告一个 AssertionError。它用于调试目的Q ?br />
assert(a > 0); // throws an AssertionError if a <= 0  

  断言可以有两UŞ式:  

  assert Expression1 ;  
  assert Expression1 : Expression2 ;  

  Expression1 应该L产生一个布倹{ ?br />  Expression2 可以是得Z个值的L表达式。这个值用于生成显C更多调试信息的 String 消息。 ?br />断言在默认情况下是禁用的。要在编译时启用断言Q需要用 source 1.4 标记Q ?br />
  javac -source 1.4 Test.java  

  要在q行时启用断aQ可使用 -enableassertions 或者?ea 标记。 ?br />  要在q行旉择用断言Q可使用 -da 或者?disableassertions 标记。 ?br />  要系l类中启用断aQ可使用 -esa 或者?dsa 标记。还可以在包的基上启用或者禁用断a。 ?br />
  可以在预计正常情况下不会到达的Q何位|上攄断言。断a可以用于验证传递给U有Ҏ的参数。不q,断言不应该用于验证传递给公有Ҏ的参敎ͼ因ؓ不管是否启用了断aQ公有方法都必须查其参数。不q,既可以在公有Ҏ中,也可以在非公有方法中利用断言试后置条g。另外,断言不应该以M方式改变E序的状态。 ?br />

  W八QGC是什? Z么要有GC? (基础)。 ?br />
  GC是垃圾收集器。Java E序员不用担心内存管理,因ؓ垃圾攉器会自动q行理。要h垃圾攉Q可以调用下面的Ҏ之一Q ?br />
  System.gc()  
  Runtime.getRuntime().gc()  

  W九QString s = new String("xyz");创徏了几个String Object?  

  两个对象Q一个是“xyx?一个是指向“xyx”的引用对象s。 ?br />
  W十QMath.round(11.5){於多少? Math.round(-11.5){於多少?  

  Math.round(11.5)q回QlongQ?2QMath.round(-11.5)q回QlongQ?11;  

  W十一Qshort s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?  

  short s1 = 1; s1 = s1 + 1;有错Qs1是short型,s1+1是int?不能昑ּ转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。 ?br />
  W十二,sleep() 和 wait() 有什么区? 搞线E的最?/strong>  

  sleep()Ҏ是ɾU程停止一D|间的Ҏ。在sleep 旉间隔期满后,U程不一定立x复执行。这是因为在那个时刻Q其它线E可能正在运行而且没有被调度ؓ攑ּ执行Q除?a)“醒来”的U程h更高的优先Q?b)正在q行的线E因为其它原因而阻塞。 ?br />
  wait()是线E交互时Q如果线E对一个同步对象x 发出一个wait()调用Q该U程会暂停执行,被调对象q入{待状态,直到被唤醒或{待旉到。 ?br />
  W十三,Java有没有goto?  

  Goto?java中的保留字,现在没有在java中用。 ?br />
  W十四,数组有没有length()q个Ҏ? String有没有length()q个ҎQ?/strong>  

  数组没有length()q个ҎQ有length的属性。 ?br />  String有有length()q个Ҏ。 ?br />
  W十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的cd?  

  Ҏ的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父cM子类之间多态性的一U表玎ͼ重蝲Overloading是一个类中多态性的一U表现。如果在子类中定义某Ҏ与其父类有相同的名称和参敎ͼ我们说该Ҏ被重写?Overriding)。子cȝ对象使用q个ҎӞ调用子cM的定义,对它而言Q父cM的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参C数或有不同的参数cdQ则UCؓҎ的重?Overloading)。Overloaded的方法是可以改变q回值的cd。 ?br />
  W十六,Set里的元素是不能重复的Q那么用什么方法来区分重复与否? 是用==q是equals()? 它们有何区别?  

  Set里的元素是不能重复的Q那么用iterator()Ҏ来区分重复与否。equals()是判M个Set是否相等。 ?br />
  equals()?=Ҏ军_引用值是否指向同一对象equals()在类中被覆盖Qؓ的是当两个分ȝ对象的内容和cd盔R的话Q返回真倹{ ?br />
  W十七,l我一个你最常见到的runtime exception。 ?br />
  ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException,  CannotRedoException,    
       CannotUndoException,  ClassCastException, CMMException,   ConcurrentModificationException,   
       DOMException, EmptyStackException, IllegalArgumentException,  IllegalMonitorStateException,   
       IllegalPathStateException,  IllegalStateException, ImagingOpException,   
       IndexOutOfBoundsException,  MissingResourceException,  NegativeArraySizeException,  NoSuchElementException,   
       NullPointerException,  ProfileDataException, ProviderException,  RasterFormatException,  SecurityException, SystemException, 
       UndeclaredThrowableException,  UnmodifiableSetException,  UnsupportedOperationException   

  W十八,error和exception有什么区?  

  error 表示恢复不是不可能但很困隄情况下的一U严重问题。比如说内存溢出。不可能指望E序能处理这L情况。?br />
  exception 表示一U设计或实现问题。也是_它表C如果程序运行正常,从不会发生的情况。 ?br />

  W十九,List, Set, Map是否l承自Collection接口?  

  ListQSet是 ?br />
  Map不是  

  W二十,abstract class和interface有什么区?  

  声明Ҏ的存在而不d现它的类被叫做抽象类Qabstract classQ,它用于要创徏一个体现某些基本行为的c,qؓ该类声明ҎQ但不能在该cM实现该类的情c不能创建abstract cȝ实例。然而可以创Z个变量,其类型是一个抽象类Qƈ让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract cȝ子类为它们父cM的所有抽象方法提供实玎ͼ否则它们也是抽象cMؓ。取而代之,在子cM实现该方法。知道其行ؓ的其它类可以在类中实现这些方法。 ?br />
  接口QinterfaceQ是抽象cȝ变体。在接口中,所有方法都是抽象的。多l承性可通过实现q样的接口而获得。接口中的所有方法都是抽象的Q没有一个有E序体。接口只可以定义static final成员变量。接口的实现与子cȝ|除了该实现类不能从接口定义中l承行ؓ。当cd现特D接口时Q它定义Q即程序体l予Q所有这U接口的Ҏ。然后,它可以在实现了该接口的类的Q何对象上调用接口的方法。由于有抽象c,它允怋用接口名作ؓ引用变量的类型。通常的动态联~将生效。引用可以{换到接口cd或从接口cd转换Qinstanceof q算W可以用来决定某对象的类是否实现了接口。 ?br />
  W二十一Qabstract的method是否可同时是static,是否可同时是nativeQ是否可同时是synchronized?  

  都不q?br />
  W二十二Q接口是否可l承接口? 抽象cL否可实现(implements)接口? 抽象cL否可l承实体c?concrete class)?  

  接口可以l承接口。抽象类可以实现(implements)接口Q抽象类是否可承实体类Q但前提是实体类必须有明的构造函数。 ?br />
  W二十三Q启动一个线E是用run()q是start()?  

  启动一个线E是调用start()ҎQɾU程所代表的虚拟处理机处于可运行状态,q意味着它可以由JVM调度q执行。这q不意味着U程׃立即q行。run()Ҏ可以产生必须退出的标志来停止一个线E。 ?br />


  W二十四Q构造器Constructor是否可被override?  

  构造器Constructor不能被承,因此不能重写OverridingQ但可以被重载Overloading。 ?br />
  W二十五Q是否可以承Stringc?  

  StringcLfinalcL不可以ѝ ?br />
  W二十六Q当一个线E进入一个对象的一个synchronizedҎ后,其它U程是否可进入此对象的其它方?  

  不能Q一个对象的一个synchronizedҎ只能׃个线E访问?br />    (此答案有错误.其他U程可以q入此对象的其他Ҏ,但不能进入此对象的synchronizedҎ)  

  W二十七Qtry {}里有一个return语句Q那么紧跟在q个try后的finally {}里的code会不会被执行Q什么时候被执行Q在return前还是后?  

  会执行,在return前执行。 ?br />
  W二十八Q编E题: 用最有效率的Ҏ出2乘以8{於?  

  有C背景的程序员特别喜欢问这U问题。 ?br />
  2 << 3  

  W二十九Q两个对象值相?x.equals(y) == true)Q但却可有不同的hash codeQ这句话对不?  

  不对Q有相同的hash code。 ?br />
  W三十,当一个对象被当作参数传递到一个方法后Q此Ҏ可改变这个对象的属性,q可q回变化后的l果Q那么这里到底是g递还是引用传?  

  是g递。Java ~程语言只由g递参数。当一个对象实例作Z个参数被传递到Ҏ中时Q参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变Q但对象的引用是永远不会改变的。 ?br />

  W三十一Qswtich是否能作用在byte上,是否能作用在long上,是否能作用在String?  

  switchQexpr1Q中Qexpr1是一个整数表辑ּ。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。 ?br />
  W三十二Q编E题: 写一个Singleton出来。?br />
  Singleton模式主要作用是保证在Java应用E序中,一个类Class只有一个实例存在。 ?br />
  一般Singleton模式通常有几U种形式:  

  W一UŞ? 定义一个类Q它的构造函Cؓprivate的,它有一个static的private的该cd量,在类初始化时实例话,通过一个public的getInstanceҎ获取对它的引?l而调用其中的Ҏ。 ?br />
public class Singleton {  
  private Singleton(){}  
  //在自己内部定义自׃个实例,是不是很奇怪?  
  //注意q是private 只供内部调用  
  private static Singleton instance = new Singleton();  
  //q里提供了一个供外部讉K本class的静态方法,可以直接讉K    
  public static Singleton getInstance() {  
    return instance;     
   }  
}  

  W二UŞ?  

public class Singleton {  
  private static Singleton instance = null;  
  public static synchronized Singleton getInstance() {  
  //q个Ҏ比上面有所改进Q不用每ơ都q行生成对象Q只是第一ơ       
  //使用时生成实例,提高了效率!  
  if (instance==null)  
    instanceQnew Singleton();  
return instance;   }  
}  

  其他形式:  

  定义一个类Q它的构造函Cؓprivate的,所有方法ؓstatic的。 ?br />
  一般认为第一UŞ式要更加安全些 ?br />
  W三十三 Hashtable和HashMap  

  Hashtablel承自Dictionaryc,而HashMap是Java1.2引进的Map interface的一个实玊W?br />
  HashMap允许null作ؓ一个entry的key或者valueQ而Hashtable不允许 ?br />
  q有是QHashMap把Hashtable的containsҎL了,Ҏcontainsvalue和containsKey。因为containsҎҎ让h引v误解。 ?br />
  最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是Q在多个U程讉KHashtableӞ不需要自׃ؓ它的Ҏ实现同步Q而HashMap必Mؓ之提供外同步。 ?br />
  Hashtable和HashMap采用的hash/rehash法都大概一P所以性能不会有很大的差异?

向东博客 2006-10-10 08:57 发表评论
]]>JSP、Servlet中的相对路径和绝对\?/title><link>http://m.tkk7.com/meil/archive/2006/10/10/74167.html</link><dc:creator>向东博客</dc:creator><author>向东博客</author><pubDate>Tue, 10 Oct 2006 00:57:00 GMT</pubDate><guid>http://m.tkk7.com/meil/archive/2006/10/10/74167.html</guid><wfw:comment>http://m.tkk7.com/meil/comments/74167.html</wfw:comment><comments>http://m.tkk7.com/meil/archive/2006/10/10/74167.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/meil/comments/commentRss/74167.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/meil/services/trackbacks/74167.html</trackback:ping><description><![CDATA[ <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">JSP</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">Servlet</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的l对路径和相对\径问题困C我好几天Q经q努力之后将光分心得和大家׃n?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <span style="mso-tab-count: 1"> <font face="Times New Roman">       </font> </span> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">前提Q假设你?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">Http</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">地址?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <a > <font face="Times New Roman" color="#000080">http://192.168.0.1/</font> </a> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">你的</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">web</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">webapp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q那么你?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">web</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">URL</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <a > <font face="Times New Roman" color="#000080">http://192.168.0.1/webapp/</font> </a> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-tab-count: 1">       </span>web</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用的目录结构:</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-tab-count: 1">       </span>webapp/<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-tab-count: 2">              </span>web-inf/<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-tab-count: 2">              </span> <span style="mso-spacerun: yes">   </span>classes/<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-tab-count: 3">                     </span>lib/<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-tab-count: 3">                     </span>web.xml<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-tab-count: 4">                            </span> <span style="mso-spacerun: yes">  </span><servlet-mapping><o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-spacerun: yes">    </span> <span style="mso-tab-count: 4">                           </span><servlet-name>handleservlet</servlet-name><o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 60pt; TEXT-INDENT: -60pt; mso-char-indent-count: -5.0"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-spacerun: yes">    </span> <span style="mso-tab-count: 4">                           </span><url-pattern>/handleservlet</url-pattern></font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">此映是相对于当?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">web</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-spacerun: yes">  </span> <span style="mso-tab-count: 4">                        </span> <span style="mso-spacerun: yes">   </span></servlet-mapping><o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-tab-count: 2">              </span>user/<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 63pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">a.jsp<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 63pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">b.jsp<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-tab-count: 2">              </span>images/<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-tab-count: 2">              </span>css/<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-tab-count: 2">              </span>js/<o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"> <span style="mso-tab-count: 2">              </span> <o:p> </o:p> </font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <span style="mso-tab-count: 1"> <font face="Times New Roman">       </font> </span> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所有相对\径都是由?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">/</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”开头的。如Q?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">/image/a.gif</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">/user/main.jsp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q大家知道在</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">html</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的相对路径是这LQ?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <span style="mso-tab-count: 1"> <font face="Times New Roman">       </font> </span> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有个</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">html</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文gQ?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">a.html</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q其中有</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"><link href="one.css" rel="stylesheet" type="text/css"></font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q其?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">href</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性表C引用的</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文g的\径?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">one.css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q表C?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">one.css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">a.hmtl</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">处于同一个目?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">user/one.css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q表C?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">one.css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">处于</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">a.html</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所在目录的子目?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">user</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">../one.css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q表C?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">one.css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位于</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">a.hmtl</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上一U目录下Q?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">../../one.css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q表C?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">one.css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位于</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">a.hmtl</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上一U目录的上一U目录下Q?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">./</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q表C和</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">a.hmtl</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">同一目录</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们UCq相对\径ؓ</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">html</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相对路径</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore"> <font face="Times New Roman">1?/font> </span> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器端的地址</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器端的相对地址指的是相对于你的</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">web</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用的地址Q这个地址是在服务器端解析的(不同?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">html</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">javascript</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的相对地址Q他们是由客L览器解析的Q也是说这时候在</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">jsp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">servlet</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的相对地址应该是相对于你的</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">web</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用Q即相对?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <a > <font face="Times New Roman" color="#000080">http://192.168.0.1/webapp/</font> </a> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其用到的地方有:</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">forwarder</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">servlet</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">request.getRequestDispatcher(address);</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q个</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">address</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是在服务器端解析的,所以,你要</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">forwarder</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">a.jsp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应该q么写:</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">request.getRequestDispatcher(?user/a.jsp?</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q个</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">/</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相对于当前的</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">web</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">webapp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q其l对地址是Q?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <a > <font face="Times New Roman" color="#000080">http://192.168.0.1/webapp/user/a.jsp</font> </a> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">sendRedirect</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q在</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">jsp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"><%response.sendRedirect("/rtccp/user/a.jsp");%><o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore"> <font face="Times New Roman">2?/font> </span> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">客户端的地址</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所有的</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">html</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的相对地址都是相对?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <a > <font face="Times New Roman" color="#000080">http://192.168.0.1/</font> </a> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的,而不?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <a > <font face="Times New Roman" color="#000080">http://192.168.0.1/webapp/</font> </a> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">Html</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">form</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表单?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">action</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性的地址应该是相对于</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <a > <font face="Times New Roman" color="#000080">http://192.168.0.1/</font> </a> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的,所以,如果提交?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">a.jsp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为:</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">action</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">?webapp/user/a.jsp?/font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q提交到</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">servlet</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">action</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">?webapp/handleservlet?o:p></o:p></font> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">Javascript</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也是在客L解析的,所以其相对路径?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">form</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表单一栗?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"> <span lang="EN-US" style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"> <span style="mso-list: Ignore"> <font face="Times New Roman">3?/font> </span> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">站点根目录和</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">路径问题</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们U类DL相对路径</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">/webapp/?</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为相对于站点根目录的相对路径?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当在</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">jsp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中引?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Ӟ如果其相对\径相对于当前</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">jsp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文g的,而在一个和q个</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">jsp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的\径不一L</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">servlet</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">forwarder</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q个</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">jsp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Ӟ׃发现q个</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">样式Ҏ没有起作用。这是因为在</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">servlet</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中{发时</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的\径就是相对于q个</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">servlet</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的相对\径而非</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">jsp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的\径了。所以这时候不能在</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">jsp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中用q样的\径:</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"><link href="one.css" rel="stylesheet" type="text/css"></font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman"><link href="../../one.css" rel="stylesheet" type="text/css"></font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">cM</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">href="one.css"</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">../../one.css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">html</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相对路径是相对于引用q个</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的文件的相对路径。而在</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">servlet</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中{发时是相对于这?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">servlet</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的相对\径了Q因?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">jsp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">路径?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">servlet</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">路径是不一LQ所以这L引用肯定是出错的?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所以这个时候,要用站点根目录,是相对?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <a > <font face="Times New Roman" color="#000080">http://192.168.0.1/</font> </a> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的目录,以?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">/</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”开头?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">因此上述错误应更正ؓ</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">href=?webapp/one.css?/font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">cM的站Ҏ目录的相对目录。这样在</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">servlet</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">转发后和</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">jsp</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中都是相对于站点根目录的相对路径Q就能正用所定义?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <font face="Times New Roman">css</font> </span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">样式了?/span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> <font face="Times New Roman"> </font> </o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">说了q么多,不知道你了解没,有什么问题留aQ大家一块交!</span> <span lang="EN-US" style="FONT-SIZE: 12pt"> <o:p> </o:p> </span> </p> <img src ="http://m.tkk7.com/meil/aggbug/74167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/meil/" target="_blank">向东博客</a> 2006-10-10 08:57 <a href="http://m.tkk7.com/meil/archive/2006/10/10/74167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA字符?/title><link>http://m.tkk7.com/meil/archive/2006/10/10/74209.html</link><dc:creator>向东博客</dc:creator><author>向东博客</author><pubDate>Tue, 10 Oct 2006 00:56:00 GMT</pubDate><guid>http://m.tkk7.com/meil/archive/2006/10/10/74209.html</guid><wfw:comment>http://m.tkk7.com/meil/comments/74209.html</wfw:comment><comments>http://m.tkk7.com/meil/archive/2006/10/10/74209.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/meil/comments/commentRss/74209.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/meil/services/trackbacks/74209.html</trackback:ping><description><![CDATA[1. 概述 <br /><br />本文主要包括以下几个斚wQ编码基本知识,javaQ系lYӞurlQ工兯Y件等?<br /><br />在下面的描述中,以"中文"两个字ؓ例,l查表可以知道其GB2312~码?d6d0 cec4"QUnicode~码?4e2d 6587"QUTF~码是"e4b8ad e69687"。注意,q两个字没有iso8859-1~码Q但可以用iso8859-1~码?表示"?<br /><br />2. ~码基本知识 <br /><br />最早的~码是iso8859-1Q和ascii~码怼。但Z方便表示各种各样的语aQ逐渐出现了很多标准编码,重要的有如下几个?<br /><br />2.1. iso8859-1 <br /><br />属于单字节编码,最多能表示的字W范围是0-255Q应用于英文pd。比如,字母a的编码ؓ0x61=97?<br /><br />很明显,iso8859-1~码表示的字W范围很H,无法表示中文字符。但是,׃是单字节~码Q和计算机最基础的表C单位一_所以很多时候,仍旧使用iso8859-1~码来表C。而且在很多协议上Q默认用该~码。比如,虽然"中文"两个字不存在iso8859-1~码Q以gb2312~码ZQ应该是"d6d0 cec4"两个字符Q用iso8859-1~码的时候则它拆开?个字节来表示Q?d6 d0 ce c4"Q事实上Q在q行存储的时候,也是以字节ؓ单位处理的)。而如果是UTF~码Q则?个字?e4 b8 ad e6 96 87"。很明显Q这U表C方法还需要以另一U编码ؓ基础?<br /><br />2.2. GB2312/GBK <br /><br />q就是汉子的国标码,专门用来表示汉字Q是双字节编码,而英文字母和iso8859-1一_兼容iso8859-1~码Q。其中gbk~码能够用来同时表示J体字和体字Q而gb2312只能表示体字Qgbk是兼容gb2312~码的?<br /><br />2.3. unicode <br /><br />q是最l一的编码,可以用来表示所有语a的字W,而且是定长双字节Q也有四字节的)~码Q包括英文字母在内。所以可以说它是不兼容iso8859-1~码的,也不兼容M~码。不q,相对于iso8859-1~码来说Quniocode~码只是在前面增加了一?字节Q比如字母a?00 61"?<br /><br />需要说明的是,定长~码便于计算机处理(注意GB2312/GBK不是定长~码Q,而unicode又可以用来表C所有字W,所以在很多软g内部是用unicode~码来处理的Q比如java?<br /><br />2.4. UTF <br /><br />考虑到unicode~码不兼容iso8859-1~码Q而且Ҏ占用更多的空_因ؓ对于英文字母Qunicode也需要两个字节来表示。所以unicode不便于传输和存储。因此而生了utf~码Qutf~码兼容iso8859-1~码Q同时也可以用来表示所有语a的字W,不过Qutf~码是不定长~码Q每一个字W的长度?-6个字节不{。另外,utf~码自带单的校验功能。一般来Ԍ英文字母都是用一个字节表C,而汉字用三个字节?<br /><br />注意Q虽然说utf是ؓ了用更的I间而用的Q但那只是相对于unicode~码来说Q如果已l知道是汉字Q则使用GB2312/GBK无疑是最节省的。不q另一斚wQ值得说明的是Q虽然utf~码Ҏ字?个字节,但即使对于汉字网,utf~码也会比unicode~码节省Q因为网中包含了很多的英文字符?<br /><br />3. java对字W的处理 <br /><br />在java应用软g中,会有多处涉及到字W集~码Q有些地斚w要进行正的讄Q有些地斚w要进行一定程度的处理?<br /><br />3.1. getBytes(charset) <br /><br />q是java字符串处理的一个标准函敎ͼ其作用是字W串所表示的字W按照charset~码Qƈ以字节方式表C。注意字W串在java内存中L按unicode~码存储的。比?中文"Q正常情况下Q即没有错误的时候)存储?4e2d 6587"Q如果charset?gbk"Q则被编码ؓ"d6d0 cec4"Q然后返回字?d6 d0 ce c4"。如果charset?utf8"则最后是"e4 b8 ad e6 96 87"。如果是"iso8859-1"Q则׃无法~码Q最后返?"3f 3f"Q两个问P?<br /><br />3.2. new String(charset) <br /><br />q是java字符串处理的另一个标准函敎ͼ和上一个函数的作用相反Q将字节数组按照charset~码q行l合识别Q最后{换ؓunicode存储。参考上qgetBytes的例子,"gbk" ?utf8"都可以得出正的l果"4e2d 6587"Q但iso8859-1最后变成了"003f 003f"Q两个问P?<br /><br />因ؓutf8可以用来表示/~码所有字W,所以new String( str.getBytes( "utf8" ), "utf8" ) === strQ即完全可逆?<br /><br />3.3. setCharacterEncoding() <br /><br />该函数用来设|httph或者相应的~码?<br /><br />对于requestQ是指提交内容的~码Q指定后可以通过getParameter()则直接获得正的字符Ԍ如果不指定,则默认用iso8859-1~码Q需要进一步处理。参见下q?表单输入"。值得注意的是在执行setCharacterEncoding()之前Q不能执行Q何getParameter()。java doc上说明:This method must be called prior to reading request parameters or reading input using getReader()。而且Q该指定只对POSTҎ有效Q对GETҎ无效。分析原因,应该是在执行W一个getParameter()的时候,java会按照~码分析所有的提交内容Q而后l的getParameter()不再q行分析Q所以setCharacterEncoding()无效。而对于GETҎ提交表单是,提交的内容在URL中,一开始就已经按照~码分析所有的提交内容QsetCharacterEncoding()自然无效?<br /><br />对于responseQ则是指定输出内容的~码Q同Ӟ该设|会传递给览器,告诉览器输出内Ҏ采用的编码?<br /><br />3.4. 处理q程 <br /><br />下面分析两个有代表性的例子Q说明java对编码有关问题的处理Ҏ?<br /><br />3.4.1. 表单输入 <br /><br />User input *(gbk:d6d0 cec4) browser *(gbk:d6d0 cec4) web server iso8859-1(00d6 00d 000ce 00c4) classQ需要在class中进行处理:getbytes("iso8859-1")为d6 d0 ce c4Qnew String("gbk")为d6d0 cec4Q内存中以unicode~码则ؓ4e2d 6587?<br /><br />l 用户输入的编码方式和面指定的编码有养I也和用户的操作系l有养I所以是不确定的Q上例以gbkZ?<br /><br />l 从browser到web serverQ可以在表单中指定提交内Ҏ使用的字W集Q否则会使用面指定的编码。而如果在url中直接用?的方式输入参敎ͼ则其~码往往是操作系l本w的~码Q因时和面无关。上qC旧以gbk~码Z?<br /><br />l Web server接收到的是字节流Q默认时QgetParameterQ会以iso8859-1~码处理之,l果是不正确的,所以需要进行处理。但如果预先讄了编码(通过request. setCharacterEncoding ()Q,则能够直接获取到正确的结果?<br /><br />l 在页面中指定~码是个好习惯,否则可能失去控制Q无法指定正的~码?<br /><br />3.4.2. 文g~译 <br /><br />假设文g是gbk~码保存的,而编译有两种~码选择Qgbk或者iso8859-1Q前者是中文windows的默认编码,后者是linux的默认编码,当然也可以在~译时指定编码?<br /><br />Jsp *(gbk:d6d0 cec4) java file *(gbk:d6d0 cec4) compiler read uincode(gbk: 4e2d 6587; iso8859-1: 00d6 00d 000ce 00c4) compiler write utf(gbk: e4b8ad e69687; iso8859-1: *) compiled file unicode(gbk: 4e2d 6587; iso8859-1: 00d6 00d 000ce 00c4) class。所以用gbk~码保存Q而用iso8859-1~译的结果是不正的?<br /><br />class unicode(4e2d 6587) system.out / jsp.out gbk(d6d0 cec4) os console / browser?<br /><br />l 文g可以以多U编码方式保存,中文windows下,默认为ansi/gbk?<br /><br />l ~译器读取文件时Q需要得到文件的~码Q如果未指定Q则使用pȝ默认~码。一般class文gQ是以系l默认编码保存的Q所以编译不会出问题Q但对于jsp文gQ如果在中文windows下编辑保存,而部|在英文linux下运?~译Q则会出现问题。所以需要在jsp文g中用pageEncoding指定~码?<br /><br />l Java~译的时候会转换成统一的unicode~码处理Q最后保存的时候再转换为utf~码?<br /><br />l 当系l输出字W的时候,会按指定~码输出Q对于中文windows下,System.out用gbk~码Q而对于responseQ浏览器Q,则用jsp文g头指定的contentTypeQ或者可以直接ؓresponse指定~码。同Ӟ会告诉browser|页的编码。如果未指定Q则会用iso8859-1~码。对于中文,应该为browser指定输出字符串的~码?<br /><br />l browser昄|页的时候,首先使用response中指定的~码Qjsp文g头指定的contentType最l也反映在response上)Q如果未指定Q则会用网中metaҎ定中的contentType?<br /><br />3.5. 几处讄 <br /><br />对于web应用E序Q和~码有关的设|或者函数如下?<br /><br />3.5.1. jsp~译 <br /><br />指定文g的存储编码,很明显,该设|应该置于文件的开头。例如:<%@page pageEncoding="GBK"%>。另外,对于一般class文gQ可以在~译的时候指定编码?<br /><br />3.5.2. jsp输出 <br /><br />指定文g输出到browser是用的~码Q该讄也应该置于文件的开头。例如:<%@ page contentType="text/html; charset= GBK" %>。该讄和response.setCharacterEncoding("GBK"){效?<br /><br />3.5.3. meta讄 <br /><br />指定|页使用的编码,该设|对静态网尤其有作用。因为静态网|法采用jsp的设|,而且也无法执行response.setCharacterEncoding()。例如: <br /><br />如果同时采用了jsp输出和meta讄两种~码指定方式Q则jsp指定的优先。因为jsp指定的直接体现在response中?<br /><br />需要注意的是,apache有一个设|可以给无编码指定的|页指定~码Q该指定{同于jsp的编码指定方式,所以会覆盖静态网中的meta指定。所以有人徏议关闭该讄?<br /><br />3.5.4. form讄 <br /><br />当浏览器提交表单的时候,可以指定相应的编码。例如: <form accept-charset="gb2312">。一般不必不使用该设|,览器会直接使用|页的编码?<br /><br />4. pȝ软g <br /><br />下面讨论几个相关的系lY件?<br /><br />4.1. mysql数据?<br /><br />很明显,要支持多语言Q应该将数据库的~码讄成utf或者unicodeQ而utf更适合与存储。但是,如果中文数据中包含的英文字母很少Q其实unicode更ؓ适合?<br /><br />数据库的~码可以通过mysql的配|文件设|,例如default-character-set=utf8。还可以在数据库链接URL中设|,例如Q?useUnicode=true&characterEncoding=UTF-8。注意这两者应该保持一_在新的sql版本里,在数据库链接URL里可以不q行讄Q但也不能是错误的设|?<br /><br />4.2. apache <br /><br />appache和编码有关的配置在httpd.conf中,例如AddDefaultCharset UTF-8。如前所qͼ该功能会所有静态页面的~码讄为UTF-8Q最好关闭该功能?<br /><br />另外Qapacheq有单独的模块来处理|页响应_其中也可能对~码q行讄?<br /><br />4.3. linux默认~码 <br /><br />q里所说的linux默认~码Q是指运行时的环境变量。两个重要的环境变量是LC_ALL和LANGQ默认编码会影响到java URLEncode的行为,下面有描q?<br /><br />都设|ؓ"zh_CN.UTF-8"?<br /><br />4.4. 其它 <br /><br />Z支持中文文g名,linux在加载磁盘时应该指定字符集,例如Qmount /dev/hda5 /mnt/hda5/ -t ntfs -o iocharset=gb2312?<br /><br />另外Q如前所qͼ使用GETҎ提交的信息不支持request.setCharacterEncoding()Q但可以通过tomcat的配|文件指定字W集Q在tomcat的server.xml文g中,形如Q?connector ...="" uriencoding="GBK" />。这U方法将l一讄所有请求,而不能针对具体页面进行设|,也不一定和browser使用的编码相同,所以有时候ƈ不是所期望的?<br /><br />5. URL地址 <br /><br />URL地址中含有中文字W是很麻烦的Q前面描q过使用GETҎ提交表单的情况,使用GETҎӞ参数是包含在URL中?<br /><br />5.1. URL~码 <br /><br />对于URL中的一些特D字W,览器会自动q行~码。这些字W除?/?&"{外Q还包括unicode字符Q比如汉子。这时的~码比较Ҏ?<br /><br />IE有一个选项"L使用UTF-8发送URL"Q当该选项有效ӞIE会对特D字W进行UTF-8~码Q同时进行URL~码。如果改选项无效Q则使用默认~码"GBK"Qƈ且不q行URL~码。但是,对于URL后面的参敎ͼ则L不进行编码,相当于UTF-8选项无效。比?中文.html?a=中文"Q当UTF-8选项有效Ӟ发送链?%e4%b8%ad%e6%96%87.html?a=x4ex2dx65x87"Q而UTF-8选项无效Ӟ发送链?x4ex2dx65x87.html?a=x4ex2dx65x87"。注意后者前面的"中文"两个字只?个字节,而前者却?8个字节,q主要时URL~码的原因?<br /><br />当web serverQtomcatQ接收到该链接时Q将会进行URL解码Q即L"%"Q同时按照ISO8859-1~码Q上面已l描qͼ可以使用URLEncoding来设|成其它~码Q识别。上qC子的l果分别?ue4ub8uadue6u96u87.html?a=u4eu2du65u87"?u4eu2du65u87.html?a=u4eu2du65u87"Q注意前者前面的"中文"两个字恢复成?个字W。这里用"u"Q表C是unicode?<br /><br />所以,׃客户端设|的不同Q相同的链接Q在服务器上得到了不同结果。这个问题不h都遇刎ͼ却没有很好的解决办法。所以有的网站会用户试关闭UTF-8选项。不q,下面会描qC个更好的处理办法?<br /><br />5.2. rewrite <br /><br />熟悉的h都知道,apache有一个功能强大的rewrite模块Q这里不描述其功能。需要说明的是该模块会自动将URL解码Q去?Q,卛_成上qweb serverQtomcatQ的部分功能。有相关文档介绍说可以用[NE]参数来关闭该功能Q但我试验ƈ未成功,可能是因为版本(我用的是apache 2.0.54Q问题。另外,当参C含有"?& "{符L时候,该功能将Dpȝ得不到正常结果?<br /><br />rewrite本ng完全是采用字节处理的方式Q而不考虑字符串的~码Q所以不会带来编码问题?<br /><br />5.3. URLEncode.encode() <br /><br />q是Java本n提供对的URL~码函数Q完成的工作和上qUTF-8选项有效时浏览器所做的工作怼。值得说明的是Qjava已经不赞成不指定~码来用该ҎQdeprecatedQ。应该在使用的时候增加编码指定?<br /><br />当不指定~码的时候,该方法用系l默认编码,q会D软gq行l果得不定。比如对?中文"Q当pȝ默认~码?gb2312"Ӟl果?%4e%2d%65%87"Q而默认编码ؓ"UTF-8"Q结果却?%e4%b8%ad%e6%96%87"Q后l程序将难以处理。另外,q儿说的pȝ默认~码是由q行tomcat时的环境变量LC_ALL和LANG{决定的Q曾l出现过tomcat重启后就出现q的问题,最后才郁闷的发现是因ؓ修改修改了这两个环境变量?<br /><br />l一指定?UTF-8"~码Q可能需要修改相应的E序?<br /><br />5.4. 一个解x?<br /><br />上面说vq,因ؓ览器设|的不同Q对于同一个链接,web server收到的是不同内容Q而Y件系l有无法知道q中间的区别Q所以这一协议目前q存在缺陗?<br /><br />针对具体问题Q不应该侥幸认ؓ所有客LIE讄都是UTF-8有效的,也不应该_暴的徏议用户修改IE讄Q要知道Q用户不可能去记住每一个web server的设|。所以,接下来的解决办法只能是让自qE序多一Ҏ能:Ҏ内容来分析编码是否UTF-8?<br /><br />比较q运的是UTF-8~码相当有规律,所以可以通过分析传输q来的链接内容,来判断是否是正确的UTF-8字符Q如果是Q则以UTF-8处理之,如果不是Q则使用客户默认~码Q比?GBK"Q,下面是一个判断是否UTF-8的例子,如果你了解相应规律,容易理解?<br /><br />public static boolean isValidUtf8(byte[] b,int aMaxCount){ <br /><br />int lLen=b.length,lCharCount=0; <br /><br />for(int i=0;i<llen &&="" lcharcount<amaxcount;++lcharcount){=""><br /><br />byte lByte=b[i++];//to fast operation, ++ now, ready for the following for(;;) <br /><br />if(lByte>=0) continue;//>=0 is normal ascii <br /><br />if(lByte<(byte)0xc0 || lByte>(byte)0xfd) return false; <br /><br />int lCount=lByte>(byte)0xfc?5:lByte>(byte)0xf8?4 <br /><br />:lByte>(byte)0xf0?3:lByte>(byte)0xe0?2:1; <br /><br />if(i+lCount>lLen) return false; <br /><br />for(int j=0;j<lcount;++j,++i) if(b[i]="">=(byte)0xc0) return false; <br /><br />} <br /><br />return true; <br /><br />} <br /><br />相应圎ͼ一个用上q方法的例子如下Q?<br /><br />public static String getUrlParam(String aStr,String aDefaultCharset) <br /><br />throws UnsupportedEncodingException{ <br /><br />if(aStr==null) return null; <br /><br />byte[] lBytes=aStr.getBytes("ISO-8859-1"); <br /><br />return new String(lBytes,StringUtil.isValidUtf8(lBytes)?"utf8":aDefaultCharset); <br /><br />} <br /><br />不过Q该Ҏ也存在缺P如下两方面: <br /><br />l 没有包括对用户默认编码的识别Q这可以Ҏh信息的语a来判断,但不一定正,因ؓ我们有时候也会输入一些韩文,或者其他文字?<br /><br />l 可能会错误判断UTF-8字符Q一个例子是"学习"两个字,其GBK~码? xd1xa7xcfxb0"Q如果用上qisValidUtf8Ҏ判断Q将q回true。可以考虑使用更严格的判断ҎQ不q估计效果不大?<br /><br />有一个例子可以证明google也遇C上述问题Q而且也采用了和上q相似的处理ҎQ比如,如果在地址栏中输入"http://www.google.com/search?hl=zh-CN&newwindow=1&q=学习"Qgoogle无法正识别,而其他汉字一般能够正常识别?<br /><br />最后,应该补充说明一下,如果不用rewrite规则Q或者通过表单提交数据Q其实ƈ不一定会遇到上述问题Q因时可以在提交数据时指定希望的~码。另外,中文文g名确实会带来问题Q应该}慎用?<br /><br />6. 其它 <br /><br />下面描述一些和~码有关的其他问题?<br /><br />6.1. SecureCRT <br /><br />除了览器和控制C~码有关外,一些客L也很有关pR比如在使用SecureCRTq接linuxӞ应该让SecureCRT的显C编码(不同的sessionQ可以有不同的编码设|)和linux的编码环境变量保持一致。否则看到的一些帮助信息,可能是q?<br /><br />另外Qmysql有自q~码讄Q也应该保持和SecureCRT的显C编码一致。否则通过SecureCRT执行sql语句的时候,可能无法处理中文字符Q查询结果也会出Cؕ码?<br /><br />对于Utf-8文gQ很多编辑器Q比如记事本Q会在文件开头增加三个不可见的标志字节,如果作ؓmysql的输入文Ӟ则必要Lq三个字W。(用linux的vi保存可以Lq三个字W)。一个有的现象是,在中文windows下,创徏一个新txt文gQ用C本打开Q输?q?两个字,保存Q再打开Q你会发C个字没了Q只留下一个小黑点?<br /><br />6.2. qo?<br /><br />如果需要统一讄~码Q则通过filterq行讄是个不错的选择。在filter class中,可以l一为需要的h或者回应设|编码。参加上qsetCharacterEncoding()。这个类apache已经l出了可以直接用的例子SetCharacterEncodingFilter?<br /><br />6.3. POST和GET <br /><br />很明显,以POST提交信息ӞURL有更好的可读性,而且可以方便的用setCharacterEncoding()来处理字W集问题。但GETҎ形成的URL能够更容易表辄늚实际内容Q也能够用于收藏?<br /><br />从统一的角度考虑问题Q徏议采用GETҎQ这要求在程序中获得参数是进行特D处理,而无法用setCharacterEncoding()的便利,如果不考虑rewriteQ就不存在IE的UTF-8问题Q可以考虑通过讄URIEncoding来方便获取URL中的参数?<br /><br />6.4. J体~码转换 <br /><br />GBK同时包含体和J体~码Q也是说同一个字Q由于编码不同,在GBK~码下属于两个字。有时候,Z正确取得完整的结果,应该繁体和体进行统一。可以考虑UTF、GBK中的所有繁体字Q{换ؓ相应的简体字QBIG5~码的数据,也应该{化成相应的简体字。当Ӟ仍旧以UTF~码存储?<br /><br />例如Q对?语言 ?a"Q用UTF表示?xE8xAFxADxE8xA8x80 xE8xAAx9ExE8xA8x80"Q进行简J体~码转换后应该是两个相同?"xE8xAFxADxE8xA8x80>"?<br /></lcount;++j,++i)></llen></form><img src ="http://m.tkk7.com/meil/aggbug/74209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/meil/" target="_blank">向东博客</a> 2006-10-10 08:56 <a href="http://m.tkk7.com/meil/archive/2006/10/10/74209.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://flowsns.com" target="_blank">a߹ۿ</a>| <a href="http://zg8k.com" target="_blank">С˵ɫͼ</a>| <a href="http://8x8xbu.com" target="_blank">AVһ</a>| <a href="http://xyyfamily.com" target="_blank">ձaƬѿ</a>| <a href="http://kkxzz.com" target="_blank">žžƷƵ</a>| <a href="http://moushengguigz.com" target="_blank"></a>| <a href="http://www-44334.com" target="_blank">sssձ߹ۿ</a>| <a href="http://wwwzs88.com" target="_blank">޾Ʒҹ</a>| <a href="http://zanyoo.com" target="_blank">ŷպһ </a>| <a href="http://d3q4.com" target="_blank">޾Ʒһ23Ŀ</a>| <a href="http://yulongfilm.com" target="_blank">þþƷѿ޹AV</a>| <a href="http://sdhuamo.com" target="_blank">һ߹ۿ</a>| <a href="http://1000hu.com" target="_blank">޳ƬۿĻ</a>| <a href="http://8hnbuk14.com" target="_blank">˾Ʒֱ</a>| <a href="http://cn-taoqigui.com" target="_blank">ҹƵѹۿƵ </a>| <a href="http://vc77777.com" target="_blank">2019ҹ</a>| <a href="http://www-333346.com" target="_blank">Ƭ߹ۿ</a>| <a href="http://zgj688.com" target="_blank">޹˾þۺ3d</a>| <a href="http://77663499.com" target="_blank">޾ƷӰԺ</a>| <a href="http://6777s.com" target="_blank">պϵ </a>| <a href="http://www12kvkv.com" target="_blank">Ʒav벻</a>| <a href="http://6006769.com" target="_blank">ַ߹ۿ</a>| <a href="http://dd5566.com" target="_blank">þ޹ӰԺ</a>| <a href="http://by2988.com" target="_blank">Avһ</a>| <a href="http://jl910.com" target="_blank">޲Ļ</a>| <a href="http://416164.com" target="_blank">AVþþþվ</a>| <a href="http://sdkjkj.com" target="_blank">޹ƷŰ֥߹ۿ </a>| <a href="http://ymiwang.com" target="_blank">þw5www</a>| <a href="http://kkk28.com" target="_blank">99þѿƷ</a>| <a href="http://sewuji.com" target="_blank">պƷþþþþ</a>| <a href="http://gztzbj.com" target="_blank">VAһ</a>| <a href="http://qianmiu.com" target="_blank">һѹۿ</a>| <a href="http://3atv66.com" target="_blank">69ƵƬ</a>| <a href="http://jpvv8.com" target="_blank">ëɫëƬѹۿ</a>| <a href="http://my637.com" target="_blank">ŷ޾ƷƵ߹ۿ </a>| <a href="http://91ggan.com" target="_blank">91ҹƷһ</a>| <a href="http://se988.com" target="_blank">ŷղ</a>| <a href="http://wenfaka.com" target="_blank">ۺɫĻ</a>| <a href="http://nxjyyj.com" target="_blank">޾ƷþavƬȥҲ </a>| <a href="http://bqjonline.com" target="_blank">69˾ƷƵ</a>| <a href="http://newbuybay.com" target="_blank">ֻˬִ̼</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>