??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人成小说,丁香一区二区,91国在线观看http://www.aygfsteel.com/dorydoo/archive/2006/07/05/56635.html多力宇扬多力宇扬Wed, 05 Jul 2006 00:07:00 GMThttp://www.aygfsteel.com/dorydoo/archive/2006/07/05/56635.htmlhttp://www.aygfsteel.com/dorydoo/comments/56635.htmlhttp://www.aygfsteel.com/dorydoo/archive/2006/07/05/56635.html#Feedback5http://www.aygfsteel.com/dorydoo/comments/commentRss/56635.htmlhttp://www.aygfsteel.com/dorydoo/services/trackbacks/56635.html动作映射

q个时候,你可能会问自?“当控制器接受到一个请求的时候,它如何知道调用哪个Action实例?”控制器要通过查看h消息q用一l动?br />映射(action mapping)来做出决定。动作映是Struts配置信息(配置一个特D的XML文g中)的一部分。这个配|信息会在启动时加蝲到内存中
Q让Struts框架得以在运行时加以利用。每个action元素在内存中都被表示为org.apache.struts.action.ActionMappingcȝ实例?br />ActionMapping对象包含一个path属性,用来与外部请求的URI部分匚w。如?
<action
    path="/login"
    type="com.oreilly.struts.banking.action.LoginAction"
    scope="request"
    name="loginForm"
    validate="true"
    input="/login.jsp"
    <forward name="Success" path="/action/getaccountinformation" redirect="true"/>
    <forward name="Failure" path="/login.jsp" redirect="true"/>
</action>
q里的登录动作映把路径"/login"映射Ccom.oreilly.struts.banking.LoginActionq个ActioncR无ZӞ当控制器接受C个URI
路径中包?/login"字符串的hӞ׃调用LoginAction实例的execute()Ҏ。Struts框架q会使用映射来指出“动?完成后要让用?br />转向哪个资源?/p>

 

使用Struts ActionForm

Struts框架的ActionForm对象可用来在用户和业务层之间传输客户的输入数据。Struts框架会自动从h中收集输入数据,再将q些数据交给
一个用表单bean(form bean)的Action对象Q接着表单再交l业务层。ؓ了把表示层和业务层分d来,你不应该直接把ActionForm对象?br />l业务层Q而是应该使用由ActionForm对象得到的数据创建适当的DTO。下面的步骤说明了Struts框架如何处理每个h相应的ActionForm?br />?
 
  1.查该动作的相应讄Q查看是否已l有某个ActionForm得到配置?br />  2.如果对应q个动作配置了某个ActionFormQ则使用action元素中的name属性来查找表单bean的配|信息?br />  3.查看是否已经创徏了一个ActionForm的一个实例?br />  4.如果在适当的作用域内已l存在一个ActionForm实例Q而且q个实例的类型正是这个请求所需要的cdQ则重用q个实例?br />  5.否则Q创建所需ActionForm的一个新实例Qƈ存储在适当的作用域中(由action元素的scope属性设|??br />  6.调用ActionForm实例的reset()Ҏ?br />  7.反复处理h参数Q如果参数名在ActionForm实例中具有对应的讄Ҏ(setter method),׃ؓ它填上该h参数的倹{?br />  8.最后,如果validate属性的D|ؓtrue,则调用ActionForm实例的validate()ҎQƈq回所出现的Q何错误?br />对Q何HTML面而言Q如果表单数据是以POSTҎ传输的,应该用ActionForm。必要时Q相同的ActionForm可以同时l多个页面用,?br />要HTML字段能和ActionForm对象的属?property)匚w可以了?br />Struts框架所提供的ActionFormcdC多个ҎQ但到目前ؓ止,最重要的两个方法就是reset()和validate():
  public void reset(ActionMapping mapping,HttpServletRequest request);
  public ActionErrors validate(ActionMapping mapping,HttpServletRequest request);
在Struts ActionFormcMQ这两个Ҏ的默认实现是不完成Q何的逻辑。你必须在自qActionFormcM覆盖q两个方法。控制器以请求中?br />值来填写ActionForm实例之前Q会先调用reset()Ҏ。reset()Ҏl了ActionForm一个机会,可将其属性设|ؓ原来默认的状态。这一炚w
帔R要,因ؓ表单bean实例可能会由多个h׃n或者由好几个不同的U程所存取。不q,如果你是让好几页׃n一个ActionForm实例Q可?br />不会Ld现reset()ҎQ这样一来只要这个实例还在,属性的值就不会被重新设|。另一U做法就是实C自己的resetFields()ҎQ?br />在成功更C务之后,׃q个ActioncL调用此方法?br />当请求中所携带的值已l插入到ActionFrom实例之后Q控制器回调用validate()Ҏ。ActionForm应该对输入数据完成必要的验证工作Q然
后向控制器返回所到的Q何错误。业务逻辑验证应该在业务对象中而不是在ActionForm中来完成。在ActionForm中所q行的验证工作,?br />是表C的验证而已?br />一旦写好ActionFormcdQ你必须通知Struts应用E序有这些ActionForm存在Q告诉Struts应用E序哪个动作映射应该使用哪个ActionForm?br />q是在配|文件中讄的。第一步是Z的应用程序在配置文g中的form-beansD里配置所有的ActionForm。看下面的一个例?
 <form-beans>
    <form-bean
       name="loginForm"
       type="com.oreilly.struts.banking.form.LoginForm"/>
    <form-bean
       name="accountInformationForm"
       type="org.apache.struts.action.DynaActionForm">
       <form-property name="accounts" type="java.util.ArrayList"/>
    </form-bean>
 </form-beans>
每个表单bean的name属性必都是独一无二的,而且其type属性必d义一个Javac(扩展了Struts ActionFormc)的完全限定名。下一?br />是在一个或多个action元素中用在form-benasD里的某个form-bean名。如下:
  <action
    path="/login"
    type='com.oreilly.struts.banking.action.LoginAction"
    scope="request"
    name="loginForm"
    validate="true"
    input="/login.jsp">
    <forward name="Success" path="/action/getaccountinformation" redirect="ture>
    <forward name="Failure" path="/login.jsp" redirect="true"/>
  </action>
注意Q登录动作映的name正好和前面form-beansD里某个name属性相匚w?/p>

 


 



多力宇扬 2006-07-05 08:07 发表评论
]]>
国杂志300强及其网址http://www.aygfsteel.com/dorydoo/archive/2006/07/05/56634.html多力宇扬多力宇扬Wed, 05 Jul 2006 00:05:00 GMThttp://www.aygfsteel.com/dorydoo/archive/2006/07/05/56634.htmlhttp://www.aygfsteel.com/dorydoo/comments/56634.htmlhttp://www.aygfsteel.com/dorydoo/archive/2006/07/05/56634.html#Feedback0http://www.aygfsteel.com/dorydoo/comments/commentRss/56634.htmlhttp://www.aygfsteel.com/dorydoo/services/trackbacks/56634.html国杂志300强及其网址

