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