No  杂志名称                                                          |址                                                    cd
1   PeopleQh物)                             http://people.aol.com/people/index.html                     ׃
2   TV GuideQ电视指南)                 http://www.tvguide.com                                              ׃
3   TimeQ时代)                                http://www.time.com                                                   新闻
4   Sports IllustratedQ体育画报)   http://sportsillustrated.cnn.com 体育
5   Better Homes & GardensQ美好家园)  http://www.bhg.com 家居
6   Reader’s DigestQ读者文摘)  http://www.rd.com/splash.jhtml l合
7   ParadeQ旅行)  http://www.parade.com/auth/entry.lasso 旅游
8   NewsweekQ新d刊)  http://www.msnbc.com/news/NW-front_Front.asp 新闻
9   Business WeekQ商业周刊)  http://www.businessweek.com 商业
10   Good HousekeepingQ好dQ?http://www.goodhousekeeping.com 家庭
11   FortuneQ胦富)  http://www.fortune.com/ 商业
12   CosmopolitanQ全球主义者)  http://www.cosmopolitan.com/ ׃
13   Woman’s DayQ妇xQ?http://www.womansday.com/xp6/WomansDay/home.xml 妇女
14   ForbesQ福布斯Q?http://www.forbes.com/ 商业
15   Family CircleQ家庭圈Q?http://www.familycircle.com/home/homepage.jsp 家庭
16   USA WeekendQ美国周末)  http://www.usaweekend.com 休闲
17   InstyleQ时髦)  http://www.instyle.com/instyle 时尚
18   Entertainment WeeklyQ娱乐周刊)  http://www.ew.com/ew/ ׃
19   Martha Stewart LivingQ玛萨斯囑ְ特生z)   http://www.marthastewart.com 生活
20   U.S. News & World ReportQ美国新M世界报道Q?http://www.usnews.com 新闻
21   Ladies?Home JournalQ妇奛_庭杂志)   http://www.lhj.com 家庭
22   National GeographicQ国家地理杂志)   http://www.nationalgeographic.com 地理
23   Southern LivingQ南方生z)  http://www.southernliving.com/ 生活
24   VogueQ时)  http://www.style.com/vogue/index.html 时尚
25   PC MagazineQ个人电脑)  http://www.pcmag.com/ QT
26   MoneyQ金钱)  http://money.cnn.com/ 理胦
27   MaximQ马克西姆)  http://www.maximonline.com/index.html ׃
28   O, The Oprah Magazine   http://www.oprah.com/omagazine 妇女
29   GlamourQ魅力)  http://www.glamour.com/ 时尚
30   National Enquirer, TheQ国家寻问者)  http://www.nationalenquirer.com/ 新闻
31   New York Times MagazineQ纽U时报杂志)  http://www.nytimes.com/ 新闻
32   Golf DigestQ高夫文摘Q?http://www.golfdigest.com/ 体育
33   Rolling StoneQ滚矻I  http://www.rollingstone.com/ 音乐
34   PlayboyQ花花公子)  http://www.playboy.com/ h?br />35   Vanity FairQ名利场Q?http://www.vanityfair.com ׃
36   SeventeenQ十七岁Q?http://www.seventeen.com/ 青年
37   ParentsQ父母)  http://www.parents.com/ 教育
38   Star MagazineQ明星杂志)  http://www.starmagazine.com/ ׃
39   ESPN The MagazineQESPN杂志Q?http://espn.go.com/magazine/ 体育
40   PreventionQ预Ԍ  http://www.prevention.com/ 健康
41   RedbookQ红书)  http://magazines.ivillage.com/redbook/ 妇女
42   Rosie   http://www.rosieo.com/ 生活
43   Golf MagazineQ高夫杂志Q?http://sportsillustrated.cnn.com/golfonline/ 体育
44   Travel & LeisureQ旅游和休闲Q?http://www.travelandleisure.com/ 休闲
45   Elle   http://www.elle.com/ 时尚
46   New Yorker, TheQ纽U客Q?http://www.newyorker.com/ 文艺
47   W   http://www.style.com/w/ 时尚
48   Woman’s WorldQ妇女世界)  http://www.robertcraig.com/womansworld.html 妇女
49   ParentingQ养Ԍ  http://www.parenting.com/parenting/ 家庭
50   Car & DriverQh车志Q?http://www.caranddriver.com/xp/Caranddriver/home.xml R
51   Endless VacationQ无假日)  http://www.endlessvacation.com/ 休闲
52   Bride’s MagazineQ新娘杂志)  http://www.brides.com 婚礼
53   InformationWeekQ信息周刊)  http://www.informationweek.com/ QT
54   Country LivingQ乡村生z)  http://magazines.ivillage.com/countryliving/ 生活
55   Us WeeklyQ美国周刊)  http://usweekly.abc.com/ 新闻
56   Marie ClaireQ玛丽克莱尔Q?http://www.marieclaire.com/ 时尚
57   SunsetQ日落)  http://www.sunset.com/ U学
58   Soap Opera DigestQ肥皂剧文摘Q?http://www.soapoperadigest.com ׃
59   AARP Modern MaturityQ现代文明)   http://www.modernmaturity.org/ 公益
60   GQ   http://www.gq.com/ 时尚
61   Architectural DigestQ徏{学文摘Q?http://www.condenet.com/mags/archdigest/ 建筑
62   Harper’s BazaarQ哈泼氏Q?http://www.harpersbazaar.com/ 时尚
63   Travel AgentQ旅总理)  http://www.travelagents.com/ 旅游
64   SmithsonianQ史密森|  http://www.si.edu/ 博物
65   PC WorldQPC世界Q?http://www.pcworld.com/ QT
66   Modern BrideQ现代新娘)  http://www.modernbride.com/ 婚礼
67   Men’s HealthQ男性健P  http://www.menshealth.com/ 健康
68   Bon AppetitQ好 Q?http://www.epicurious.com/b_ba/b00_home/ba.html 烚w
69   Motor TrendQ机车潮)  http://www.motortrend.com/ R
70   Economist, TheQ经学人)  http://www.economist.com/ 政经
71   SelfQ自我)  http://www.self.com/ 妇女
72   ShapeQ体形)  http://www.shapeonline.com/ 健康
73   Teen People   http://www.teenpeople.com/teenpeople/ 青年
74   YM   http://www.ym.com 时尚
75   Consumer ReportsQ消费者报告)  http://www.consumerreports.org/main/home.jsp 生活
76   Cooking LightQ烹饪之光)  http://www.cookinglight.com/ 烚w
77   Travel WeeklyQ旅行周刊)  http://www.travelweekly.co.uk/tw_home/home.asp 旅游
78   House BeautifulQ美丽住宅)  http://magazines.ivillage.com/housebeautiful/ 家居
79   EbonyQ乌木)  http://www.ebony.com/ 成h
80   Popular PhotographyQ大众摄影)  http://www.popularphotography.com/index.asp 摄媄
81   Country HomeQ乡村家庭)  http://www.countryhome.com/ch/index.html 家庭
82   Barron’s   http://www.barrons.com/ 商业
83   eWeek   http://www.eweek.com 消费
84   Conde Nast Traveler   http://www.concierge.com/cntraveler/ 旅游
85   Town & CountryQ城镇和乡村Q ?http://magazines.ivillage.com/townandcountry/ 生活
86   InfoWorldQ信息世界)   http://www.infoworld.com/ QT
87   EE Times   http://www.eetimes.com/ 电子
88   Food & WineQ食物和酒)   http://www.foodandwine.com/ 食品
89   New YorkQ纽U)   http://www.newyorkmetro.com/ 城市
90   EssenceQ本质)   http://www.essence.com/ 黑h
91   Road & TrackQ公路与轨迹Q ?http://www.roadandtrack.com/ R
92   HealthQ健P   http://www.health.com/ 健康
93   IncQ公司)   http://www.inc.com/home/ 商业
94   AllureQ吸引)   http://www.allure.com/ 时尚
95   Vibe   http://www.vibe.com/new/home/pointer.html ׃
96   GourmetQ美食家Q ?http://www.gourmet.com/ 烚w
97   Taste of HomeQ家的滋呻I   http://www.tasteofhome.com/ 烚w
98   Muscle & FitnessQ肌肉和健nQ ?http://www.muscleandfitness.com/ 健康
99   Popular MechanicsQ大众机梎ͼ   http://popularmechanics.com/ 机械
100   HomeQ家Q ?http://www.homemag.com/ 家居
101   fitnessQ健w)   http://www.fitnessmagazine.com/home/index.jsp 健康
102   Field & StreamQ田园和溪Q ?http://www.fieldandstream.com/ 休闲
103   American BabyQ美国宝贝)   http://www.americanbaby.com/ab/CDA/homepage/ 家庭
104   FamilyFunQ家庭乐)   http://familyfun.go.com/ 家庭
105   Sporting News, TheQ体育新闻)   http://www.sportingnews.com/ 体育
106   EsquireQ先生)   http://www.esquire.com/ h?br />107   PenthouseQ小屋Q ?http://www.penthouse.com/ 成h
108   Kiplinger’s Personal Finance MagazineQ吉朴林的个人金融杂志)   http://www.kiplinger.com/ 理胦
109   GlobeQ环球)   http://www.boston.com/globe/ 环境
110   SmartMoneyQ精明理财)   http://www.smartmoney.com/ 理胦
111   StuffQ素材)   http://www.stuffmagazine.com/ h?br />112   CRN   http://www.crn.com/ QT
113   Men’s JournalQ男人)   http://www.mensjournal.com/ h?br />114   House & GardenQ家园)   http://www.condenet.com/mags/hg/ 家居
115   Fast CompanyQ快速公司)   http://www.fastcompany.com/homepage/ 商业
116   Computer ShopperQ计机购物者)   http://shopper.cnet.com/ 消费
117   JetQ黑玉)   http://www.jetmag.com/ 黑h
118   First For Women    http://www.ffwmarket.com/ 妇女
119   Traditional HomeQ传l家庭)   http://www.traditionalhome.com/ 家庭
120   Automobile MagazineQ汽车杂志)   http://www.automobilemag.com/ R
121   Red HerringQ红鲱鱼Q ?http://www.redherring.com/ 商业
122   Highlights for ChildrenQ儿童文_)   http://www.highlights.com/ 儿童
123   WiredQ连U)   http://www.wired.com/ QT
124   OutsideQ户外)   http://outsidemag.com/index.html 休闲
125   This Old HouseQ这个老屋子)   http://www.thisoldhouse.com/toh/ 家居
126   NetworkWorldQ网l世界)   http://www.networkworld.com/ QT
127   EntrepreneurQ企业家Q ?http://www.entrepreneur.com/ 商业
128   Popular ScienceQ大众科学)   http://www.popsci.com/popsci/ U普
129   Elle Decor    http://www.elledecor.co.th/ 设计
130   Quick Cooking Q速煮Q ?http://www.quickcooking.com/ 烚w
131   Family HandymanQ家庭䄦人)   http://www.familyhandyman.com/ 家居
132   ScienceQ科学)   http://www.sciencemag.org/ U学
133   Bridal GuideQ新娘指南)   http://www.bridalguide.com/ 婚礼
134   ChildQ孩子)   http://www.child.com/index.jsp 家庭
135   Cable GuideQ有U电视指南)   http://www.cableguide.co.uk/ ׃
136   Midwest LivingQ中襉K生活Q ?http://www.midwestliving.com/ 生活
137   Metropolitan HomeQ大城市生活Q ?http://www.mho.co.uk/ 生活
138   Chronicle of Higher Education, TheQ高{教育编q史Q ?http://chronicle.com/ 教育
139   Mutual Funds MagazineQ互动基金杂志)  http://www.mutual-funds.com/mfmag/ 商业
140   TravelhostQ旅怸人)   http://www.travelhost.com/ 旅游
141   Sound & VisionQ声与媄Q ?http://www.soundandvisionmag.com/index.asp 电媄
142   CIOQ首席信息官Q ?http://www.cio.com/ QT
143   Hot Rod    http://www.hotrod.com/ R
144   ComputerworldQ计机世界Q ?http://www.computerworld.com/ QT
145   Source, TheQ来源)   http://www.thesource.com/ 黑h
146   DeparturesQ启E)   http://www.departures.com/ 商业
147   SpinQ旋转)   http://www.spin.com/ 音乐
148   Travel HolidayQ旅行假日)   http://www.travelholiday.com/ 旅游
149   Black EnterpriseQ黑Z业)   http://www.blackenterprise.com/ 商业
150   BabyTalkQ宝贝说话)   http://www.parenting.com/parenting/...s/babytalk.html 家庭
151   New England Journal of MedicineQ新英格兰医学期刊)   http://content.nejm.org/ d
152   EBN Electronic Buyer’s NewsQEBN电子C新闻Q ?http://www.ebnonline.com/ 电子
153   JaneQ简Q ?http://www.janes.com/ 军事
154   Working MotherQ妇奌动者)   http://www.workingwoman.com/ 妇女
155   Men’s FitnessQ男性健w)   http://www.mensfitness.com/mens.html 健康
156   VictoriaQ维多利亚)   http://magazines.ivillage.com/victoria/ 生活
157   CosmoGirlQ都市女孩)   http://www.cosmogirl.com/ 时尚
158   Nation’s Restaurant NewsQ国安馆新闻)   http://www.nrn.com/ 行业
159   Harvard Business ReviewQ哈佛商业评论)   http://www.hbr.com 商业
160   FHMQ男人帮Q ?http://www.fhm.com/ h?br />161   Sports Illustrated For KidsQ儿童体育画报)   http://www.sikids.com/ 儿童
162   BoatingQ航船)   http://www.boatingmag.com/ 体育
163   DiscoverQ探索)   http://www.discover.com/ U普
164   Real SimpleQ反朴归真)   http://www.realsimple.com/realsimple/ 生活
165   GuidepostsQ\标)   http://www.guideposts.com/ 宗教
166   Cycle WorldQ环形世界)   http://www.cycleworld.com/xp6/CycleWorld/main.xml R
167   EDN   http://www.e-insite.net/ednmag/ 电子
168   Tennis MagazineQ网球杂志)   http://www.tennis.com 体育
169   Advertising AgeQ广告时代)   http://www.adage.com/ 行业
170   HemispheresQ半球)   http://www.hemispheresmagazine.com/home.htm 收藏
171   Fortune Small BusinessQ胦富小商业Q?http://www.fortune.com/smallbusiness/ 商业
172   Meetings & ConventionsQ会议)   http://www.meetings-conventions.com/ 行业
173   WorthQh|   http://www.worth.com/magazine/index.cfm 理胦
174   Outdoor LifeQ户外生z)   http://www.outdoorlife.com/outdoor/ 休闲
175   Official U.S. Playstation MagazineQ美国官方PS杂志Q?http://www.gamers.com/opm/index.jsp 游戏
176   Automotive NewsQ汽车新闻)   http://www.autonews.com/ R
177   Scientific AmericanQ科学美国hQ ?http://www.sciam.com/ U普
178   Nickelodeon    http://www.nick.com ׃
179   MoreQ更多)   http://www.more.com 时尚
180   SkiQ滑雪)   http://www.skinet.com/skinet/ 体育
181   LuckyQ幸q)   http://www.luckymag.com/ 时尚
182   Interior DesignQ室内装饰设计)   http://www.interiordesign.net 行业
183   Sky QDelta Air LinesQ(天空 三角航线Q ?http://www.delta-sky.com/ 航线
184   Power & MotoryachtQ能源和摩托艇)   http://powerandmotoryacht.about.com/mbody.htm 休闲
185   GameProQ专业游戏)   http://www.gamepro.com/ 游戏
186   JAMAQ睡衣裤Q ?http://jama.ama-assn.org/ 健康
187   Furniture TodayQ今日家P   http://www.furnituretoday.com/index.shtml 家居
188   My GenerationQ我们这一代)   http://www.mygeneration.org/ 音乐
189   Successful MeetingsQ成功会议)   http://www.successmtgs.com/successmtgs/index.jsp 行业
190   PremiereQ首映)   http://www.premiere.com 电媄
191   Birds & BloomsQ鸟语花香)   http://www.birdsandblooms.com/ 家居
192   Aviation Week & Space TechnologyQ航I技术周刊)   http://www.aviationnow.com/ 休闲
193   Electronic DesignQ电子设计)   http://www.e-insite.net/ednmag/ 电子
194   T & L GolfQT & L高尔夫)   http://www.tlgolf.com/ 休闲
195   Wine SpectatorQ酒的旁观者)   http://www.winespectator.com/ 休闲
196   National Geographic TravelerQ国家地理旅行者)   http://www.nationalgeographic.com/traveler/ 旅游
197   AutoWeekQ汽车周刊)   http://www.autoweek.com/ R
198   WoodQ木工)    http://www.woodmagazine.com/ 工艺
199   Chemical & Engineering NewsQ化工新闻)   http://pubs.acs.org/cen/ 行业
200   Electronic Gaming MonthlyQ电子游戏月刊)   http://www.gamers.com/egm/index.jsp 游戏
201   Disney AdventuresQ_斯尼冒险Q ?http://disney.go.com/disneyadventures/ 孩子
202   National ExaminerQ国家主考者)   http://www.nationalexaminer.com/ 教育
203   Soap Opera WeeklyQ肥皂剧周刊Q ?http://www.soapoperaweekly.com/ ׃
204   Golf WorldQ高夫世界Q ?http://www.worldgolf.com/ 体育
205   Runner’s WorldQ跑步者世界)   http://www.runnersworld.com/ 体育
206   Country WeeklyQ乡村周刊)   http://www.countryweekly.com/ 音乐
207   American WayQ美国道路)   http://www.americanwaymag.com/ 旅游
208   UpsideQ上面)   http://www.upside.com/ QT
209   Design News Q设计新闻)   http://www.manufacturing.net/ 行业
210   DetailsQ详l资料)   http://www.condenet.com/mags/details/ 时尚
211   American ProfileQ美国外形)   http://www.americanprofile.com/ 健康
212   ENR   http://enr.construction.com/Default.asp 建筑
213   Machine DesignQ机械设计)   http://www.machinedesign.com/ 行业
214   PC GamerQPC游戏玩家Q ?http://www.pcgamer.com/ 游戏
215   BiographyQ传讎ͼ  http://www.biography.com/ 文学
216   Atlantic MonthlyQ大西洋月刊Q ?http://www.theatlantic.com/ 文艺
217   Successful FarmingQ成功农业)   http://www.agriculture.com/sfonline/ 行业
218   Texas MonthlyQd克莎斯月刊)   http://www.texasmonthly.com/ 地区
219   SkiingQ滑雪运动)   http://www.skiingmag.com/skiing/ 体育
220   Southern AccentsQ南方口韻I   http://www.southernaccents.com/accents/ 家庭
221   American RiflemanQ美国步枪射手)   http://www.americanrifleman.org/site/index.asp 枪械
222   Bassmaster   http://www.bassmaster.com/ 休闲
223   SN-Supermarket NewsQ超U市场新闻)   http://www.supermarketnews.com 行业
224   ABA JournalQ美国银行家协会期刊Q ?http://www.abanet.org/journal/redesign/home.html 行业
225   NatureQ自Ӟ   http://www.nature.com/ U学
226   Architectural RecordQ徏{学档案Q ?http://www.archrecord.com/ 行业
227   AdweekQ广告周刊)   http://www.adweek.com/adweek/index.jsp 行业
228   Petersen’s 4-Wheel & Off Road   http://www.4wheeloffroad.com/ R
229   Business 2.0Q商?.0Q ?http://www.business2.com/ 商业
230   FlyingQ飞行)   http://www.flyingmag.com/ 休闲
231   BillboardQ公告牌Q ?http://www.billboard.com/billboard/index.jsp 音乐
232   Coastal LivingQv岸生z)   http://www.coastalliving.com/coastal/ 生活
233   Country WomanQ乡村女人)   http://www.countrywomanmagazine.com/ 家庭
234   Boys’sLifeQ男孩生z)   http://www.boyslife.org/ 孩子
235   Transworld SkateboardingQ环球滑板)  http://www.skateboarding.com/skate/ 体育
236   NFL InsiderQ美国球联盟知情者)   http://ww2.nfl.com/insider/ 体育
237   People en EspanolQh物西班牙语版Q ?http://www.peopleenespanol.com/pespanol/index.html/ ׃
238   Journal of AccountancyQ会计学期刊Q ?http://www.aicpa.org/pubs/jofa/joahome.htm 财务
239   Windows 2000 MagazineQ视H?000杂志Q ?http://www.win2000mag.net/ QT
240   VerandaQ阳収ͼ   http://www.veranda.com/ 家居
241   Video BusinessQ视频商业)   http://www.videobusiness.com/ 商业
242   BackpackerQ背包)   http://www.backpacker.com/ 休闲
243   Cigar AficionadoQ雪茄迷Q ?http://www.cigaraficionado.com/ 休闲
244   TelephonyQ技术)   http://www.telephonyonline.com/ QT
245   FlexQ弯Ԍ   http://www.flexonline.com/ 健康
246   Variety QweeklyQ(品种周刊Q ?http://www.variety.com/ 商业
247   Cruising World QE航世界)   http://www.cruisingworld.com/ 休闲
248   American HunterQ美国猎人)   http://www.american-hunter.com/ 休闲
249   Crain’s Chicago BusinessQ克瑞恩芝加哥商业)   http://www.chicagobusiness.com/ 商业
250   Broadcastin &CableQ宽带与有线电视Q ?http://www.broadcastingcable.com/ 行业
251   Petersen’s Photographic   http://www.photographic.com/ 摄媄
252   Golf for WomenQ女性高夫Q   http://www.golfdigest.com/gfw/ 体育
253   US Airways Attache Magazine  
254   Progressive FarmerQ改q农ZQ ?http://www.progressivefarmer.com/farmer/ 农业
255   Easyriders   http://www.easyriders.com/Home/Home.asp R
256   Crain’s New York BusinessQ克瑞恩U约商业Q ?http://www.crainsny.com/ 商业
257   YachtingQ游艇)   http://www.yachtingnet.com/yachting/ 休闲
258   ChicagoQ芝加哥Q ?http://www.chicagomag.com/ 城市
259   Computer Gaming WorldQ计机游戏世界Q ?http://www.gamers.com/cgw/index.jsp 游戏
260   Video StoreQ视频商店)   http://www.videostoremag.com/ 商业
261   CountryQ乡村)    http://www.country-magazine.com/ 生活
262   Fine HomebuildingQ好家徏造者)   http://www.taunton.com/finehomebuilding/index.asp 家居
263   YankeeQ美国{Q ?http://www.yankeemagazine.com/travel/index.php 旅游
264   Publisher’s WeeklyQ出版者周刊)   http://www.publishersweekly.com/ 行业
265   Restaurants & InstitutionsQ餐馆与协会Q ?http://www.rimag.com/ 行业
266   American Medical NewsQ美国医学新闻)   http://www.ama-assn.org/public/journals/amnews/ 行业
267   North American HunterQ北猎人)   http://visitors.huntingclub.com/magazine.asp 休闲
268   Federal Computer WeekQ联邦计机周刊Q   http://www.fcw.com/ QT
269   Guns & AmmoQ枪与军火)   http://www.gunsandammomag.com/dynamic.asp 枪械
270   Transworld SnowboardingQ环球滑雪板Q?http://www.snowboarding-online.com/ 体育
271   New Equipment DigestQ新讑֤文摘Q   http://www.newequipment.com/ 行业
272   Weekly World NewsQ世界新d刊)    http://www.weeklyworldnews.com/ 新闻
273   Chemical WeekQ化学周刊)   http://www.chemweek.com/ 行业
274   Four WheelerQ四轮RQ   http://www.fourwheeler.com/ R
275   GearQ轮)    http://www.gearmagazine.com/ 家居
276   Pensions & InvestmentsQ养老金和投资)   http://www.pionline.com/ 理胦
277   MacworldQMac世界Q    http://www.macworld.com/ QT
278   BuilderQ徏{者)    http://builder.com.com/ QT
279   RB Restaurant BusinessQ餐馆业Q    http://www.foodservicetoday.com/rb/index.shtml 行业
280   CFOQ首席运营官Q    http://www.cfo.com/ QT
281   American Family PhysicianQ美国家庭医生)   http://www.aafp.org/afp.xml 健康
282   Los Angeles Times MagazineQ洛杉矶时报杂志Q   http://www.latimes.com/ 新闻
283   Saveur    http://www.saveur.com 烚w
284   Multichannel NewsQ多频道新闻Q   http://www.multichannel.com/ 行业
285   PurchasingQ购乎ͼ    http://www.manufacturing.net/ 消费
286   Laser Focus WorldQ激光焦点世界)   http://lfw.pennnet.com/home.cfm 行业
287   HANDYQ手工)   http://visitors.handymanclub.com/handy_mag.asp 家居
288   Medical EconomicsQ医药经)   http://www.medec.com/ 行业
289   ReminisceQ回忆)   http://www.reminisce.com/ 休闲
290   Pillsbury Classic Cookbooks   http://www.pillsbury.com/ 烚w
291   Skin DiverQ滑_   http://www.skin-diver.com/ 休闲
292   Nursing 2002   http://www.nursinghomesmagazine.com/ 护理
293   Hemmings Motor News   http://cars.hemmings.com/ R
294   American Legion MagazineQ美国军团杂志)   http://www.legion.org/ 公益
295   Farm JournalQ农业期刊)   http://www.farmjournal.com/ 农业
296   Southwest Airlines SpiritQ西南航U精灵)   http://www.spiritmag.com/ 航行
297   Dr. Dobb’s Journal   http://www.ddj.com/ QT
298   Chicago Tribune MagazineQ芝加哥论坛杂志Q ?http://www.chicagotribune.com/features/magazine/ 新闻
299   IslandsQ岛屿)   http://www.islands.com/ 休闲
300   Institutional InvestorQ金融机构投资者)   http://www.epinions.com 金融



多力宇扬 2006-07-05 08:05 发表评论
]]>
助手工具-Anthttp://www.aygfsteel.com/dorydoo/archive/2006/07/04/56536.html多力宇扬多力宇扬Tue, 04 Jul 2006 06:44:00 GMThttp://www.aygfsteel.com/dorydoo/archive/2006/07/04/56536.htmlhttp://www.aygfsteel.com/dorydoo/comments/56536.htmlhttp://www.aygfsteel.com/dorydoo/archive/2006/07/04/56536.html#Feedback0http://www.aygfsteel.com/dorydoo/comments/commentRss/56536.htmlhttp://www.aygfsteel.com/dorydoo/services/trackbacks/56536.html Ant是什么?
Ant是一U基于Java的build工具。理Z来说Q它有些cM于(UnixQC中的make Q但没有make的缺陗?br />
既然我们已经有了make, gnumake, nmake, jam以及其他的build工具Z么还要要一U新的build工具呢?因ؓAnt的原作者在多种(g)q_上开发Y件时Q无法忍受这些工L限制和不ѝ类gmake的工h质上是基于shellQ语aQ的Q他们计依赖关p,然后执行命oQ这些命令与你在命o行敲的命令没太大区别Q。这意味着你可以很Ҏ地通过使用OSҎ的或~写新的Q命令)E序扩展该工P然而,q也意味着你将自己限制在了特定的OSQ或特定的OScd上,如Unix?br />
Makefile也很可恶。Q何用过他们的h都碰到过可恶的tab问题。Ant的原作者经常这样问自己Q“是否我的命令不执行只是因ؓ在我的tab前有一个空|Q!”。类gjam的工具很好地处理了这c问题,但是Q用P必须C和用一U新的格式?br />
Ant׃同了。与Zshell命o的扩展模式不同,Ant用Java的类来扩展。(用户Q不必编写shell命oQ配|文件是ZXML的,通过调用target树,可执行各种task。每个task由实C一个实C特定Task接口的对象来q行。(如果你对Ant一Ҏ念都没有的话Q可能看不懂q一节,没有关系Q后面会对target,task做详l的介绍。你如果没有太多的时间甚臛_以略q这一节,然后再回来浏览一下这里的介绍Q那时你׃看懂了。同P如果你对make之类的工具不熟悉也没关系Q下面的介绍Ҏ不会用到make中的概念。)

必须承认Q这样做Q在构造shell命o时会失去一些特有的表达能力。如`find . -name foo -exec rm {}`Q但却给了你跨^台的能力Q你可以在Q何地方工作。如果你真的需要执行一些shell命oQAnt有一?lt;exec> taskQ这个task允许执行特定OS上的命o?br />
安装Ant
׃Ant是一个Open Source的YӞ所以有两种安装Ant的方式,一U是用已~译好的binary 文g安装AntQ另一U是用源代码自己build Ant?br />
binary 形式的Ant可以从http://jakarta.apache.org/builds/ant/release/v1.4.1/bin下蝲。如果你希望你能自己~译AntQ则可从 http://jakarta.apache.org/builds/ant/release/v1.4.1/src。注意所列出的连接都是最新发行版的Ant。如果你d此文Ӟ发现已经有了更新的版本,那么L新版本。如果你是一个疯狂的技术追求者,你也可以从Ant CVS repository下蝲最新版本的Ant?br />
pȝ需?br />
要想自己build Ant。你需要一个JAXP兼容的XML解析器(parserQ放在你的CLASSPATHpȝ变量中?br />
binary 形式的Ant包括最新版的Apache Crimson XML解析器。你可以从http://java.sun.com/xml/ 得到更多的关于JAXP的信息。如果你希望使用其他的JAXP兼容的解析器。你要从Ant的lib目录中删掉jaxp.jar以及crimson.jar。然后你可将你心q解析器的jar文g攑ֈAnt的lib目录中或攑֜你的CLASSPATHpȝ变量中?br />
对于当前版本的AntQ需要你的系l中有JDKQ?.1版或更高。未来的Ant版本会要求用JDK 1.2或更高版本?br />
binary 版的Ant包括三个目录:bin, docs 和lib。只有bin和lib目录是运行Ant所需的。要惛_装AntQ选择一个目录ƈ发行版的文件拷贝到该目录下。这个目录被UCANT_HOME?br />
在你q行Ant之前需要做一些配|工作?br />
bin目录加入PATH环境变量?
讑֮ANT_HOME环境变量Q指向你安装Ant的目录。在一些OS上,Ant的脚本可以猜ANT_HOMEQUnix和Windos NT/2000Q-但最好不要依赖这一Ҏ?
可选地Q设定JAVA_HOME环境变量Q参考下面的高񔞮节Q,该变量应该指向你安装JDK的目录?br />
注意Q不要将Ant的ant.jar文g攑ֈJDK/JRE的lib/ext目录下。Ant是个应用E序Q而lib/ext目录是ؓJDK扩展使用的(如JCEQJSSE扩展Q。而且通过扩展装入的类会有安全斚w的限制?br />
可选Task

Ant支持一些可选task。一个可选task一般需要额外的库才能工作。可选task与Ant的内|task分开Q单独打包。这个可选包可以从你下蝲Ant的同一个地方下载。目前包含可选task的jar文g名叫jakarta-ant-1.4.1-optional.jar。这个jar文g应该攑ֈAnt安装目录的lib目录下?br />
每个可选task所需的外部库可参看依赖库节。这些外部库可以攑ֈAnt的lib目录下,q样Antp自动装入Q或者将其放入环境变量中?br />
Windows

假定Ant安装在c:\ant\目录下。下面是讑֮环境的命令:

set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.2.2
set PATH=%PATH%;%ANT_HOME%\bin
Unix (bash)

假定Ant安装?usr/local/ant目录下。下面是讑֮环境的命令:

export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.2.2
export PATH=${PATH}:${ANT_HOME}/bin


要想q行Ant必须使用很多的变量。你臛_参考需要下面的内容Q?br />
Ant的CLASSPATH必须包含ant.jar以及你所选的JAXP兼容的XML解析器的jar文g?
当你需要JDK的功能(如javac或rmic taskQ时Q对于JDK 1.1QJDK的classes.zip文g必须攑օCLASSPATH中;对于JDK 1.2或JDK 1.3Q则必须加入tools.jar。如果设定了正确的JAVA_HOME环境变量QAnt所带的脚本Q在bin目录下,会自动加入所需的JDKcR?
当你执行特定q_的程序(如exec task或cvs taskQ时Q必设定ant.home属性指向Ant的安装目录。同PAnt所带的脚本利用ANT_HOME环境变量自动讄该属性?
Building Ant

要想从源代码build AntQ你要先安装Ant源代码发行版或从CVS中checkout jakarta-ant模块?br />
安装好源代码后,q入安装目录?br />
讑֮JAVA_HOME环境变量指向JDK的安装目录。要想知道怎么做请参看安装Ant节?br />
保你已下蝲了Q何辅助jar文gQ以便build你所感兴的task。这些jar文g可以攑֜CLASSPATH中,也可以放在lib/optional目录下。参看依赖库节可知不同的task需要那些jar文g。注意这些jar文g只是用作build Ant之用。要惌行AntQ你q要像安装Ant节中所做的那样讑֮q些jar文g?br />
现在你可以build Ant了:

build -Ddist.dir=<directory_to_contain_Ant_distribution> dist (Windows)
build.sh -Ddist.dir=<directory_to_contain_Ant_distribution> dist (Unix)

q样可你指定的目录中创Z个binary版本?br />
上面的命令执行下面的动作Q?br />
如果有必要可以bootstrap Ant的代码。bootstrap 包括手工~辑一些Ant代码以便q行Ant。bootstrap 用于下面的build步骤?
向build脚本传递参C调用bootstrap Ant。参数定义了Ant的属性值ƈ指定了Ant自己的build.xml文g?dist" target?br />
大多数情况下Q你不必直接bootstrap AntQ因为build脚本Z完成q一切。运行bootstrap.bat (Windows) ?bootstrap.sh (UNIX) 可以build一个新的bootstrap版Ant?


如果你希望将Ant安装到ANT_HOME目录下,你可以用:

build install (Windows)
build.sh install (Unix)

如果你希望蟩q冗长的Javadoc步骤Q可以用Q?br />
build install-lite (Windows)
build.sh install-lite (Unix)

q样只会安装bin和lib目录?br />
注意install和install-lite都会覆盖ANT_HOME中的当前Ant版本?br />
依赖?

如果你需要执行特定的taskQ你需要将对应的库攑օCLASSPATH或放到Ant安装目录的lib目录下。注意用mapper时只需要一个regexp库。同Ӟ你也要安装Ant的可选jar包,它包含了task的定义。参考上面的安装Ant节?br />
Jar Name Needed For Available At
An XSL transformer like Xalan or XSL:P style task http://xml.apache.org/xalan-j/index.html or http://www.clc-marketing.com/xslp/
jakarta-regexp-1.2.jar regexp type with mappers jakarta.apache.org/regexp/
jakarta-oro-2.0.1.jar regexp type with mappers and the perforce tasks jakarta.apache.org/oro/
junit.jar junit tasks www.junit.org
stylebook.jar stylebook task CVS repository of xml.apache.org
testlet.jar test task java.apache.org/framework
antlr.jar antlr task www.antlr.org
bsf.jar script task oss.software.ibm.com/developerworks/projects/bsf
netrexx.jar netrexx task www2.hursley.ibm.com/netrexx
rhino.jar javascript with script task www.mozilla.org
jpython.jar python with script task www.jpython.org
netcomponents.jar ftp and telnet tasks www.savarese.org/oro/downloads

q行Ant
q行Ant非常单,当你正确地安装Ant后,只要输入ant可以了?br />
没有指定M参数ӞAnt会在当前目录下查询build.xml文g。如果找Cq该文件作为buildfile。如果你?-find 选项。Ant׃在上U目录中LbuildfileQ直臛_达文件系l的栏V要惌Ant使用其他的buildfileQ可以用参数 -buildfile fileQ这里file指定了你想用的buildfile?br />
你也可以讑֮一些属性,以覆盖buildfile中指定的属性|参看property taskQ。可以用 -Dproperty=value 选项Q这里property是指属性的名称Q而value则是指属性的倹{也可以用这U办法来指定一些环境变量的倹{你也可以用property task来存取环境变量。只要将 -DMYVAR=%MYVAR% (Windows) ?-DMYVAR=$MYVAR (Unix) 传递给Ant Q你可以在你的buildfile中用${MYVAR}来存取这些环境变量?br />
q有两个选项 -quiteQ告诉Antq行时只输出量的必要信息。?-verboseQ告诉Antq行时要输出更多的信息?br />
可以指定执行一个或多个target。当省略targetӞAnt使用标签<project>的default属性所指定的target?br />
如果有的话,-projecthelp 选项输出目的描qC息和目target的列表。先列出那些有描q的Q然后是没有描述的target?br />
命o行选项ȝQ?br />

ant [options] [target [target2 [target3] ...]]
Options:
-help print this message
-projecthelp print project help information
-version print the version information and exit
-quiet be extra quiet
-verbose be extra verbose
-debug print debugging information
-emacs produce logging information without adornments
-logfile file use given file for log output
-logger classname the class that is to perform logging
-listener classname add an instance of class as a project listener
-buildfile file use specified buildfile
-find file search for buildfile towards the root of the filesystem and use the first one found
-Dproperty=value set property to value
例子

ant

使用当前目录下的build.xmlq行AntQ执行缺省的target?br />
ant -buildfile test.xml

使用当前目录下的test.xmlq行AntQ执行缺省的target?br />
ant -buildfile test.xml dist

使用当前目录下的test.xmlq行AntQ执行一个叫做dist的target?br />
ant -buildfile test.xml -Dbuild=build/classes dist

使用当前目录下的test.xmlq行AntQ执行一个叫做dist的targetQƈ讑֮build属性的gؓbuild/classes?br />
文g

在Unix上,Ant的执行脚本在做Q何事之前都会sourceQ读q计|~/.antrc 文gQ在Windows上,Ant的批处理文g会在开始时调用%HOME%\antrc_pre.batQ在l束时调?HOME%\antrc_post.bat。你可以用这些文仉|或取消一些只有在q行Ant时才需要的环境变量。看下面的例子?br />
环境变量

包裹脚本Qwrapper scriptsQ用下面的环境变量Q如果有的话Q:

JAVACMD Java可执行文件的l对路径。用q个值可以指定一个不同于JAVA_HOME/bin/java(.exe)的JVM?
ANT_OPTS 传递给JVM的命令行变量Q例如,你可以定义属性或讑֮Java堆的最大?br />
手工q行Ant

如果你自己动手安装(DIYQAntQ你可以用下面的命o启动Ant:

java -Dant.home=c:\ant org.apache.tools.ant.Main [options] [target]

q个命o与前面的ant命o一栗选项和target也和用ant命o时一栗这个例子假定你的CLASSPATH包含:

ant.jar

jars/classes for your XML parser

the JDK's required jar/zip files

~写build.xml
Ant的buildfile是用XML写的。每个buildfile含有一个project?br />
buildfile中每个task元素可以有一个id属性,可以用这个id值引用指定的d。这个值必L唯一的。(详情请参考下面的Task节Q?br />
Projects

project有下面的属性:

Attribute Description Required
name 目名称. No
default 当没有指定target时用的~省target Yes
basedir 用于计算所有其他\径的\径。该属性可以被basedir property覆盖。当覆盖Ӟ该属性被忽略。如果属性和basedir property都没有设定,׃用buildfile文g的父目录?No

目的描qC一个顶U的<description>元素的Ş式出玎ͼ参看description节Q?br />
一个项目可以定义一个或多个target。一个target是一pd你想要执行的。执行AntӞ你可以选择执行那个target。当没有l定targetӞ使用project的default属性所定的target?br />
Targets

一个target可以依赖于其他的target。例如,你可能会有一个target用于~译E序Q一个target用于生成可执行文件。你在生成可执行文g之前必须先编译通过Q所以生成可执行文g的target依赖于编译target。Ant会处理这U依赖关pR?br />
然而,应当注意刎ͼAnt的depends属性只指定了target应该被执行的序Q如果被依赖的target无法q行Q这Udepends对于指定了依赖关pȝtarget没有媄响?br />
Ant会依照depends属性中target出现的顺序(从左到右Q依ơ执行每个target。然而,要记住的是只要某个target依赖于一个targetQ后者就会被先执行?br />
<target name="A"/>
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="C,B,A"/>

假定我们要执行target D。从它的依赖属性来看,你可能认为先执行CQ然后BQ最后A被执行。错了,C依赖于BQB依赖于AQ所以先执行AQ然后BQ然后CQ最后D被执行?br />
一个target只能被执行一ơ,x有多个target依赖于它Q看上面的例子)?br />
如果Q或如果不)某些属性被讑֮Q才执行某个target。这P允许Ҏpȝ的状态(java version, OS, 命o行属性定义等{)来更好地控制build的过E。要惌一个targetq样做,你就应该在target元素中,加入ifQ或unlessQ属性,带上target因该有所判断的属性。例如:

<target name="build-module-A" if="module-A-present"/>
<target name="build-own-fake-module-A" unless="module-A-present"/>

如果没有if或unless属性,targetM被执行?br />
可选的description属性可用来提供关于target的一行描qͼq些描述可由-projecthelp命o行选项输出?br />
你的tstamp task在一个所谓的初始化target是很好的做法Q其他的target依赖q个初始化target。要保初始化target是出现在其他target依赖表中的第一个target。在本手册中大多数的初始化target的名字是"init"?br />
target有下面的属性:

Attribute Description Required
name target的名?Yes
depends 用逗号分隔的target的名字列表,也就是依赖表?No
if 执行target所需要设定的属性名?No
unless 执行target需要清除设定的属性名?No
description 关于target功能的简短描q?No

Tasks

一个task是一D可执行的代码?br />
一个task可以有多个属性(如果你愿意的话,可以其UC为变量)。属性只可能包含对property的引用。这些引用会在task执行前被解析?br />
下面是Task的一般构造Ş式:

<name attribute1="value1" attribute2="value2" ... />

q里name是task的名字,attributeN是属性名QvalueN是属性倹{?br />
有一套内|的Qbuilt-inQtaskQ以及一些可选taskQ但你也可以~写自己的task?br />
所有的task都有一个task名字属性。Ant用属性值来产生日志信息?br />
可以ltask赋一个id属性:

<taskname id="taskID" ... />

q里taskname是task的名字,而taskID是这个task的唯一标识W。通过q个标识W,你可以在脚本中引用相应的task。例如,在脚本中你可以这P

<script ... >
task1.setFoo("bar");
</script>

讑֮某个task实例的foo属性。在另一个task中(用java~写Q,你可以利用下面的语句存取相应的实例?br />
project.getReference("task1").

注意1Q如果task1q没有运行,׃会被生效Q例如:不设定属性)Q如果你在随后配|它Q你所作的一切都会被覆盖?br />
注意2Q未来的Ant版本可能不会兼容q里所提的属性,因ؓ很有可能Ҏ没有task实例Q只有proxies?br />
Properties

一个project可以有很多的properties。可以在buildfile中用property task来设定,或在Ant之外讑֮。一个property有一个名字和一个倹{property可用于task的属性倹{这是通过属性名攑֜"${"?}"之间q放在属性值的位置来实现的。例如如果有一个property builddir的值是"build"Q这个property可用于属性|${builddir}/classes。这个值就可被解析为build/classes?br />
内置属?br />
如果你用了<property> task 定义了所有的pȝ属性,Ant允许你用这些属性。例如,${os.name}对应操作pȝ的名字?br />
要想得到pȝ属性的列表可参考the Javadoc of System.getProperties?br />
除了Java的系l属性,Antq定义了一些自q内置属性:
basedir project基目录的l对路径 (?lt;project>的basedir属性一??br />ant.file buildfile的绝对\径?br />ant.version Ant的版本?br />ant.project.name 当前执行的project的名字;?lt;project>的name属性设?
ant.java.version Ant到的JVM的版本; 目前的值有"1.1", "1.2", "1.3" and "1.4".
例子:
<?xml version="1.0" encoding="GB2312"?>

 <project name="MyApp" default="compile" basedir=".">
 <!--定义你需要的属?->
  <property environment="env" />
  <property name="src" value="WEB-INF/src" />
  <property name="classes" value="WEB-INF/classes" />
  <property name="lib" value="WEB-INF/lib" />
  <property name="dist" value="dist" />
 
  <path id="task.classpath">
    <pathelement location="${classes}" />
    <pathelement location="${lib}" />
   
    <!-- Tomcat 5.0.16 Servlet 2.4 API -->
    <pathelement location="${lib}/servlet-api.jar" />
   
    <!-- Tomcat 5.0.16 JSP 2.0 API -->
    <pathelement location="${lib}/jsp-api.jar" />
   
  </path>
 
<!--定义操作--> 
  <target name="init" >
    <echo>初始化完?</echo>
    <echo>ant home = ${ant.home} </echo>
    <echo>java home = ${java.home} </echo>
    <echo>user home = ${user.home} </echo>       
      
  </target>
 
<!--depends定义依赖-->
  <target name="compile" depends="init" >
    <javac classpathref="task.classpath" srcdir="${src}" destdir="${classes}" />
    <echo level="verbose">Seen with -verbose</echo>
    <echo level="debug">Seen with -debug</echo>       
    <echo>~译完成!</echo>
  </target>
 
  <target name="war" >
    <jar jarfile="${dist}/MyApp.war" basedir="."/>
  </target>

</project>

Token Filters
一个project可以有很多tokensQ这些tokens在文件拷贝时会被自动扩展Q这要求在支持这一行ؓ的task中选择qo拯功能。这一功能可用filter task在buildfile中设定?br />
既然q很可能是一个有危害的行为,文g中的tokens必须采取@token@的Ş式,q里token是filter task中设定的token名。这Utoken语法与其他buildpȝ执行cMfiltering的语法相同,而且与大多数的编E和脚本语言以及文档pȝq不冲突Q?

注意Q如果在一个文件中发现了一个@token@形式的tokenQ但没有filter与这个token兌Q则不会发生M事;因此Q没有{义方法-但只要你为token选择合适的名字Q就不会产生问题?br />
警告Q如果你在拷贝binary文g时打开filtering功能Q你有可能破坏文件。这个功能只针对文本文g?br />
Path-like Structures
你可以用":"?;"作ؓ分隔W,指定cMPATH和CLASSPATH的引用。Ant会把分隔W{换ؓ当前pȝ所用的分隔W?br />
当需要指定类D\径的值时Q可以用嵌套元素。一般的形式?br />
<classpath>
<pathelement path="${classpath}"/>
<pathelement location="lib/helper.jar"/>
</classpath>
location属性指定了相对于project基目录的一个文件和目录Q而path属性接受逗号或分号分隔的一个位|列表。path属性一般用作预定义的\径-Q其他情况下Q应该用多个location属性?br />
为简zv见,classpath标签支持自己的path和location属性。所以:

<classpath>
<pathelement path="${classpath}"/>
</classpath>
可以被简写作Q?br />
<classpath path="${classpath}"/>
也可通过<fileset>元素指定路径。构成一个fileset的多个文件加入path-like structure的顺序是未定的?br />
<classpath>
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
</classpath>
上面的例子构造了一个\径值包括:${classpath}的\径,跟着lib目录下的所有jar文gQ接着是classes目录?br />
如果你想在多个task中用相同的path-like structureQ你可以?lt;path>元素定义他们Q与target同Q,然后通过id属性引用-Q参考Referencs例子?br />
path-like structure可能包括对另一个path-like structurede的引用(通过嵌套<path>元素Q:

<path id="base.path">
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
</path>
<path id="tests.path">
<path refid="base.path"/>
<pathelement location="testclasses"/>
</path>

前面所提的关于<classpath>的简z写法对?lt;path>也是有效的,如:

<path id="tests.path">
  <path refid="base.path"/>
<pathelement location="testclasses"/>
</path>
可写成:

<path id="base.path" path="${classpath}"/>
命o行变?br />
有些task可接受参敎ͼq将其传递给另一个进E。ؓ了能在变量中包含I格字符Q可使用嵌套的arg元素?br />
Attribute Description Required
value 一个命令行变量Q可包含I格字符?只能用一?
line I格分隔的命令行变量列表?
file 作ؓ命o行变量的文g名;会被文g的绝对名替代?
path 一个作为单个命令行变量的path-like的字W串Q或作ؓ分隔W,Ant会将其{变ؓ特定q_的分隔符?

例子

<arg value="-l -a"/>
是一个含有空格的单个的命令行变量?br />
<arg line="-l -a"/>
是两个空格分隔的命o行变量?br />
<arg path="/dir;/dir2:\dir3"/>
是一个命令行变量Q其值在DOSpȝ上ؓ\dir;\dir2;\dir3Q在Unixpȝ上ؓ/dir:/dir2:/dir3 ?br />
References

buildfile元素的id属性可用来引用q些元素。如果你需要一遍遍的复制相同的XML代码块,q一属性就很有用-Q如多次使用<classpath>l构?br />
下面的例子:

<project ... >
<target ... >    
<rmic ...>      
<classpath>        
<pathelement location="lib/"/>        
<pathelement path="${java.class.path}/"/>        
<pathelement path="${additional.path}"/>      
</classpath>    
</rmic>  
</target>
<target ... >
<javac ...>
<classpath>
<pathelement location="lib/"/>
<pathelement path="${java.class.path}/"/>
<pathelement path="${additional.path}"/>
</classpath>
</javac>
</target>
</project>
可以写成如下形式Q?br />
<project ... >
<path id="project.class.path">  
<pathelement location="lib/"/>
<pathelement path="${java.class.path}/"/>  
<pathelement path="${additional.path}"/>
</path>
<target ... >
<rmic ...>
<classpath refid="project.class.path"/>
</rmic>
</target>
<target ... >
<javac ...>
<classpath refid="project.class.path"/>
</javac>
</target>
</project>
所有用PatternSets, FileSets ?path-like structures嵌套元素的task也接受这U类型的引用



多力宇扬 2006-07-04 14:44 发表评论
]]>
JSTL(1.1)之Core tag Librayhttp://www.aygfsteel.com/dorydoo/archive/2006/07/04/56525.html多力宇扬多力宇扬Tue, 04 Jul 2006 05:47:00 GMThttp://www.aygfsteel.com/dorydoo/archive/2006/07/04/56525.htmlhttp://www.aygfsteel.com/dorydoo/comments/56525.htmlhttp://www.aygfsteel.com/dorydoo/archive/2006/07/04/56525.html#Feedback0http://www.aygfsteel.com/dorydoo/comments/commentRss/56525.htmlhttp://www.aygfsteel.com/dorydoo/services/trackbacks/56525.htmlJavaServer Pages Standard Tag Libray(1.1),其中文名字ؓJSP标准标签函数库。JSTL是一个标准的?br />制定好的标签库,可以应用于各U领域,?基本输入输出Q流E控Ӟ循环QXML文g剖析Q数据库?br />询以及国际化和文字格式标准化的应用等。JSTL所提供的标{ֺ分ؓ以下五大c?
 核心标签?Core tag Liabry)
 I18N格式标签?I18N-capable formatting tag libary)
 SQL标签?SQL tag Libary)
 XML标签?XML tag Libary)
 函数标签?Functions tag Libary)

核心标签?Core tag Liabry)主要?基本输入输出Q流E控Ӟq代操作和URL操作?br /> ----------------------------------------------------------------------------
      分类            功能分类                 标签分类
                                                             out
                                                              set
                          表达式操作                   ?remove
                                                                   catch
  
     Core                                                      if
                                                                   choose
                           程控制                            when
                                                                       outherwise

                                                                    forEach
                              q代操作                      forTokens

                                                                       import
                                                                          param
                                                                       url
                                 URL操作                          param
                                                                     redirect
                                                                           param
------------------------------------------------------------------------------------------
在JSP中用JSTL中的标签库时Q必M?lt;%@taglib%>指oQƈ且设定prefix和uri的值得Q通常讑֮:
<%@taglib prefix="c" uri=">
q样可以用核心标{ֺ了?/p>

.表达式操?br /> 表达式操作分cM包含四个标签: <c:out>,<c:set>,<c:remove>?lt;c:catch>
<c:out>Q重要用来显C数据的内容Q类g<%=scripting-language%>。它的语法如?
语法1: 没有body内容
<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"]/>

语法2: 有body内容
<c:out value="value"  [escapeXml="{true|false}"]>
  default value
</c:out>

Attribute
-----------------------------------------------------------------------------------------------------------------------
 名称                      说明                                                               EL     cd     必须       默认?br />value                  需要显C的值                         ?                          Y      Object    是        ??br />default               如果valuegؓnull,则显Cdefault的值              ?  Y      Object    否        ??br />escapeXml        是否转换Ҏ字符Q如: <转换?amp;It                 Y      Object    否        ?true
----------------------------------------------------------------------------------------------------------------------
Null和错误说?br />假若value为null,会显Cdefault的|假若没有讑֮default的|则会昄一个空的字W串?/p>

<c:set>:主要用来把变量存储至JSP范围或是JavaBean的属性中?br />语法1: 没有body
value的值存储至范围为scope的varName变量之中
<c:set value="value" var="varName" [scope="{page|request|session|application}"]/>

语法2: 有body
body内容存储臌围ؓscope的varName变量之中
<c:set value="value" [scope="{page|request|session|application}"]>
  body.....
</c:set>

语法3: value的值存储至target对象属性中
<c:set value="value" target="target" property="propertyNmae"/>

语法4: body内容的数据存储至target对象属性中
<c:set target="target" property="propertyNmae">
 body....
</c:set>

Attribute
----------------------------------------------------------------------------------------
 名称                    说明                                              EL     cd      必须      默认?br />value             要被存储的值                                    ?Y      Object      否        ??br />var                Ʋ存入的变量名                                  N      String        否        ??br />scope            var变量的JSP范围                               N      String        否       ?page
target            ZJavaBean或java.util.Map对象        Y      Object       否        ??br />property        指定target对象属性                              Y      String        否        ??br />------------------------------------------------------------------------------------------
Null ?错误处理:
语法3和语?会生异帔R?有以下两U情?
 .target 为null
 .target 不是java.util.Map或JavaBean对象
假若value为null?由存储变量改ؓU除变量
 .语法1: 由var和scope所定义的变量,被U除
    .若scope已指定时Q则PageContext.removeAttribute(varName,scope);
    .若scope未指定时Q则PageContext.removeAttribute(varName);
 .语法3:
    .假若target为MapӞ则Map.remove(property);
    .假若target为JavaBeanӞpropertye指定的属性ؓnull
注意: var和scopeq两个属性不能用表辑ּ来表C,我们不能写成 scope="${ourScope}"或var="${a}"

<c:remove>:主要用来U除变量?br />语法:
<c:remove var="varName" [scope="{page|request|session|application}"]/>

Attribute
----------------------------------------------------------------------------------------
 名称                 说明                                     EL     cd     必须       默认?br /> var             Ʋ移除变量的名称                     N      String     是         ?   ?br /> scope           var变量的JSP范围                    N      String     否           ?page
----------------------------------------------------------------------------------------
说明:
<c:remove>必须要有var属性,卌被移除的属性名Uͼscope则可有可无,?
<c:remove var="username" scope="session"/>
username变量从session范围U除。若我们不设定scopeQ则<c:remove>会移除所有范围名UCؓusername
的数据?/p>

<c:catch>:主要用来处理产生错误的异常情况,q且信息保存v来?br />语法:
<c:catch [var="varName"]>
 ...Ʋ抓取错误的部分...
</c:catch>

Attribute
----------------------------------------------------------------------------------------
 名称                 说明                                           EL     cd     必须       默认?br /> var           用来存储错误信息的变量               ?N      String       否        ??br />-----------------------------------------------------------------------------------------
说明:
<c:catch>主要可能发生错误的部分攑֜<c:catch>?lt;/c:catch>之间。如果真的发生错误,可将错误
信息保存臛_量varName标量中,?
<c:catch var="message">
    //可能发生错误的部?br /></catch>
另外Q当错误发生<c:catch>?lt;/c:catch>之间Ӟ只有<c:catch>?lt;/c:catch>之间的程序会被中止忽
略,但整个网不会被中止?/p>

程控制
程控制分类中包含四个标{?<c:if>,<c:choose>,<c:when>?lt;c:otherwise>?/p>

<c:if>:的用途和我们在一般程序中写的if一栗?br />语法:
语法1Q没有body
<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>

语法2: 有body
<c:if test="testCondition" [var="varName"] [scope="{page|request|session|appliation}"]>
  ...body....
</c:if>

Attribute
------------------------------------------------------------------------------------------------------------------------
 名称                           说明                                                                           EL     cd        必须       默认?br />test                   如果表达式的l果为true则执行body,false则相反            ?Y      boolean       是        ? ?br />var                   用来存储testq算后的l果Q即true或false                           N     String          否       ?  ?br />scope               var变量的JSP范围                                                                  N     String          否      ?  page
------------------------------------------------------------------------------------------------------------------------
说明:
<c:if>标签必须要有test属性,body里除了能是静态文本之外可以是MJSP代码Q标{或HTML代码?/p>

<c:choose>:本n只当?lt;c:when>?lt;c:otherwise>的父标签?br />语法:
<c:choose>
  body(<when>?lt;otherwise>)
</c:choose>
限制:
<c:choose>的本地内容只能有:
 .I白
 .1或多?lt;c:when>
 .0或多?lt;c:otherwise>
?
<c:choose>

 <c:when test="${condition1}">
   condition1 ?true
 </c:when>

 <c:when test="${condition2}">
   condition2 ?true
 </c:when>

 <c:otherwise>
   condition1和conditon2都ؓfalse
 </<c:otherwise >
 
</c:choose>
说明:
在同一?lt;c:choose>中,假如所有的<c:when>的test都不为trueӞ则执?lt;c:otherwise>的本体内宏V?br />在同一?lt;c:choose>中,假若有好几个<c:when>都会trueӞ只能有一?lt;c:when>成立?/p>

q代操作
q代(Iterator)操作主要包含两个标签: <c:forEach>?lt;c:forTokens>?/p>

<c:forEach>为@环控Ӟ它可以将集合(Collection)中的成员循序览一遍。运做方式ؓ当条件符?br />Ӟ׃持箋重复执行<c:forEach>的body内容?br />语法:
语法1: q代一集合对象之所有成?br /><c:forEach [var="varName"] items="collection" [varStatus="varStatusName"]
           [begin="begin"] [end="end"] [step="step"]>
 ...body内容.....
<c:forEach>

语法2: q代指定的次?br /><c:forEach [var="varName"] [varStatus="varStatusName"]
           begin="begin" end="end" [step="step"]>
 ...body内容.....
<c:forEach>

Attribute
--------------------------------------------------------------------------------------------------------------------------
 名称                 说明                                                   EL     cd             必须       默认?br /> var          用来存放现在指到的成员                        ?N      String               否        ? ?/p>

                                                                                               Arrays
                                                                                              Collection
                                                                                               Iterator             否        ? ?br />items         被P代的集合对象                                    Y        Enumeration            
                                                                                               Map
                                                                                                String

varStatus     用来存放到指到的相关成员信息          N        String               否         ??br />begin           开始的位置                                             Y          int                    否        ? 0
end              l束的位|                                           ?Y          int                   否        ? 最后一个成?br />setp             每次q代的间隔数                                 Y          int                   否         ? 1
-------------------------------------------------------------------------------------------------------------------------
Null ?错误处理
.假若items为nullӞ则表CZؓ一I的集合对象
.假若begin大于或等于itemsӞ则P代不q算
注意:
varName的范围只存在<c:forEach>的本体中Q如果超Z本题Q则不能取得varName的倹{如:
<c:forEach items="${atts}" var="item">
</c:forEach>
${item}</br>
${item}则不会显Citem的内宏V?lt;c:forEach>除了支持数组之外Q还有标准的J2SE的结合类型,例如:
ArrayList,List,LinkedList,Vector,Stack和Set{等Q另外包括java.util.Mapcȝ对象Q例?
HashMap,Hashtable,Properties,Provider和Attributes?/p>

另外<c:forEach>q提供了varStatus属性,主要用来存放现在指到成员的相关信息。例如:我们写成
varStatus="s",那么׃把信息存攑ֈ名称为s的属性当中。varStatus属性还提供另外四个属?index,
count,fist和lastQ它们个自的意义如下:
------------------------------------------------------------------------------------------
   属性                  ?cd                                   意义
   index                   number                      现在指到成员的烦?br />   count                   number                      d指到成员的d
   first                     boolean                     现在指到成员是否为第一?br />   last                     boolean                     现在指到成员是否为最后一?br />-------------------------------------------------------------------------------------------
如下例子:
<
%@page contentType="text/html;charset=gb2312"%>
<%@taglib prefix="c" uri=">
<%
 String atts[] = new String[5];
 atts[0]="hello";
 atts[1]="this";
 atts[2]="is";
 atts[3]="a";
 atts[4]="girl";
 request.setAttritue("atts",atts);
%>
<c:forEach items="${atts}" var="item" varStatus="s">
<h2><c:out value="${item}"/>的四U属?gt;</h2>
 index: ${s.index}</br>
 count: ${s.count}</br>
 first: ${s.first}</br>
 last:  ${s.last}</br>
</c:forEach>

<c:forTokens>
<c:forTokens>:用来览一字符串中所有的成员Qv成员是由定义W号(delimiters)所分隔的?br />语法:
<c:forTokens items="stringFoTokens" delims="delimmmmiters" [var="varName"]
             [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
 ...body内容....
</c:forTokens>

Attribute
--------------------------------------------------------------------------------------------------------------------
 名称                                    说明                                               EL     cd      必须       默认?br /> var                   用来存放现在指到的成员                           ?   Y      String       否        ??br /> items                被P代的字符串                                            ?  Y      String       是        ??br /> delims              定义用来分割字符串的字符                            N      String       是        ??br /> varStatus          用来存放现在指到的相x员信息            ?  N      String       否        ??br /> begin               开始的位置                                                         Y       int           否        ? 0
 end                 l束的位|                                                        ?Y       int          否         ?最后一个成?br /> step                每次q代间隔敊W                                             ?  Y       int           否         ?1
---------------------------------------------------------------------------------------------------------------------
限制:
.假若有begin属性时Qbegin必须大于{于0
.假若有end属性时Q必d于begin
.假若有step属性时Qstep必须大于{于1

Null ?错误处理
.假如itmes为null?则表CZؓ有空的集合对?br />.假若begin大于{于items的大时Q则q代不运?/p>

例子:
<c:forToken items="A,B,C,D,E,F,G" delims="," var="item>
${item}
</c:forToken>
items属性也可以用ELQ例?
<%
 String phonenumber="123-456-7899";
 request.setAttribute("userPhone",phonenumber);
%>
<c:forTokens items="${userPhone}" delims="-" var="item">
${item}
</c:forTokens>

URL操作
JSTL包含三个URL操作有关的标{?分别? <c:import>,<c:redirect>?lt;c:url>。它们的主要功能是:
用来其他文件的内容包含hQ网늚向导Q还有url的生?/p>

多力宇扬 2006-07-04 13:47 发表评论
]]>
应聘JavaW试时可能出现问?/title><link>http://www.aygfsteel.com/dorydoo/archive/2006/07/04/56441.html</link><dc:creator>多力宇扬</dc:creator><author>多力宇扬</author><pubDate>Tue, 04 Jul 2006 00:02:00 GMT</pubDate><guid>http://www.aygfsteel.com/dorydoo/archive/2006/07/04/56441.html</guid><wfw:comment>http://www.aygfsteel.com/dorydoo/comments/56441.html</wfw:comment><comments>http://www.aygfsteel.com/dorydoo/archive/2006/07/04/56441.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/dorydoo/comments/commentRss/56441.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/dorydoo/services/trackbacks/56441.html</trackback:ping><description><![CDATA[ <p>应聘JavaW试时可能出现问?br />Java基础斚w: <br />1、作用域public,private,protected,以及不写时的区别 <br />Public、Protected、Private是成员访问修饰符Q?br />final、abstract、transient、synchronized、native、strictfp是非讉K成员修饰W?br />可见性PublicProtectedDefaultPrivate<br />同一个类是是是是<br />同一个包中的cL是是?br />同一个包中的子类是是是否<br />同一包外的子cL是否?br />同一包外的非子类是否否否</p> <p>Java的基本包<br />java.lang 其中包含有:<br />接口QComparable、Cloneable、Runable{?br />c:八个基本数据cd装cRMath、Runtime、Object、String、StringBuffer、Thread、Exception{?/p> <p>集合框架<br />集合是将多个元素l成一个单元的对象。集合用于存储、检索和操纵数据?br />集合框架提供理对象集合的接口和cR它包含几个lgQ接口是表示集合的抽象数据类型,用于操纵集合Q类是用于存储集合的实际数据对象Q算法是用于操纵集合的?/p> <p>2、ArrayList和Vector的区?HashMap和Hashtable的区?<br />{:ArrayList与Vector主要从二斚w来说. <br />一.同步?Vector是线E安全的Q也是说是同步的,而ArrayList是线E序不安全的Q不是同步的 <br />?数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一?</p> <p>ArrayList,Vector, LinkedList的存储性能和特?br />ArrayList和Vector都是使用数组方式存储数据Q此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素Q但是插入元素要涉及数组元素Ud{内存操作,所以烦引数据快而插入数据慢QVector׃使用了synchronizedҎQ线E安全)Q通常性能上较ArrayList差,而LinkedList使用双向链表实现存储Q按序号索引数据需要进行前向或后向遍历Q但是插入数据时只需要记录本的前后即可,所以插入速度较快?/p> <p>HashMap与HashTable主要从三斚w来说.<br />一.历史原因:Hashtable是基于陈旧的DictionarycȝQHashMap是Java 1.2引进的Map接口的一实现 <br />?同步?Hashtable是线E安全的Q也是说是同步的,而HashMap是线E序不安全的Q不是同步的 <br />?|只有HashMap允许在一个集合中有一个null键和在一个集合中有多个null?/p> <p>Hashtable是HashMap的同步版本;HashMap允许有null值和一个null键,但是QHashtable不允许有M内容为null</p> <p>Hashtablecȝ对象必须覆盖ObjectcȝhashCode()和equals()Ҏ</p> <p>关于其他集合cdQ?br />一.ArrayList 提供快速遍历和快速访问。现在设计了新的 RandomAccess 接口Q它指出q种列表支持快速随问。Vector也实CRandomAccess 接口?br />?遍历HashSet与HashMapӞ光序是未知的(但添加删除快Q。LinkedHashSet和LinkedHashSet是按照元素的插入的顺序遍历的Q遍历快Q?br />三.TreeSet和TreeMap保证元素按照元素的自然序q行排列。也可以使用一个用戯己实现的比较规则?br />四、HashSet有一个散列表支持它。它为基本操作提供固定时间性能。TreeSet它确保了排序集将按元素升序,Ҏ自然序排序?/p> <p>Dictionaryc?br />主要用于关键字转换成|该类接收一个关键字q返回一个倹{Dictionary是一个抽象类Q它是H<br />Hashtable的超cR?br />Propertiesc?br />扩展了Hashtablec,但Properties对象的关键字和值必LStringcdQƈ能将对象写入一个输出流q保存在一个文件中Q然后可以把它读回一个输入流?/p> <p> <br />如果需要维护和搜烦一个部件列表,它们由唯一的字母数字序列号标示Q其中的部g是PartcdQ这时应该用哪U集合?如果我们改变需求,你也需要能够按序、按它们的序列号打印出部Ӟ<br />1、应该选择HashMap<br />2、应该选择TreeMap</p> <p>3、char型变量中能不能存贮一个中文汉?Z? <br />{:是能够定义成Z个中文的Q因为java中以unicode~码Q一个char?6个字节,所以放一个中文是没问题的 </p> <p>4、多U程有几U实现方?都是什?同步有几U实现方?都是什? <br />{:多线E有两种实现ҎQ分别是l承ThreadcM实现Runnable接口 <br />同步的实现方面有两种Q分别是synchronized,wait与notify </p> <p>GC是什? Z么要有GC? <br />GC是垃圾收集的意思(Gabage CollectionQ?内存处理是编Eh员容易出现问题的地方Q忘记或者错误的内存回收会导致程序或pȝ的不E_甚至崩溃QJava提供的GC功能可以自动监测对象是否过作用域从而达到自动回收内存的目的QJava语言没有提供释放已分配内存的昄操作Ҏ?/p> <p>7、垃圑֛收机?如何优化E序? <br />当一个对象失d用或者离开了作用域后,成为垃圾而被Javaq行环境自动清除Q清除垃圑ְ是清除这些对象?br />Java垃圾回收机制的特ҎQ?br />1、垃圑֛收机制自动运行。系l提供一个低优先U的U程来跟t内存的分配情况。如果发现某个内存单元不再用,清除它?br />2、何时清除垃圾是不可预期的?br />3、垃圑֛收机刉JVM的不同而不同?/p> <p>Java的垃圾搜索器为内存管理器提供一U自动解x案。缺Ҏ不能完全控制它什么时候执行以及什么时候不执行?br />当垃圾搜集器q行Ӟ其目的是查找和删除不能被讉K的对象?br />垃圾搜集器受JVM控制QJVM军_什么时候运行垃圾搜集器。从JavaE序内可以请求JVMq行垃圾搜集器,但是Q在M情况下都无法保证JVM会答应你的请求。JVM通常会在它感到内存减时q行垃圾搜集器?br />垃圾攉器运行时Q当它发C个对象不能被MzȝE访问时Q它认对象W合删除条gQ它可能在某时删除该对象?br />垃圾攉器不能保证有_的内存,它只能保证可以用的内存尽可能被有效的理?br />使对象符合垃圾搜集器搜烦条g的情冉|Q出现空引用、重Cؓ引用变量赋倹{隔d用?/p> <p>强制执行垃圾搜集Q?br />Runtime对象为直接与虚拟机通信提供一U机制。Systemcd以调用与其相同的Ҏ?br />h垃圾攉器的最单的Ҏ是:System.gc();</p> <p>Javac~译选项Q?br />G产生调试信息<br />g:none不生调试信?br />verbose输出~译器消息,可以知道E序~译时用C哪些Javac?br />Noware~译时不产生警告信息<br />encoding指出原文件的~码方式<br />D指定cL件生的目录<br />classPath指出用户class文g的\?br />sourcePath指出用户源文件\?/p> <p>9、介lJAVA中的Collection FrameWork(包括如何写自q数据l构)? <br />{:Collection FrameWork如下Q?<br />核心接口有:<br />CollectionSetSorted Set<br />ListMapSorted Map</p> <p>Set接口Q不允许重复的元素。它对add、equals、hashCodeҎ增加了限?br />SortedSet接口Q扩展了Set接口Q此接口的元素按升序排序?br />List接口Q一些集合具有顺序,卛_一个项目后d另一个项目。列表可以有重复元素。提供了ListIteratorQ允许向前或向后Ud元素?br />Map接口Q将键映到值得对象。Map不能包含重复键,但可以包含重复倹{每个键最多都只能映射C个倹{?/p> <p>核心设计c:<br />Map 设计Set 设计List 设计<br />HashMapHashSetArrayList<br />HashtableLinkedHashSetVector<br />TreeMapTreeSetLinkedLisk<br />LinkedHasMap</p> <p>散列表是最快的数据存储l构Q它是一个数l。数据存储在数组中散列函数指定的特定下标。散列函数是一l输入数据和一l整C间的映射?/p> <p>集合cd接口层次</p> <p>Collections是一个类Q带有用于处理集合的静态实用方?br />Collection是一个接口,带有多数集合常用的方法声明,包括add、remove、contains、size、iterator</p> <p>Collection是最基本的集合接口,一个Collection代表一lObjectQ即Collection的元素(ElementsQ?<br />Map提供key到value的映?</p> <p>集合框架的优点:<br />提供一l可用的集合接口Q可以方便地扩展或改写集合;<br />接口和算法的可重用性提高了软g的可重用性;<br />提供了有效的数据l构和算法,减少了编E工作?/p> <p>10、Java中异常处理机Ӟ事g机制Q?<br />事g代表了组件之间的交互。是一U在源对象和监听对象之间Q某U状态发生变化的传递机制?br />通过事g处理机制Q可以让一些组件作Z件源Q发出可被组件环境或其它lg接收的事件。这P不同的组件就可以l合在一Plg之间通过事g传递进行通信Q构成一个应用?br />在java中实C件机制的事g模型׃个部分构成:一个事件对象用于描qC件源的状态变化;一个事件源会产生事gQ提供注册的事g监听器的ҎQ把事g发送到监听器;事g监听器接收事仉知Q实现该事g的监听器接口?/p> <p>异常实际上是E序中错误导致中断了正常的指令流的一U事?<br />Java异常处理用于在方法中能检查出错误但不能处理错误的情况Q在q样的方法中抛Z个异常。如果一个异怸某个catchE序块中的参数匹配,那么执行该catch块中的代码。指出try catch finally的工作顺序?/p> <p>q行时异怸一般异常有何异同?<br />异常表示E序q行q程中可能出现的非正常状态,q行时异常表C拟机的通常操作中可能遇到的异常Q是一U常见运行错误。java~译器要求方法必d明抛出可能发生的非运行时异常Q但是ƈ不要求必d明抛出未被捕Lq行时异常?/p> <p>事g有哪些?</p> <p>什么是断言机制Q?br />断言从JDK1.4版开始引入,它让开发期间测试假设,而没有付Zؓ异常~写异常处理E序斚w的代P一旦程序完成开发,q全部部|Ԍ假设从不会发生?br />主要作用Q因为在开发时对自q假设非常肯定Q所以不惌Ҏ间来~写异常处理代码。断a让在开发期间测试你的假设?br />private void methodQint numQ{<br />assert(num>=0Q?//q里假定参数num是正敎ͼ如果不是真的抛Z个AssertionError错误<br />useNum(num+x);<br />}<br />断言有两UŞ式:单和非常单?br />非常单:<br />private void doStuffQ){<br />assert(y>x);<br />//其他代码<br />}<br />单:<br />通过表达式的值向错误跟踪栈中d更多信息Q提供了更多调式帮助信息?br />private void doStuffQ){<br />assert(y>x):”y is ?y+?x is?x;<br />//其他代码<br />}<br />q行时启用断aQ?br />java –ea com.geeksanonymous.TestClass</p> <p>q行时禁用断aQ?br />java –da com.geeksanonymous.TestClass</p> <p>11、JAVA中的多Ş与承? <br />希望大家补上Q谢?</p> <p>对象是定义了边界的、与要解决的问题有关的概忉|事物。它们用于帮助理解现实世界?br />cL拥有相同Ҏ、共同的行ؓ和共同的关系的一l对象?br />装是让开发者有选择地隐藏类中的Ҏ和Ҏ的过E?br />l承是允讔R过重用现有cL构徏新类的特性。]<br />多态性用同一函数在不同的cMh不同的行为。Java中的多态性是通过Ҏ的动态绑定实现的?/p> <p>12、抽象类与接口? <br />{:抽象cM接口都用于抽象,但是抽象c?JAVA?可以有自q部分实现Q而接口则完全是一个标?同时有多重承的功能)?</p> <p>abstract的method是否可同时是static,是否可同时是nativeQ是否可同时是synchronized? 都不?/p> <p>接口是否可承接? 抽象cL否可实现(implements)接口? 抽象cL否可l承实体c?concrete class)?<br />接口可以l承接口。抽象类可以实现(implements)接口Q抽象类可承实体类Q但前提是实体类必须有明的构造函数?/p> <p>Anonymous Inner Class (匿名内部c? 是否可以extends(l承)其它c,是否可以implements(实现)interface(接口)? <br />可以l承其他cL完成其他接口Q在swing~程中常用此方式?/p> <p>IO?br />字节:数据在存储时与传输时都是以字节ؓ单位q行的。通常用于d二进制数据,如图像和声音文g?br />字符:数据在存储与传输旉是以字符为单位进行的?/p> <p>:Ҏ据源的一U抽象,其目的是想用l一的方式访问各U不同的数据源(文g、网l、内存的~冲区)</p> <p>文gd的基本类QFilecL供定位本地文件系l,描述文g和目录的功能?/p> <p>道用于在U程之间通信QPipedInputStream、PipedOutputStream、PipedReader、PipedWriter<br />U程1àPipedOutputStreamàPipedInputStreamàU程2</p> <p>键盘输入Q?br />try{<br />BufferedReader br=new BufferedReader(new InputStreamReader(System.in));<br />String s=br.readLine();<br />System.out.println(s);<br />}catch(Exception e){<br />}</p> <p>文g输入输出Q?br />try{<br />File f=new File("test.txt");<br />FileOutputStream fout=new FileOutputStream(f);<br />fout.write(System.in.read());<br />fout.close();<br />FileInputStream fin=new FileInputStream(f);<br />int size=fin.available();<br />for(int i=0;i<size;i++){<br />System.out.print((char)fin.read());<br />}<br />fin.close();<br />}catch(Exception e){<br />}</p> <p>通过|络传输文gQ?br />客户端:<br />File f=new File("bk.exe");<br />FileInputStream fin=new FileInputStream(f);<br />Socket st=new Socket("localhost",6000);<br />BufferedOutputStream bout=new BufferedOutputStream(st.getOutputStream());<br />int size=fin.available();<br />for(int i=0;i<size;i++){<br />bout.write(fin.read());<br />}<br />服务器端Q?br />ServerSocket server=new ServerSocket(6000);<br />Socket st=server.accept();<br />File f=new File("kk.exe");<br />BufferedInputStream bin=new BufferedInputStream(st.getInputStream());<br />FileOutputStream fout=new FileOutputStream(f);<br />int i=0;<br />while(i!=-1){<br />i=bin.read();<br />fout.write(i);<br />}</p> <p>串行化的注意事项以及如何实现串行?br />对象的寿命通常随着生成该对象的E序的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这U能记录自己的状态以便将来再生的能力Q叫做对象的持箋?persistence)。对象通过写出描述自己状态的数值来记录自己Q这个过E叫对象的串行化(Serialization)?br />序列化的q程是对象写入字节和从字节流中读取对象。将对象状态{换成字节之后,可以用java.io包中的各U字节流cd其保存到文g中,道到另一U程中或通过|络q接对象数据发送到另一L?br />一Q对象序列化可以实现分布式对象?br />二:java对象序列化不仅保留一个对象的数据Q而且递归保存对象引用的每个对象的数据?br />// 序列?today's date C个文件中.<br />   FileOutputStream f = new FileOutputStream("tmp");<br />   ObjectOutputStream s = new ObjectOutputStream(f);<br />   s.writeObject("Today");<br />   s.writeObject(new Date());<br />   s.flush();<br />//从文件中反序列化 string 对象?date 对象<br />   FileInputStream in = new FileInputStream("tmp");<br />   ObjectInputStream s = new ObjectInputStream(in);<br />   String today = (String)s.readObject();<br />   Date date = (Date)s.readObject();<br />CQ对象流不序列化static或transient?br />序列化通常可以自动完成Q但有时可能要对q个q程q行控制。java可以类声明为serializableQ但仍可手工控制声明为static或transient的数据成员?br />如果一个类要完全负责自q序列化,则实现Externalizable接口而不是Serializable接口。Externalizable接口定义包括两个ҎwriteExternal()与readExternal()。利用这些方法可以控制对象数据成员如何写入字节流</p> <p>NIO的特?br />l旧的I/O是以字节为单位进行读写的Q而新的I/O是以块ؓ单位q行d?br />l以新的Channel抽象cL配合节点c?br />l使用Buffer的概忉|q行基本数据cd的存?br />l增加更多字节~码的支?br />l内存映像及数据锁定的支持<br />l提供非阻塞的存取机制<br />l提供正则表达式式的验证机?/p> <p> <br />import java.io.*;<br />import java.nio.*;<br />import java.nio.channels.*;<br />import java.nio.channels.spi.*;<br />import java.net.*;<br />import java.util.*; </p> <p>class NBTest {<br />NBTest(){}<br />public void startServer() throws Exception{<br />int channels = 0;<br />int nKeys = 0;<br />int currentSelector = 0;<br />Selector selector = Selector.open();</p> <p>//建立Channel q绑定到9000端口<br />ServerSocketChannel ssc = ServerSocketChannel.open();<br />InetSocketAddress address = new InetSocketAddress(InetAddress.getLocalHost(),9000); <br />ssc.socket().bind(address);</p> <p>//使设定non-blocking的方式?br />ssc.configureBlocking(false);</p> <p>//向Selector注册Channel及我们有兴趣的事?br />SelectionKey s = ssc.register(selector, SelectionKey.OP_ACCEPT);<br />printKeyInfo(s);</p> <p>while(true) //不断的轮?br />{<br />debug("NBTest: Starting select");<br />//Selector通过selectҎ通知我们我们感兴的事g发生了?br />nKeys = selector.select();<br />//如果有我们注册的事情发生了,它的传回值就会大?<br />if(nKeys > 0){<br />debug("NBTest: Number of keys after select operation: " +nKeys);<br />//Selector传回一lSelectionKeys<br />//我们从这些key中的channel()Ҏ中取得我们刚刚注册的channel?br />Set selectedKeys = selector.selectedKeys();<br />Iterator i = selectedKeys.iterator();<br />while(i.hasNext()){<br />s = (SelectionKey) i.next();<br />printKeyInfo(s);<br />debug("NBTest: Nr Keys in selector: " +selector.keys().size());</p> <p>//一个key被处理完成后Q就都被从就l关键字Qready keysQ列表中除去<br />i.remove();<br />if(s.isAcceptable()){<br />// 从channel()中取得我们刚刚注册的channel?br />Socket socket = ((ServerSocketChannel)s.channel()).accept().socket();<br />SocketChannel sc = socket.getChannel();<br />sc.configureBlocking(false);<br />sc.register(selector, SelectionKey.OP_READ |SelectionKey.OP_WRITE);<br />System.out.println(++channels);<br />}else{<br />debug("NBTest: Channel not acceptable");<br />}<br />}<br />}else{<br />debug("NBTest: Select finished without any keys.");<br />}<br />}<br />}</p> <p>private static void debug(String s){<br />System.out.println(s);<br />}</p> <p>private static void printKeyInfo(SelectionKey sk)<br />{<br />String s = new String();<br />s = "Att: " + (sk.attachment() == null ? "no" : "yes");<br />s += ", Read: " + sk.isReadable();<br />s += ", Acpt: " + sk.isAcceptable();<br />s += ", Cnct: " + sk.isConnectable();<br />s += ", Wrt: " + sk.isWritable();<br />s += ", Valid: " + sk.isValid();<br />s += ", Ops: " + sk.interestOps();<br />debug(s);<br />}</p> <p>public static void main (String args[])<br />{<br />NBTest nbTest = new NBTest();<br />try{<br />nbTest.startServer();<br />}catch(Exception e){<br />e.printStackTrace();<br />}<br />}<br />}</p> <p>Socket通信(TCP、UDP区别及Java实现方式)<br />套接字是一U进E间的数据交换机制。客L和服务器通过套接字徏立连接和q行通信。套接字是由IP地址、传输协议和一个端口号三部分组成的?br />TCP/IP协议Q其中TCP Z输控制协议是传输层协议,<br />功能TCPUDP<br />数据传输q箋的有序数据流消息传输<br />多\功能接收LҎ端口号决定数据流向那个应用相?br />可靠传输使用TCP头部的序列与认字段q行数据认?br />量控制使用H口机制的流量控制无<br />q接使用3ơ握手徏立连接;q接后一直保持连接直到终止连接无q接</p> <p>URL的组Ӟ协议、IP地址或主机名、端口号和实际文件\?/p> <p>import java.net.*;<br />import java.io.*;</p> <p>public class DatagramServer{<br />public static DatagramSocket ds;<br />public static int clientport=1089,serverport=1090;<br />public static void main(String args[]) throws Exception{<br />byte buffer[]=new byte[1024];<br />ds=new DatagramSocket(serverport);<br />BufferedReader dis=new BufferedReader(new InputStreamReader(System.in));<br />System.out.println("服务器正{待输入");<br />InetAddress ia=InetAddress.getByName("localhost");<br />while(true){<br />String str=dis.readLine();<br />if(str==null||str.equals("end")){<br />break;<br />}<br />buffer=str.getBytes();<br />ds.send(new DatagramPacket(buffer,str.length(),ia,clientport));<br />}<br />}<br />}</p> <p>import java.net.*;<br />import java.io.*;</p> <p>public class DatagramClient{<br />public static DatagramSocket ds;<br />public static byte buffer[]=new byte[1024];<br />public static int clientport=1089,serverport=1090;<br />public static void main(String args[]) throws Exception{<br />ds=new DatagramSocket(clientport);<br />System.out.println("客户端正在等待服务器发送数?);<br />while(true){<br />DatagramPacket p=new DatagramPacket(buffer,buffer.length);<br />ds.receive(p);<br />String psx=new String(p.getData(),0,p.getLength());<br />System.out.println(psx);<br />}<br />}<br />}</p> <p>13、Java 的通信~程Q编E题(或问{?Q用JAVA SOCKET~程Q读服务器几个字W,再写入本地显C? <br />{?Server端程? <br />package test; <br />import java.net.*; <br />import java.io.*; </p> <p>public class Server { <br />private ServerSocket ss; <br />private Socket socket; <br />private BufferedReader in; <br />private PrintWriter out; <br />public Server() { <br />try { <br />ss=new ServerSocket(10000); <br />while(true) { <br />socket = ss.accept(); <br />String RemoteIP = socket.getInetAddress().getHostAddress(); <br />String RemotePort = ":"+socket.getLocalPort(); <br />System.out.println("A client come in!IP:"+RemoteIP+RemotePort); <br />in = new BufferedReader(new InputStreamReader(socket.getInputStream())); <br />String line = in.readLine(); <br />System.out.println("Cleint send is :" + line); <br />out = new PrintWriter(socket.getOutputStream(),true); <br />out.println("Your Message Received!"); <br />out.close(); <br />in.close(); <br />socket.close(); <br />} <br />}catch (IOException e) { <br />out.println("wrong"); <br />} <br />} <br />public static void main(String[] args) { <br />new Server(); <br />} <br />}; </p> <p>Client端程? <br />package test; <br />import java.io.*; <br />import java.net.*; </p> <p>public class Client { <br />Socket socket; <br />BufferedReader in; <br />PrintWriter out; <br />public Client() { <br />try { <br />System.out.println("Try to Connect to 127.0.0.1:10000"); <br />socket = new Socket("127.0.0.1",10000); <br />System.out.println("The Server Connected!"); <br />System.out.println("Please enter some Character:"); <br />BufferedReader line = new BufferedReader(new </p> <p>InputStreamReader(System.in)); <br />out = new PrintWriter(socket.getOutputStream(),true); <br />out.println(line.readLine()); <br />in = new BufferedReader(new InputStreamReader(socket.getInputStream())); <br />System.out.println(in.readLine()); <br />out.close(); <br />in.close(); <br />socket.close(); <br />}catch(IOException e) { <br />out.println("Wrong"); <br />} <br />} <br />public static void main(String[] args) { <br />new Client(); <br />} <br />}; </p> <p>常见排序法:<br />public class Sort{<br />public static int count=0;<br />public boolean LT(int num1,int num2){<br />return num1<num2;<br />}<br />public void output(int[] array){<br />System.out.print("W?+count+"ơ排序:");<br />for(int i=0;i<array.length;i++)<br />System.out.print(array[i]+"    ");<br />System.out.println();<br />}</p> <p>//冒排序?br />public void BubbleSort(int[] array){<br />boolean swap=true;<br />int index=0;</p> <p>int i=0;<br />while(i<array.length-1){<br />int temp=array[i];<br />for(int j=i;j<array.length;j++){<br />if(!LT(array[i],array[j])){<br />int temp2=array[i];<br />array[i]=array[j];<br />array[j]=temp2;<br />swap=true;<br />index=j;<br />}else{<br />swap=false;<br />}<br />}<br />i++;<br />if(swap){<br />array[i]=array[index];<br />array[index]=temp;<br />i++;<br />}<br />output(array);<br />}<br />}</p> <p>//直接插入排序?br />public void InsertSort(int[] array){<br />for(int i=1;i<array.length;++i){<br />if (LT(array[i],array[i-1])){<br />int temp=array[i];<br />array[i]=array[i-1];<br />array[i-1]=temp;<br />for(int j=i-1;j>0;--j){<br />if(LT(array[j],array[j-1])){<br />array[j]=array[j-1];<br />array[j-1]=temp;<br />}else{<br />break;<br />}<br />}<br />output(array);<br />}<br />}<br />}</p> <p>//快速排序法<br />private int Partition(int array[],int low,int high){<br />int temp=array[low];<br />int pivotkey=array[low];<br />while(low<high){<br />while(low<high&&array[high]>pivotkey)--high;<br />array[low]=array[high];<br />while(low<high&&array[low]<=pivotkey)++low;<br />array[high]=array[low];<br />}<br />array[low]=temp;<br />output(array);<br />return low;<br />}</p> <p>public void QSort(int array[],int low,int high){<br />if(low<high){<br />int pivotloc=Partition(array,low,high);<br />QSort(array,low,pivotloc-1);<br />QSort(array,pivotloc+1,high);<br />}<br />}</p> <p>void QuickSort(int array[]){<br />QSort(array,0,array.length-1);<br />}<br />public static void main(String args[]){<br />int array[]={49,38,65,97,76,13,27,49};<br />Sort sort=new Sort();</p> <p>System.out.println("===================================");<br />sort.output(array);<br />System.out.println("优化冒排序?);<br />sort.BubbleSort(array);</p> <p>System.out.println();<br />System.out.println("===================================");<br />array=new int[]{49,38,65,97,76,13,27,49};<br />sort.output(array);<br />System.out.println("直接插入排序?);<br />sort.InsertSort(array);</p> <p>System.out.println();<br />System.out.println("===================================");<br />array=new int[]{49,38,65,97,76,13,27,49};<br />sort.output(array);<br />System.out.println("快速排序法");<br />sort.QuickSort(array);<br />}<br />}</p> <p>14、如在COLLECTION框架中,实现比较要实C么样的接口? <br />Collection框架中实现比较要实现Comparable 接口?Comparator 接口 </p> <p>什么是U程Q?br />U程与进E相|是一D完成某个特定功能的代码Q是E序中单个顺序的控Ӟ但与q程不同的是Q同cȝ多个U程是共享一块内存空间和一l系l资源,而线E本w的数据通常只有微处理器的寄存器数据Q以及一个供E序执行时用的堆栈。所以系l在产生一个线E,或者在各个U程之间切换Ӟ负担要比q程的多,正因如此Q线E被UCؓ轻负药E(light-weight processQ。一个进E中可以包含多个U程?/p> <p>  一个线E是一个程序内部的序控制?br />  1. q程Q每个进E都有独立的代码和数据空_q程上下文) Q进E切换的开销大?<br />  2. U程Q轻量的q程Q同一cȝE共享代码和数据I间Q每个线E有独立的运行栈和程序计数器QPCQ,U程切换的开销?<br />  3. 多进E:在操作系l中Q能同时q行多个dE序?<br />4. 多线E:在同一应用E序中,有多个顺序流同时执行?/p> <p>同步和异步有和异同,在什么情况下分别使用他们Q?br />临界资源问题<br />U程都是独立的,而且异步执行Q也是说每个线E都包含了运行时所需要的数据或方法,而不需要外部的资源或方法,也不必关心其它线E的状态或行ؓ。但是经常有一些同时运行的U程需要共享数据,此时需考虑其他U程的状态和行ؓQ否则就不能保证E序的运行结果的正确性?br />我们需要做的是允许一个线E彻底完成其d后,再允怸一个线E执行。必M证一个共享的资源一ơ只能被一个线E用。实现此目的的过E称为同步?br />同步是用于确保资源一ơ只能被一个线E用的q程?br />同步对于单线E程序没有Q何好处。用同步比非同步的性能差三到四倍?/p> <p>U程Ҏ介绍Q?br />构造函敎ͼ<br />Thread()<br />Thread(Runable targetQ?br />Thread(Runable targetQString nameQ?br />Thread(ThreadGroup group,Runable targetQ?br />Thread(ThreadGroup group,Runable target,String nameQ?br />Thread(ThreadGroup group,String nameQ?/p> <p>用于完成一个线E“实际功能”的代码攑֜runҎ中。RunҎ可以在Thread的子cM重写Q也可以在Runable对象中重写?/p> <p>一旦线E死去,它就永远不能再重新启动,否则会抛出异常。用startҎ启动一个已l启动的U程也会抛出异常?/p> <p>isAlive、interrupt、Thread.currentThread、suspend、resume、stop</p> <p>SleepҎ可以使低优先U的U程得到执行的机会,YieldҎ只能使同优先U的U程有执行的Z。JoinҎ能够使调用该Ҏ的线E在此之前执行完毕,在该Ҏ之后Q调用joinҎ的线E不会生输ZQ?/p> <p> <br />Wait与notify使用Ӟ需要注意的事项Q?br />它们只能用于synchronized同步块中Q?br />它们需要配对用;<br />Wait一般出现在一个while循环中,while语句使用一个boolean标志控制?/p> <p>死锁<br />当被锁定的A对象试图讉K另一个被锁定的B对象QB对象同时又要讉K已被锁定的A对象。这样导致两个线E都在等待另一个线E释放资源,q样出C死锁?/p> <p>16、JAVA多线E编E?用JAVA写一个多U程E序Q如写四个线E,二个?Q二个对一个变量减一Q输出?<br />希望大家补上Q谢?</p> <p>17、STRING与STRINGBUFFER的区别?<br />{:STRING的长度是不可变的QSTRINGBUFFER的长度是可变的。如果你对字W串中的内容l常q行操作Q特别是内容要修ҎQ那么用StringBufferQ如果最后需要StringQ那么用StringBuffer的toString()Ҏ </p> <p>String s = new String("xyz");创徏了几个String Object? 两个</p> <p>JDBC调用数据库的基本步骤</p> <p>Weblogic Server中的JDBC配置<br />1、徏立到指定数据库的q接池Connection Pool<br />2、徏立基于该q接池的数据源DataSource<br />3、访问数据库旉过数据源的JNDI名字查找到该数据源,然后通过数据源获得数据库q接对象。得到该对象后就可以依次生成数据库语句对象和l果集对象,q行相应的数据库操作?/p> <p>import java.sql.*;<br />import javax.naming.*;<br />import javax.sql.*;<br />import java.util.*;<br />import javax.rmi.*;</p> <p>public class DataSourceTest{<br />private static Context getInitialContext() throws Exception{<br />String url="t3://localhost:7001";<br />String user="system";<br />String password="11111111";<br />Properties properties=null;</p> <p>try{<br />properties=new Properties();<br />properties.put(Context.INITIAL_CONTEXT_FACTORY,<br />"weblogic.jndi.WLInitialContextFactory");<br />properties.put(Context.PROVIDER_URL,url);</p> <p>if(user!=null){<br />properties.put(Context.SECURITY_PRINCIPAL,user);<br />properties.put(Context.SECURITY_CREDENTIALS,<br />password==null?"":password);<br />}</p> <p>return new InitialContext(properties);<br />}catch(Exception e){<br />throw e;<br />}<br />}</p> <p>public static void main(String args[]){<br />UserTransaction tx=null;<br />DataSource ds=null;<br />Context ctx=null;<br />Connection myConn=null;</p> <p>try{<br />ctx=getInitialContext();</p> <p>tx=(UserTranscation)ctx.lookup("javax.transcation.UserTranscation");<br />tx.begin();</p> <p>ds=(DataSource)ctx.lookup("myTxDataSource");<br />}catch(Exception e){<br />e.printStackTrace();<br />}</p> <p>Statement myStatement=null;<br />ResultSet myResultSet=null;</p> <p>try{<br />myConn=ds.getConnection();<br />myStatement=myConn.createStatement();<br />myResultSet=myStatement.executeQuery(<br />"select fullname from employee");</p> <p>while(myResultSet.next()){<br />System.out.println(myResultSet.getString("fullname"));<br />}</p> <p>tx.commit();<br />}catch(Exception e){<br />try{<br />tx.rollback();<br />}catch(Exception e){<br />}<br />}finally{<br />myStatement.close();<br />myConn.close();<br />}<br />}<br />}</p> <p>JavaMail发邮件的步骤Q?br />Properties props=System.getProperties();<br />props.put(“mail.smtp.host??******?; //讄相关的属?br />try{<br />    //创徏一个会话对?br />    Session session=Session.getDefaultInstance(props,null);<br />    //创徏一个消息对?br />    MimeMessage message=new MimeMessage(session);<br />    message.setText(?****?; //发送文本格式的邮g<br />    message.setSubject(?****?;<br />    message.setFrom(?****?;<br />    message.addRecipient(Message.RecipientType.To,<br />                        new InternetAddress(?*****?);<br />   //使用传送类的sendҎ发送消?br />   Transport.send(message);<br />}catch(MessagingException me){<br />          me.printStackTrace();}</p> <p>解析XML文g的几U方式和区别<br />XML解析器用的两种基本API?<br />文档对象模型DOMQ一U基于树l构的API。它定义了一ljava接口Q用于创建、访问和操纵XML文档的内部结构。它是基于对象。整个XML文档被作为对象体pȝ构排列进行解析和存储Q应用程序可以随问这些对象?br />DOM主要用于Q在l构上修改XML文档Ӟ在内存中与其他应用程序共享文档时?/p> <p>SAX提供一U用于解析XML文档的事仉动模型,使用SAX接口的XML处理器ƈ不创建数据结构,而是扫描输入的XML文档Qƈ生成元素开始、元素结束等事gQ在发生事gӞ解析器会通知应用E序?br />SAX优点Q在解析大型文档Ӟ不必整个文件加载到内存中,因此占有的内存比DOM。在只需要一个信息子集时QSAX忽略不需要的数据Q而DOM无法做到q点?br />SAX的缺ҎQ必L到达序处理数据Q不能对文档q行随即讉K。SAX是只ȝQ它是设计来dXML文档而不是写入的。文档只能遍历一ơ?/p> <p>使用DOM API查找XML文档中的元素和属?br />import org.w3c.dom.*;<br />import javax.xml.parsers.*;<br />import java.io.*;<br />import java.net.URL;</p> <p>public class BookDetails{<br />public BookDetails(String filename){<br />Document doc=null;<br />try{<br />DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();<br />dbf.setNamespaceAware(true);<br />DocumentBuilder db=dbf.newDocumentBuilder();<br />doc=db.parse(new File(filename));</p> <p>String nm="<a ;<br />String local="a";<br />String ob="<a ;</p> <p>System.out.println(nm+"名字I间中的元素");<br />NodeList nl=doc.getElementsByTagNameNS(nm,"*");<br />for(int i=0;i<nl.getLength();i++){<br />Node n=nl.item(i);<br />System.out.println(n.getNodeName());<br />}</p> <p>System.out.println("\n 名称?"+local+" 的元?);<br />nl=doc.getElementsByTagNameNS("*",local);<br />for(int i=0;i<nl.getLength();i++){<br />Node n=nl.item(i);<br />System.out.println(n.getNodeName());<br />}</p> <p>System.out.println("\n名字I间 "+ob+" 中的属?);<br />nl=doc.getElementsByTagName("*");<br />for(int i=0;i<nl.getLength();i++){<br />if(nl.item(i) instanceof Element){<br />Text t=(Text)nl.item(i).getFirstChild();<br />Element e=(Element)nl.item(i);<br />Attr a=e.getAttributeNodeNS(ob,"class");<br />if(a!=null){<br />String val=a.getNodeValue();<br />System.out.println("<"+val+">"+t.getNodeValue()+"</"+val+">");<br />}<br />}<br />}<br />}catch(Exception e){<br />e.printStackTrace();<br />}<br />}</p> <p>public static void main(String args[]){<br />BookDetails nsd=null;<br />if(args.length>=1){<br />nsd=new BookDetails(args[0]);<br />}else{<br />System.out.println("Books.xml");<br />}<br />}<br />}<br />使用SAX API解析XML文档<br />import org.xml.sax.Attributes;<br />import org.xml.sax.SAXException;<br />import org.xml.sax.helpers.DefaultHandler;<br />import javax.xml.parsers.SAXParser;<br />import javax.xml.parsers.SAXParserFactory;</p> <p>public class SAXParserHandler extends DefaultHanlder{<br />public void startDocument() throws SAXException{<br />System.out.println("起始文档");<br />}</p> <p>public void endDocument() throws SAXException{<br />System.out.println("l束文档");<br />}</p> <p>//在遇到字W数据时Ȁ?br />public void characters(char[] ch,int start,int lenght) throws SAXException){<br />String charString=new String(ch,start,lenght);<br />System.out.println("字符Q?+charString);<br />}</p> <p>public void startElement(String namespaceURI,String localName,String qName,<br />Attributes atts)throws SAXException{<br />System.out.println("起始元素"+qName);<br />for(int i=0;i<atts.getLength();i++){<br />System.out.println("属性|"+atts.getvalue(i));<br />}<br />}</p> <p>public void endElement(String namespaceURI,String localName,String qName)<br />throws SAXException{<br />System.out.println("l束元素"+qName);<br />}</p> <p>public static void main(String args[]) throws Exception{<br />SAXParserFactory factory=SAXParserFactory.newInstance();<br />SAXParser parser=factory.newSAXParser();<br />parser.parse("book.xml",new SAXParserHanlder());<br />}<br />}<br />使用DOM API写XML文档<br />import org.w3c.dom.*;<br />import javax.xml.parsers.*;<br />import javax.xml.transform.*;<br />import javax.xml.transform.dom.*;<br />import javax.xml.transform.stream.*;</p> <p>import java.io.*;</p> <p>public class Student{<br />public static void main(String args[]){<br />Document doc;<br />Element students;<br />Element stud;<br />Element fName;<br />Element sName;<br />try{<br />DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();<br />DocumentBuilder db=dbf.newDocumentBuilder();<br />doc=db.newDocument();</p> <p>stud=doc.createElement("Student");</p> <p>fName=doc.createElement("FirstName");;<br />fName.appendChild(doc.createTextNode("John"));<br />stud.appendChild(fName);</p> <p>sName=doc.createElement("Surname");<br />sName.appendChild(doc.createTextNode("David"));<br />stud.appendChild(sName);</p> <p>students=doc.createElement("Students");<br />students.setAttribute("Department","Mathematics");<br />students.appendChild(stud);</p> <p>doc.appendChild(students);</p> <p>TransformerFactory tf=TransformerFactory.newInstance();<br />Transformer transformer=tf.newTransformer();<br />transformer.transform(new DOMSource(doc),new StreamResult(System.out));</p> <p>}catch(Exception e){<br />e.printStackTrace();<br />}<br />}<br />}<br />使用DOM API昄现有XML文档内容</p> <p>使用DOM APIXML文档数据插入数据?/p> <p>使用DOM APIҎ数据库创建XML文档</p> <p>Java的国际化<br />国际化是Z应用程序发布在多个地区QlocaleQ而进行准备的q程。不同地区标识了各个特定的国家在信息表现上所q泛使用的语a、流通货币、字W集、日期格式及其他要素?/p> <p>支持国际化的应用E序h以下特点Q?br />1、不用改变代码就可以支持另外的语a?br />2、文本元素、消息和囄保存在源代码之外?br />3、将于文化背景有关的数据Q比如日期和旉、十q制数g及流通货币,Ҏ用户所用的语言和所在地理位|进行正格式化?br />4、支持非标准字符集?br />5、应用程序可以快速适应新的语言区域?/p> <p>Z使一个应用程序国际化Q:<br />1、必d用户所见到的硬~码字符Q如标签、工hC和错误信息{)替换成包含在资源包ResourceBundle中的字符。它是一个java属性文Ӟ它将关键字映ؓ字符倹{ƈ且可以用多个不同语a版本的ResourceBundleQ这样将可以对于不同语言提供不同的字W串?br />2、用Locale对象Q可以数据格式化ؓ与地区相关的数据?br />3、国际化的应用程序还必须使用l一的字W编码标准字W集?/p> <p>应用服务器有那些Q?/p> <p>Servlet斚w <br />什么是ServletQ?br />Servlet是J2EE应用框架中部|于Web层的WeblgQ运行在支持Servlet的Web服务器或应用服务器上。Servlet为客L和服务器端的信息处理提供了一U“请?响应”机制?br />客户E序请求发送到服务器;服务器将h发送到ServletQ依据客L序的hQServlet动态地构造回{信息ƈq回l服务器Q服务器回{返回给客户E序?/p> <p>什么是JSPQ?br />JSP是J2EE应用框架中部|于Web层的WeblgQ是对Servlet技术的扩展。它使在静态的面中加入动态的内容变得非常Ҏ。ƈ且通过使用标签库可以大大节省开发时_JavaBean与JSP一起用可以将数据表示和程序实现分R?/p> <p>在MVC架构模式中:<br />使用Servlet作ؓ控制器,而JSP作ؓ数据视图?/p> <p>CGI与Servlet的区别?<br />CGIQ公qx口)是一Ҏ准,使WEB服务器可以与外部应用E序交互。但是该技术存在一些严重的限制Q?br />1、CGI应用E序占用资源很多。当pȝ要处理来自一个用LhӞ׃创徏一个新的进E来处理该请求,一旦CGI脚本停止执行Q系l就必须收回该进E。这U重量q程的经常启动和停止非常低效?br />2、CGI很难链接于请求进E的其他阶段Q因为在WEB服务器上它们q行于不同的q程。这很隑֤理授权、工作流和日志记录工作?/p> <p>Java Servlet技术提供了一个基于组件、与q_无关的方法来构徏WEB应用E序。Servlet没有标准CGI应用E序所遇到的性能局限?br />Servlet比CGI更高效是因ؓQ?br />Servlet应用中将只创Z个单一个重量q程QƈҎ个用戯求用更轻量U的U程来完成请求处理,q且q些U程是由JVM自动l护。每个客Lh对应一个线E,每个ServletcdServlet容器中只存在一个唯一的对象(实例Q。Servletc首ơ加载后常d存?/p> <p>1、说一说Servlet的生命周? <br />{?在第一ơ请求Servlet时将创徏Servlet实例Q容器调用实例的initҎQ如果容器有h要传送给servletQ它׃调用servlet实例的ServiceҎ。一个请求将作ؓ一个线E。如果服务器要销毁servlet实例׃调用servlet实例的destoryҎQ否则该实例会帔R内存?/p> <p>2、Servlet版本?忘了问的是哪两个版本?的不? <br />希望大家补上Q谢?</p> <p>会话根中技?br />用户认证Q用用户名和口令进行验证来让客L讉K某些资源?br />隐藏表单字段Q用于保存一个浏览器在服务器中的相关信息?br />URL重写Q在URL后面d附加信息<br />持久CookieQ在h和响应头信息中添加和~辑信息</p> <p>什么是会话对象Q?br />会话对象用于在用戯问一个Web站点的多个页面时׃n信息。Q何时候用L一ơ访问某个网,pȝ都将创徏一个会话。如果以后用戯问此|页QJSP检索有x会话的信息。只要服务器收到此用LhQ则会话׃持箋Q如果经q一D|间没有收到此用户的新hQ会话就会终止?/p> <p>3、JAVA SERVLET API中forward() 与redirect()的区别? <br />使用重定向:当调用sendRedirectҎӞWeb容器׃向浏览器q回响应Q指C需要新的URL。因为浏览器发出了完全崭新的hQ所以在重定向之前存储ؓh属性的M对象都会消失?br />使用转发Q当Z个请求调用{发时Q请求就发送给服务器上另一个资源,而无需通知客户机由不同的资源处理请求。这个过E完全在Web容器内部q行Q客hl不知晓。与重定向不同,转发q程中,对象可以存储在请求中Qƈ发送给下一个资源用?br />因ؓ转发q程完全在服务器上进行,与客h没用通信Q因此{发的性能优于重定向?br />但是如果在JSP面上用图形的相对路径和其他资源,转发机制׃带来问题。因为浏览器无从得知发生了{发,所以相对\径只是相对初始的ServletQ而不是所转发到的JSP面。用JSP自定义标{֏以解册个问题?/p> <p>如何现实servlet的单U程模式</p> <p>servlet的配|?/p> <p>4、Servlet的基本架?<br />public class ServletName extends HttpServlet { <br />public void doPost(HttpServletRequest request, HttpServletResponse response) throws <br />ServletException, IOException { <br />} <br />public void doGet(HttpServletRequest request, HttpServletResponse response) throws <br />ServletException, IOException { <br />} <br />} </p> <p> </p> <p>Jsp斚w <br />1、jsp有哪些内|对?作用分别是什? <br />JSP的隐式对?br />RequestJavax.servlet.ServletRequest它包含了有关览器请求的信息.通过该对象可以获得请求中的头信息、Cookie和请求参数?br />Enumeration getHeaderNamesQ)String getHeaderQnameQCookie[] getCookiesQ)Enumeration GetParameterNamesQ)String getParameterQnameQString[] GetParametervaluesQnameQHttpSession getSessionQflagQ?br />responseJavax.servlet.ServletResponse作ؓJSP面处理l果q回l用L响应存储在该对象中。ƈ提供了设|响应内宏V响应头以及重定向的ҎQ如cookies,头信息等Q?<br />Void setContentType(type)String getCharacterEncoding()Void addCookie(cookie)Void sendRedirect(url)<br />outJavax.servlet.jsp.JspWriter用于内容写入JSP面实例的输出流中,提供了几个方法你能用于向浏览器回送输出结果?<br />pageContextJavax.servlet.jsp.PageContext描述了当前JSP面的运行环境。可以返回JSP面的其他隐式对象及其属性的讉KQ另外,它还实现控制权从当前页面传输至其他面的方法?br />Void forward(path)PAGE_SCOPEREQUEST_SCOPESESSION_SCOPEAPPLICATION_SCOPEVoid setAtrribute(key,value,scope)Enumeration getAttributeNamesInScope(scope)Object getAttribute(key,scope)Void RemoveAttribute(key,scope)Object findAttribute(name)Int getAttributeScope(name)<br />sessionjavax.servlet.http.HttpSession会话对象存储有关此会话的信息Q也可以属性赋l一个会话,每个属性都有名U和倹{会话对象主要用于存储和索属性倹{?br />Void setAttribute(name,data)Object getAttributeQnameQ?br />applicationjavax.servle.ServletContext存储了运行JSP面的servlet以及在同一应用E序中的MWeblg的上下文信息?br />pageJava.lang.Object表示当前JSP面的servlet实例<br />configjavax.servlet.ServletConfig该对象用于存取servlet实例的初始化参数?br />Enumeration getInitParameterNames()String getInitParameter(name)<br />ExceptionJavax.lang.Throwable在某个页面抛出异常时Q将转发至JSP错误面Q提供此对象是ؓ了在JSP中处理错误?br />String getMessage()Void printStackTrace(out)<%@ page errorPage=”error.jsp?><%@ page isErrorPage=”true?%></p> <p> <br />2、jsp有哪些动?作用分别是什? <br />{?JSP共有以下6U基本动?<br />ljsp:includeQ在面被请求的时候引入一个文件?<br />ljsp:useBeanQ寻找或者实例化一个JavaBean?<br />ljsp:setPropertyQ设|JavaBean的属性?<br />ljsp:getPropertyQ输出某个JavaBean的属性?<br />ljsp:forwardQ把h转到一个新的页面?<br />ljsp:pluginQ根据浏览器cd为Java插g生成OBJECT或EMBED标记 </p> <p>3、JSP中动态INCLUDE与静态INCLUDE的区别? <br />{:动态INCLUDE用jsp:include动作实现 <br /><jsp:include page="included.jsp" flush="true" />它L会检查所含文件中的变化,适合用于包含动态页面,q且可以带参?<br />静态INCLUDE用include伪码实现,定不会检查所含文件的变化Q适用于包含静态页?<br /><%@ include file="included.htm" %> </p> <p>4、两U蟩转方式分别是什?有什么区? <br />{:有两U,分别为: <br /><jsp:include page="included.jsp" flush="true"> <br /><jsp:forward page= "nextpage.jsp"/> <br />前者页面不会{向include所指的面Q只是显C늚l果Q主面q是原来的页面。执行完后还会回来,相当于函数调用。ƈ且可以带参数.后者完全{向新面Q不会再回来。相当于go to 语句?</p> <p>JSP的常用指?br /><%@ include file=”localURL?%><br /><%@ page attribute=”value1?%><br />属性值缺省值示?br />contentTypeMIMEcd和字W集“text/hmt”contentType=“text/htmlQcharset=ISO-8859-1“contentType=“text/xml?br />Extendscd无Extends=“com.taglib.wdjsp.MyJspPage?br />Import cd或包名无<br />Session布尔值TrueSession=“true?br />isThreadSafe布尔值True<br />ErrorPage<br />isErrorPage</p> <p> <br /><%@ taglib uri=”tagLibraryURL?prefix=”tagPrefix?%></p> <p>Jdbc<br />说出数据q接池的工作机制是什?</p> <p> <br />1、可能会让你写一DJdbcqOracle的程?q实现数据查? <br />{?E序如下Q?<br />package hello.ant; <br />import java.sql.*; <br />public class jdbc { <br />String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl"; <br />String theUser="admin"; <br />String thePw="manager"; <br />Connection c=null; <br />Statement conn; <br />ResultSet rs=null; <br />public jdbc() { <br />try{ <br />Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); <br />c = DriverManager.getConnection(dbUrl,theUser,thePw); <br />conn=c.createStatement(); <br />}catch(Exception e){ <br />e.printStackTrace(); <br />} <br />} <br />public boolean executeUpdate(String sql) { <br />try { <br />conn.executeUpdate(sql); <br />return true; <br />} catch (SQLException e) { <br />e.printStackTrace(); <br />return false; <br />} <br />} <br />public ResultSet executeQuery(String sql) { <br />rs=null; <br />try { <br />rs=conn.executeQuery(sql); <br />} catch (SQLException e) { <br />e.printStackTrace(); <br />} <br />return rs; <br />} <br />public void close(){ <br />try { <br />conn.close(); <br />c.close(); <br />} catch (Exception e) { <br />e.printStackTrace(); <br />} <br />} <br />public static void main(String[] args) { <br />ResultSet rs; <br />jdbc conn = new jdbc(); <br />rs=conn.executeQuery("select * from test"); <br />try{ <br />while (rs.next()) { <br />System.out.println(rs.getString("id")); <br />System.out.println(rs.getString("name")); <br />} <br />}catch(Exception e) { <br />e.printStackTrace(); <br />} <br />} <br />} </p> <p>2、Class.forName的作?Z么要? <br />{:调用该访问返回一个以字符串指定类名的cȝ对象?</p> <p>说出在JSP面里是怎么分页?<br />面需要保存以下参敎ͼ<br />总行敎ͼҎsql语句得到总行?br />每页昄行数Q设定?br />当前|Q请求参?br />面Ҏ当前|和每行数计出当前늬一行行敎ͼ定位l果集到此行Q对l果集取出每|C数的行即可?/p> <p>4、在ORACLE大数据量下的分页解决Ҏ。一般用截取IDҎQ还有是三层嵌套Ҏ?<br />{?一U分|?<br /><% <br />int i=1; <br />int numPages=14; </p> <p>//获取当前面<br />String pages = request.getParameter("page") ; <br />int currentPage = 1; <br />currentPage=(pages==null)?(1):{Integer.parseInt(pages)};</p> <p>//获得记录L<br />sql = "select count(*) from tables"; <br />ResultSet rs = DBLink.executeQuery(sql) ; <br />while(rs.next()) i = rs.getInt(1) ; </p> <p>//获取总页?br />int intPageCount=1; <br />intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1); </p> <p>//讄上下?br />int nextPage ; <br />int upPage; <br />nextPage = currentPage+1; <br />if (nextPage>=intPageCount) nextPage=intPageCount; <br />upPage = currentPage-1; <br />if (upPage<=1) upPage=1; </p> <p>//获取数据内容q显C?br />rs.close(); <br />sql="select * from tables"; <br />rs=DBLink.executeQuery(sql); <br />i=0; <br />while((i<numPages*(currentPage-1))&&rs.next()){i++;} <br />%> <br />//输出内容 <br />//输出页q接 <br />合计:<%=currentPage%>/<%=intPageCount%><br /><a href="List.jsp?page=1">W一?lt;/a><br /><a href="List.jsp?page=<%=upPage%>">上一?lt;/a> </p> <p><% <br />for(int j=1;j<=intPageCount;j++){ <br />if(currentPage!=j){ <br />%> <br />//昄所有页面的q接<br /><a href="list.jsp?page=<%=j%>">[<%=j%>]</a> </p> <p><% <br />}else{ <br />out.println(j); <br />} //end of if<br />} //end of for<br />%> </p> <p><a href="List.jsp?page=<%=nextPage%>">下一?lt;/a><br /><a href="List.jsp?page=<%=intPageCount%>">最后页 </a> </p> <p> <br />Xml斚w <br />2、你在项目中用到了xml技术的哪些斚w?如何实现? <br />{?用到了数据存贮,信息配置两方面。在做数据交换^台时Q将不能数据源的数据l装成XML文gQ然后将XML文g压羃打包加密后通过|络传送给接收者,接收解密与解压羃后再同XML文g中还原相关信息进行处理。在做Y仉|时Q利用XML可以很方便的q行QY件的各种配置参数都存贮在XML文g中?</p> <p>3、用jdom解析xml文g时如何解决中文问?如何解析? <br />{?看如下代?用编码方式加以解?<br />package test; <br />import java.io.*; <br />public class DOMTest { <br />private String inFile = "c:\\people.xml"; <br />private String outFile = "c:\\people.xml"; <br />public static void main(String args[]){ <br />new DOMTest(); <br />} <br />public DOMTest() { <br />try { <br />javax.xml.parsers.DocumentBuilder builder = <br />javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder(); <br />org.w3c.dom.Document doc = builder.newDocument(); <br />org.w3c.dom.Element root = doc.createElement("老师"); <br />org.w3c.dom.Element wang = doc.createElement("?); <br />org.w3c.dom.Element liu = doc.createElement("?); <br />wang.appendChild(doc.createTextNode("我是王老师")); <br />root.appendChild(wang); <br />doc.appendChild(root); <br />javax.xml.transform.Transformer transformer = <br />javax.xml.transform.TransformerFactory.newInstance().newTransformer(); </p> <p>transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "gb2312"); <br />transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes"); <br />transformer.transform(new javax.xml.transform.dom.DOMSource(doc), <br />new javax.xml.transform.stream.StreamResult(outFile)); <br />} catch (Exception e) { <br />System.out.println (e.getMessage()); <br />} <br />} <br />} </p> <p>4、编E用JAVA解析XML的方? <br />{?用SAX方式解析XMLQXML文g如下Q?<br /><?xml version="1.0" encoding="gb2312"?> <br /><person> <br /><name>王小?lt;/name> <br /><college>信息学院</college> <br /><telephone>6258113</telephone> <br /><notes>?1955q生,博士Q?5q调入v南大?lt;/notes> <br /></person> <br />事g回调cSAXHandler.java <br />import java.io.*; <br />import java.util.Hashtable; <br />import org.xml.sax.*; <br />public class SAXHandler extends HandlerBase { <br />private Hashtable table = new Hashtable(); <br />private String currentElement = null; <br />private String currentvalue = null; <br />public void setTable(Hashtable table) { <br />this.table = table; <br />} <br />public Hashtable getTable(){ <br />return table; <br />} <br />public void startElement(String tag, AttributeList attrs) throws SAXException { <br />currentElement = tag; <br />} <br />public void characters(char[] ch, int start, int length) throws SAXException { <br />currentvalue = new String(ch, start, length); <br />} <br />public void endElement(String name) throws SAXException { <br />if (currentElement.equals(name)) table.put(currentElement, currentvalue); <br />} <br />} </p> <p>JSP内容昄源码,SaxXml.jsp: <br /><HTML> <br /><HEAD> <br /><title>剖析XML文gpeople.xml</title> <br /></HEAD> <br /><BODY> <br /><%@ page errorPage="ErrPage.jsp" contentType="text/html;charset=GB2312" %> <br /><%@ page import="java.io.*" %> <br /><%@ page import="java.util.Hashtable" %> <br /><%@ page import="org.w3c.dom.*" %> <br /><%@ page import="org.xml.sax.*" %> <br /><%@ page import="javax.xml.parsers.SAXParserFactory" %> <br /><%@ page import="javax.xml.parsers.SAXParser" %> <br /><%@ page import="SAXHandler" %> <br /><% <br />File file = new File("c:\\people.xml"); <br />FileReader reader = new FileReader(file); <br />Parser parser; <br />SAXParserFactory spf = SAXParserFactory.newInstance(); <br />SAXParser sp = spf.newSAXParser(); <br />SAXHandler handler = new SAXHandler(); <br />sp.parse(new InputSource(reader), handler); <br />Hashtable hashTable = handler.getTable(); <br />out.println("<TABLE BORDER=2><CAPTION>教师信息?lt;/CAPTION>"); <br />out.println("<TR><TD>姓名</TD>" + "<TD>" + <br />(String)hashTable.get(new String("name")) + "</TD></TR>"); <br />out.println("<TR><TD>学院</TD>" + "<TD>" + <br />(String)hashTable.get(new String("college"))+"</TD></TR>"); <br />out.println("<TR><TD>电话</TD>" + "<TD>" + <br />(String)hashTable.get(new String("telephone")) + "</TD></TR>"); <br />out.println("<TR><TD>备注</TD>" + "<TD>" + <br />(String)hashTable.get(new String("notes")) + "</TD></TR>"); <br />out.println("</TABLE>"); <br />%> <br /></BODY> <br /></HTML> </p> <p>EJB斚w <br />1、EJB2.0有哪些内?分别用在什么场? EJB2.0和EJB1.1的区? <br />{:规范内容包括Bean提供者,应用E序装配者,EJB容器QEJB配置工具QEJB服务提供者,pȝ理员。这里面QEJB容器是EJB之所以能够运行的核心。EJB容器理着EJB的创建,撤消Q激z,LQ与数据库的q接{等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS..... </p> <p>2、EJB与JAVA BEAN的区别? <br />JavaBean是可复用的^台独立的软glgQ开发者可以在软g构造器工具中对其直接进行可视化操作?/p> <p>Enterprise Java Bean 相当于DCOMQ即分布式组件。它是基于Java的远E方法调用(RMIQ技术的Q所以EJB可以被远E访问(跨进E、跨计算机)。但EJB必须被布|在诸如Webspere、WebLogicq样的容器中QEJB客户从不直接讉K真正的EJBlgQ而是通过其容器访问。EJB容器是EJBlg的代理,EJBlg由容器所创徏和管理。客户通过容器来访问真正的EJBlg?</p> <p>3、EJB的基本架?<br />{?一个EJB包括三个部分: <br />Remote Interface 接口的代?<br />package Beans; <br />import javax.ejb.EJBObject; <br />import java.rmi.RemoteException; <br />public interface Add extends EJBObject { <br />//some method declare <br />} </p> <p>Home Interface 接口的代?<br />package Beans; <br />import java.rmi.RemoteException; <br />import jaax.ejb.CreateException; <br />import javax.ejb.EJBHome; <br />public interface AddHome extends EJBHome { <br />//some method declare <br />} </p> <p>EJBcȝ代码 <br />package Beans; <br />import java.rmi.RemoteException; <br />import javax.ejb.SessionBean; <br />import javx.ejb.SessionContext; <br />public class AddBean Implements SessionBean { <br />//some method declare <br />} </p> <p>J2EE,MVC斚w <br />1、MVC的各个部分都有那些技术来实现?如何实现? <br />{?MVC是ModelQViewQController的简写。设计的基本原理是将复杂性分解ؓ三个lgQ即模型、视图、控制器?br />模型表示数据和处理数据的业务逻辑或应用程序对象?br />试图是用戯查看或存取的数据的表C?br />控制器定义了用户与模型和试图交互的方式?/p> <p> <br />2、应用服务器与WEB SERVER的区别? <br />Web Service 是一U新的分布式技术。一个Web服务本质上是一个应用组Ӟ可以通过Web协议和数据编码机Ӟ例如HTTP和XMLQ对q个lgq行讉K?/p> <p>Soap单对象访问协议:<br />是一U基于XML的通信协议。它包括3个部分?br />Soap装l构Q定义消息的XML格式Q包括其整体框架、消息内宏V由谁处理这些内容等?br />Soap~程规则Q定义如何将E序数据表示为XML?br />Soap RPC表示Q定义如何用scapq行q程q程调用?/p> <p>WSDL Web服务描述语言Q?br />WSDL文g是一个XML文档Q用于说明一lsoap消息以及如何交换q些消息。还定义了服务的位置以及使用服务的通信协议{?/p> <p>Uddil一描述、发现和集成标准<br />是wed服务的黄c它提供了用于服务注册的目录技术,q用它来建立Web服务的目录信息。UDDI的核心组件是UDDI商业注册Q它使用一个XML文档来描qC业及所提供的Web服务。它包括3个部分:<br />白页Q介l提供服务的公司Q包括名U、地址和联pL式等Q?br />黄页Q包括按照标准分cLq行分类的行业类别;<br />lKQ详l介l,讉K服务接口{技术信息?/p> <p>Web服务是构建在soapQ简单对象访问协议)、wsdlQweb服务描述语言Q、uddiQ统一描述、发现和集成标准Q?个开攄核心标准之上的。Soap用来q行Web服务通信的协议,WSDL用来q行说明和描qWeb服务<br />׃Web服务完全ZXML的,使Web服务成ؓ一个跨语言、跨q_、跨|络的可互操作的分布式应用Y件的新^台?br />3、J2EE是什么? <br />J2EE是sun公司推出的一个高层次的全方位、多功能的企业应用开发环境。它包括了当今Y件工业界许多最新、最重要的Y件技术。J2EEq_包含一整套的服务、应用程序接口和协议Q是java技术企业应用的整体解x案。J2EEq_通过Zlg的应用程序模型大大简化了开发过E,同时q支持Q何分布式体系和多层次的应用开发。随着来多的第三方对J2EE的支持和标准认证QJ2EE已被q泛用来开发企业应用软g、中间g和组件Y件?br />J2EE Java2q_企业版:<br />1、提供了Zlg的方式来设计、开发、组装和部v企业应用?br />2、提供了一个多层次分布式的应用模型Q包括了可复用的lg、基于XML数据交换、统一的安全模式以及灵zȝ事务控制。基于这些技术,可开发出满市场要求的,Zq_无关的J2EElg的解x案?br />3、J2EEq_使用的多层分布式应用模型中应用程序主要分为:客户层(AppletQ、Web层(Servlet和JSPQ、业务层QEJBQ、企业信息系l层?/p> <p> <br />使用cd开发与使用框架包进行开发的区别Q?br />框架包简单的可以认ؓ是一l类和接口,它们怺协作以解决特定类型的软g问题?br />cd包含的是应用E序可以调用的函数或例程。而框架包提供通用的、相互协作的lgQ应用程序通过扩展q些lg提供特定函数l。应用程序将在这些扩展点q行扩展Q运行时q些扩展被框架pȝ反调用。这正与使用cd开发的应用E序Q运行时的函数调用时颠倒的?/p> <p>5、BS与CS的联pM区别?<br />传统的分布式应用E序都是ZClient/Serverl构的,而近q来Z发现ZClient/Serverl构的应用程序有很多~点Q比如:如果客户端的代码需要改变,那么所有机器上的客LE序都要重新安装Q如果某台机器有了不可修复的损坏Q那么得d的机器上重新安装客户端Y件才能够使用。而基于Browser/Serverl构的应用程序就没有以上的缺点了Q我们可以用Q何一台有览器的机器来工作,而因为所有的E序逻辑都在服务器端Q所以服务器端的代码变动不需要作为客L的浏览器再做M工作?/p> <p>6、STRUTS的应?如STRUTS架构) <br />{:Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用E序的开放源码的framework?采用Struts能开发出ZMVC(Model-View-Controller)设计模式的应用构架?Struts有如下的主要功能Q?<br />一.包含一个controller servletQ能用Lh发送到相应的Action对象?<br />?JSP自由tag库,q且在controller servlet中提供关联支持,帮助开发员创徏交互式表单应用?<br />?提供了一pd实用对象QXML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提C和消息?</p> <p>设计模式斚w <br />1、开发中都用C那些设计模式?用在什么场? <br />{:Z在自q环境中不断发现问题和L问题的解x案的时候,发现有一些问题及其解x案不断变换面孔重复出玎ͼ但在q些不同的面孔后面有着共同的本质,q些共同的本质就是模式。设计模式就是用来描q解册些问题的解决Ҏ的核心的?/p> <p>工厂模式<br />专门负责大量有共同接口的类实例化。工厂模式可以动态确定将那一个类实例化,不必事先知道每次要实例化那一个类?/p> <p>单工厂模?br />或称静态工厂方法模式。简单工厂模式是׃个工厂对象决定创建出哪一U品类的实例。简单工厂模式就是由一个工厂类Ҏ传入的参数决定创建那一U品类的实例?br />单工厂模式涉及到工厂角色、抽象品角色以及具体品角Ԍl工厂c角Ԍ含有与应用紧密相关的商业逻辑。工厂类在客L的直接调用下创徏产品对象。l抽象产品角色Q担任这个角色的cL由工厂方法模式所创徏的对象的父类Q或它们共同拥有的接口。l具体产品角色Q工厂方法模式所创徏的Q何对象都是这个角色的实例?br />优点是:允许客户端相对独立于产品创徏的过E,q且在系l引入新产品的时候无需修改客户端。缺ҎQ如果有新的产品加入到系l中去,需要修改工厂类Q将必要的逻辑加入到工厂类中?br />工厂Ҏ模式<br />或称多态性工厂模式。工厂方法模式的用意是定义一个创Z品对象的工厂接口Q将实际创徏工作推迟到子cM。工厂方法模式中Q核心的工厂cM再负责所有的产品的创建,而是具体创建的工作交给子类d。它仅负责给出具体工厂子cdd现的接口。这样可以用来允许系l在不修改具体工厂角色的情况下引q新的品?br />工厂Ҏ模式涉及到的角色Ql抽象工厂角色Q它不包含应用逻辑。Q何在模式中创建对象的工厂cdd现这个接口。l具体工厂角色Q含有与应用密切相关的逻辑Qƈ且受到应用程序的调用以创Z品对象。l抽象产品角色Q工厂方法模式所创徏的对象的类型,也就是品对象的共同父类或共同拥有的接口。l具体产品角色Q这个角色实C抽象产品角色所声明的接口?br />单例模式<br />保某一个类只有一个实例,而且自行实例化ƈ向整个系l提供这个实例?br />特点Q单例类只能有一个实例;单例cd自己创q惟一的实例;单例cdȝ所有其他对象提供这一实例?br />多例模式<br />多例cd以有多个实例Qƈ且多例类必须自己创徏、管理自q实例Qƈ向外界提供自q实例?br />在系l中可以用于数据库连接池、键值缓存等?br />代理模式<br />l某个对象提供一个代理对象,q由代理对象控制对原对象的引用?br />代理模式所涉及的角Ԍ抽象主题角色Q声明了真实主题和代理主题的共同接口Q这样一来在M可以使用真实主题的地斚w可以使用代理主题角色?/p> <p>名称</p> <p> </p> <p>2、UML斚w <br />UML包括的图有:案例图、类图、序列图、合作图、状态图、活动图、构件图、部|图?/p> <p>cd中的关系有:<br />一般关p(cMcȝl承关系、接口与接口的承关pR类Ҏ口的实现关系Q;<br />兌关系Q它使一个类知道另一个类的属性和Ҏ。在java中,使用实例变量实现?br />聚合关系Q是整体与个体之间的关系。也是用实例变量实现?br />合成关系Q是比聚合关pd的关pR它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期?br />依赖关系QL单向的。表CZ个类依赖于另一个类的定义?/p> <p>3、Y件的可维护性与可复用?br />一个好的系l设计应该有如下性质Q?br />可扩展性:新的性能可以很容易地加入到系l中?br />灉|性:可以允许代码修改q稳地发生、而不会L及到很多其他的模块?br />可插入性:可以很容易地一个类抽出去,同时另一个有同样接口的类加入q来?/p> <p>在java中可以给Z个或多个抽象javacLjava接口Q规定出所有的具体cdL供的Ҏ特征作ؓpȝ设计的抽象层。这个抽象层预见了所有的可能扩展Q因此,在Q何扩展情况下都不会改变?/p> <p>接口是实现构件的可插入性的关键。一个java接口是一些方法特征的集合Q这些方法一般都是在pȝl常出现的方法。一个接口只有方法的特征Q没有方法的实现Q因此在不同地方的该Ҏ实现Q可以具有不同的行ؓ?br />接口是对可插入性的保证Q?br />因ؓ在类的关联中Q如果一个关联不是针对一个具体类的,而是针对一个接口的Q那么Q何实现这个接口的cd都可以满求。当前对象ƈ不在意所兌的是哪个具体c,而仅仅关心这个类是否实现了某个接口。这样一来,可以动态地这个关联从一个具体类转换到另一个具体类Q而这样做的唯一条g是它们都实现某个接口?/p> <p>抽象cM提供一个类型的部分实现。抽象类通常代表一个抽象概念,它提供一个承的出发炏V?br />javascript斚w <br />1、如何校验数字型? <br />var re=/^\d{1,8}$|\.\d{1,2}$/; <br />var str=document.form1.all(i).value; <br />var r=str.match(re); <br />if (r==null) { <br />sign=-4; <br />break; <br />} else{ <br />document.form1.all(i).value=parseFloat(str); <br />} </p> <p>CORBA斚w <br />什么是RMIQ?br />Java RMIQRemote Method InvocationQ?-Java的远E方法调用是Java所Ҏ的分布式计算技术,它允许运行在一个Java虚拟Z的对象调用运行在另一个Java虚拟Z的对象的ҎQ从而Java~程人员可以方便地在|络环境中作分布式计。面向对象设计要求每个Q务由最适合该Q务的对象执行QRMI这个概忉|深入了一步,使Q务可以在最适合该Q务的机器上完成?br />RMI定义了一l远E接口,可以用于生成q程对象。客h可以象调用本地对象的Ҏ一L相同的语法调用远E对象。RMI API提供的类和方法可以处理所有访问远E方法的基础通信和参数引用要求的串行化?br />使用RMI开发步骤:<br />1、定义一个远E接口(q程接口必须l承接口Q每个方法必LE异常,Ҏ参数和方法返回值都必须是可序列化的Q?br />2、实现远E接?br />3、定义用远E对象的客户E序<br />4、生远E访问对象的桩和?br />5、注册远E对?br />6、运行服务器和客L?/p> <p>RMI和CORBA的区别?<br />q程Ҏ调用QRMIQ和CORBA都是分布式计技术,在进行分布式时各有其优缺点,CORBA和RMI的区别?br />  CORBAQCommon Object Request Broker ArchitectureQ是OMG的Object Management ArchitectureQ对象管理结构)Q它是面向对象的分布式系l徏立所依据的标准。CORBA被设计成一个能供所有编E语a使用的一个开放性说明,是说一个机器上的Java客户可以要求另一个用SmallTalk或C++的机器服务。正是由于这U语a的独立性得CORBAq么灉|和吸引h。ؓ了适应语言独立性,CORBA采用了非帔R用的标准作为其接口。在不同的语a中,q程调用、签名和对象的引入有各自不同的定义,所以CORBA必须可能的中立和开放。正是这U通用性是CORBA的一个弱炏V当开发h员都采用CORBAӞ他们要用一U新的标准定义语a接口Q它要求开发者学习新的编E接口,从而减了q程模型的透明性?br />  RMI是ؓ仅在Java对Java的分布式计算中而开发的。远E调用的标准是ؓ了Java和应用Java的自然Java{֐和调用而开发的Q这使得RMI对Java的开发者相当透明而且易于实现。RMI用Java语言紧密集成从而同CORBA相比能够提供非常好的定w能力及对异常的处理。尽Java的RMI标准不像CORBA那样语言独立Q但Java本n是一个独立的q_Q这׃RMI在跨q_的分布Y件开发中是一个很好的选择?br />  RMI是Java语言在分布式计算上的基本模型Q很多Java的分布式pȝQ包括我们本章要涉及的EJBQ都是徏立在RMI的思想上的?/p> <p>ZIIOP协议的远E方法调用(RMI-IIOPQ?br />RMI是一个分布对象系l,允许java对象与运行在其他虚拟Z的java对象q行交互。得可以象讉K本地对象一栯问远E对象;只要获得一个远E对象的引用Q就可以把这个对象看作如同运行在同一虚拟Z那样来调用它的方法。但RMI是一个仅限于Java的分布式对象pȝQ这个系l用了一个javaҎ的传输协议,即javaq程Ҏ协议QJRMPQ,在客L和服务器之间q行信息传输。然而,q也意味着使用q种协议只能讉K其他java对象Q而无法访问非java对象?br />q程Ҏ调用的实际处理过E与CORBA的过E相|即RMI使用客户端桩和服务器端框。要调用q程ҎQ客L首先在桩上生成一个请求,然后此h传递给服务器,在服务器的框请求{换成对远E对象的实际Ҏ调用。客L桩将q程Ҏ的所有参数序列化后传递给服务器框Q框对参数反序列化?br />但是׃q种协议不支持EJB需要的企业U交互,因ؓ在这U类型的交互中必通过q程Ҏ调用来传递事务和安全环境。ؓ此sun公司创徏了RMI-IIOP卛_于因特网内部对象h代理协议之上的远E方法调用。IIOP是一个用在CORBA对象h代理间进行通信的协议,在IIOP之上的RMI同时hRMI和CORBA技术的特点?/p> <p>LINUX斚w <br />1、LINUX下线E,GDIcȝ解释?<br />{:LINUX实现的就是基于核心轻量q程?一对一"U程模型Q一个线E实体对应一个核心轻量q程Q而线E之间的理在核外函数库中实现?<br />GDIcMؓ囑փ讑֤~程接口cd?/p> <img src ="http://www.aygfsteel.com/dorydoo/aggbug/56441.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/dorydoo/" target="_blank">多力宇扬</a> 2006-07-04 08:02 <a href="http://www.aygfsteel.com/dorydoo/archive/2006/07/04/56441.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">³ľ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ֱ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">潭</a>| <a href="http://" target="_blank">ʤ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">żҽ</a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">³</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank">տ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">½</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ϲ</a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ຣʡ</a>| <a href="http://" target="_blank">޳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">մ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" 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>