??xml version="1.0" encoding="utf-8" standalone="yes"?>日本中文一区二区三区亚洲,久久久久久久久亚洲,亚洲精品免费在线观看 http://www.tkk7.com/xixidabao/category/15379.htmlGROW WITH JAVA zh-cn Sun, 12 Aug 2007 07:58:36 GMT Sun, 12 Aug 2007 07:58:36 GMT 60 Struts,Spring,Hibernate优缺? http://www.tkk7.com/xixidabao/archive/2007/04/14/110605.htmlJAVA之\ JAVA之\ Sat, 14 Apr 2007 02:38:00 GMT http://www.tkk7.com/xixidabao/archive/2007/04/14/110605.html struts框架hlg的模块化Q灵zL和重用性的优点Q同时简化了ZMVC的web应用E序的开发?br> 优点Q?br>Struts跟Tomcat、Turbine{诸多Apache目一P是开源YӞq是它的一大优炏V开发者能更深入的了解其内部实现机制?br>除此之外QStruts的优点主要集中体现在两个斚wQTaglib和页面导航。Taglib是Struts的标记库Q灵zd用,能大大提高开发效率。另外,q前国内的JSP开发者而言Q除了用JSP自带的常用标记外Q很开发自q标记Q或许Struts是一个很好的L?br>关于面DQ我认ؓ那将是今后的一个发展方向,事实上,q样做,使系l的脉络更加清晰。通过一个配|文Ӟ卛_把握整个pȝ各部分之间的联系Q这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时Q这U优势体现得更加明显?br> 另外Qstruts是业?标准"Q很多成功案例)Q学习资源丰富,HTML标签非常优秀 ~点Q?br>Taglib是Struts的一大优势,但对于初学者而言Q却需要一个持l学习的q程Q甚臌会打׃|页~写的习惯,但是Q当你习惯了它时Q你会觉得它真的很棒?br>StrutsMVC的Controller一分ؓ三,在获得结构更加清晰的同时Q也增加了系l的复杂度?br>ActionForms使用不便、无法进行单元测试(StrutsTestCase只能用于集成Q?br>【IT168技术文?/strong>? Struts跟Tomcat、Turbine{诸多Apache目一P是开源YӞq是它的一大优炏V开发者能更深入的了解其内部实现机制?Struts开放源码框架的创徏是ؓ了开发者在构徏ZJava Servlet和JavaServer PagesQJSPQ技术的Web应用时更加容易。Struts框架为开放者提供了一个统一的标准框Ӟ通过使用Struts作ؓ基础Q开发者能够更专注于应用程序的商业逻辑。Struts框架本n是用Java Servlet和JavaServer Pages技术的一UModel-View-ControllerQMVCQ实? 具体来讲,Struts的优Ҏ: 1. 实现MVC模式Q结构清?使开发者只x业务逻辑的实? 2. 有丰富的tag可以?,Struts的标记库(Taglib)Q如能灵zd用,则能大大提高开发效率。另外,q前国内的JSP开发者而言Q除了用JSP自带的常用标记外Q很开发自q标记Q或许Struts是一个很好的L?nbsp; 3. 面D.面D是今后的一个发展方向,事实上,q样做,使系l的脉络更加清晰。通过一个配|文Ӟ卛_把握整个pȝ各部分之间的联系Q这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时Q这U优势体现得更加明显?nbsp; 4. 提供Exception处理机制 . 5. 数据库链接池理 6. 支持I18N ~点: 一?转到展示层时Q需要配|forwardQ每一ơ{到展C层Q相信大多数都是直接转到jspQ而涉及到转向Q需要配|forwardQ如果有十个展示层的jspQ需要配|十ơstrutsQ而且q不包括有时候目录、文件变_需要重C改forwardQ注意,每次修改配置之后Q要求重新部|整个项目,而tomcateq样的服务器Q还必须重新启动服务器,如果业务变更复杂频繁的系l,q样的操作简单不可想象。现在就是这P几十上百个h同时在线使用我们的系l,大家可以惌一下,我的烦恼有多大?br> 二?Struts 的Action必需是threadQsafe方式Q它仅仅允许一个实例去处理所有的h。所以action用到的所有的资源都必需l一同步Q这个就引v了线E安全的问题?nbsp; 三?试不方? Struts的每个Action都同Web层耦合在一Pq样它的试依赖于Web容器Q单元测试也很难实现。不q有一个Junit的扩展工具Struts TestCase可以实现它的单元试?nbsp; 四?cd的{? Struts的FormBean把所有的数据都作为StringcdQ它可以使用工具Commons-Beanutilsq行cd转化。但它的转化都是在ClassU别Q而且转化的类型是不可配置的。类型{化时的错误信息返回给用户也是非常困难的?nbsp; 五?对Servlet的依赖性过? Struts处理Action时必需要依赖ServletRequest 和ServletResponseQ所有它摆脱不了Servlet容器?nbsp; 六?前端表达式语a斚w.Struts集成了JSTLQ所以它主要使用JSTL的表辑ּ语言来获取数据。可是JSTL的表辑ּ语言在Collection和烦引属性方面处理显得很弱?nbsp; 七?对Action执行的控制困? Struts创徏一个ActionQ如果想控制它的执行序会非常困难。甚至你要重新去写Servlet来实C的这个功能需求?nbsp; 八?对Action 执行前和后的处理. Struts处理Action的时候是Zclass的hierarchiesQ很隑֜action处理前和后进行操作?nbsp; 九?对事件支持不? 在struts中,实际是一个表单Form对应一个Actionc?或DispatchAction)Q换一句话_在Struts中实际是一个表单只能对应一个事Ӟstrutsq种事g方式UCؓapplication eventQapplication event和component event相比是一U粗_度的事件?nbsp; Struts重要的表单对象ActionForm是一U对象,它代表了一U应用,q个对象中至包含几个字D,q些字段是Jsp面表单中的input字段Q因Z个表单对应一个事Ӟ所以,当我们需要将事g_度l化到表单中q些字段Ӟ也就是说Q一个字D对应一个事件时Q单U用Struts׃太可能,当然通过l合JavaScript也是可以转弯实现的?br> 2QHibernate Hibernate是一个开放源代码的对象关pL框Ӟ它对JDBCq行了非常轻量的对象封装,使得JavaE序员可以随心所Ʋ的使用对象~程思维来操U|据库?br>Hibernate可以应用在Q何用JDBC的场合,既可以在Java的客LE序实用Q也可以在Servlet/JSP的Web应用中用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMPQ完成数据持久化的重仅R?br>大多数开发机构经帔R取创建各自独立的数据持久层。一旦底层的数据l构发生改变Q那么修改应用的其余部分使之适应q种改变的代价将是十分巨大的。Hibernate适时的填补了q一I白Q它为Java应用提供了一个易用的、高效率的对象关pL框架。hibernate是个轻量U的持久性框Ӟ功能却非怸富?br> 优点Q?br>a.??????? Hibernate 使用 Java 反射机制 而不是字节码增强E序来实现透明性?br>b.??????? ?Hibernate 的性能非常好,因ؓ它是个轻量框架?映射的灵zL很?br>c.??????? 它支持各U关pL据库Q从一对一到多对多的各U复杂关pR? ~点Q它限制您所使用的对象模型?例如Q一个持久性类不能映射到多个表)其独有的界面和可怜的市场份额也让Z安,管如此QHibernate q是以其强大的发展动力减Mq些风险。其他的开源持久性框架也有一些,不过都没?Hibernate q样有市场冲d?br>上面回脓情A有点Ȁ动,希望谅解Q我不是因ؓ有h批评Hibernate而感C快,而是因ؓ帖子里面的观点实在让我觉得荒谬。不觉得Hibernate好也吧,不好也吧Q我唯一觉得遗憾的是Q在中文论坛里面找不C个对Hibernate的真正高水^的评仗在TSS上有一个关于Hibernate的hot threadQ跟了几百脓Q其中包括Hibernate作者Gavin和LiDO JDO的CTOQ对于JDO和Hibernate有过一些激烈的争论Q我曄耐心的看了一遍,仍然没有发现针对Hibernate真正有力的攻击,那些所谓的d无非针对Hibernate没有一个GUI的配|工P没有商业公司支持Q没有标准化{等q些站不住脚的理由?br> 补充几点我的意见Q?br> 一、Hibernate是JDBC的轻量的对象封装,它是一个独立的对象持久层框Ӟ和App ServerQ和EJB没有什么必然的联系。Hibernate可以用在MJDBC可以使用的场合,例如Java应用E序的数据库讉K代码QDAO接口的实现类Q甚臛_以是BMP里面的访问数据库的代码。从q个意义上来_Hibernate和EB不是一个范畴的东西Q也不存在非此即彼的关系?br> 二、Hibernate是一个和JDBC密切兌的框Ӟ所以Hibernate的兼Ҏ和JDBC驱动Q和数据库都有一定的关系Q但是和使用它的JavaE序Q和App Server没有M关系Q也不存在兼Ҏ问题?br> 三、Hibernate不能用来直接和Entity Bean做对比,只有攑֜整个J2EE目的框架中才能比较。ƈ且即使是攑֜软g整体框架中来看,Hibernate也是做ؓJDBC的替代者出现的Q而不是Entity Bean的替代者出现的Q让我再列一ơ我已经列nơ的框架l构Q?br> 传统的架构: 1) Session Bean <-> Entity Bean <-> DB Z解决性能障碍的替代架构: 2) Session Bean <-> DAO <-> JDBC <-> DB 使用Hibernate来提高上面架构的开发效率的架构Q?br>3) Session Bean <-> DAO <-> Hibernate <-> DB ׃?个架构来分析Q?br>1、内存消耗:采用JDBC的架?无疑是最省内存的QHibernate的架?ơ之QEB的架?最差?br> 2、运行效率:如果JDBC的代码写的非怼化,那么JDBC架构q行效率最高,但是实际目中,q一点几乎做不到Q这需要程序员非常_NJDBCQ运用Batch语句Q调整PreapredStatement的Batch Size和Fetch Size{参敎ͼ以及在必要的情况下采用结果集cache{等。而一般情况下E序员是做不到这一点的。因此Hibernate架构表现出最快的q行效率。EB的架构效率会差的很远?br> 3、开发效率:在有JBuilder的支持下以及单的目QEB架构开发效率最高,JDBCơ之QHibernate最差。但是在大的目Q特别是持久层关pL很复杂的情况下QHibernate效率高的惊hQJDBCơ之Q而EB架构很可能会p|?br> 4、分布式Q安全检查,集群Q负载均衡的支持 ׃有SB做ؓFacadeQ?个架构没有区别?br> 四、EB和Hibernate学习隑ֺ在哪里? EB的难度在哪里Q不在复杂的XML配置文g上,而在于EBq用E微不慎Q就有严重的性能障碍。所以难在你需要学习很多EJB设计模式来避开性能问题Q需要学习App Server和EB的配|来优化EB的运行效率。做EB的开发工作,E序员的大部分精力都被放CEB的性能问题上了Q反而没有更多的_֊x本n׃要投入精力去考虑的对象持久层的设计上来?br> Hibernate隑֜哪里Q不在Hibernate本n的复杂,实际上Hibernate非常的简单,隑֜Hibernate太灵zM?br> 当你用EB来实现持久层的时候,你会发现EB实在是太W拙了,W拙CҎ没有什么可以选择的余圎ͼ所以你Ҏ׃用花费精力去设计ҎQ去qҎ的好坏,去费脑筋考虑选择哪个ҎQ因为只有唯一的方案摆在你面前Q你只能q么做,没得选择?br> Hibernate相反Q它太灵zMQ相同的问题Q你臛_可以设计出十几种Ҏ来解冻I所以特别的犯难Q究竟用q个Q还是用那个呢?q些Ҏ之间到底有什么区别呢Q他们的q行原理有什么不同?q行效率哪个比较好?光是主键生成Q就有七八种Ҏ供你选择Q你为难不ؓ难?集合属性可以用SetQ可以用ListQ还可以用BagQ到底哪个效率高Q你为难不ؓ难?查询可以用iteratorQ可以用listQ哪个好Q有什么区别?你ؓ难不为难Q复合主键你可以直接在hbm里面配置Q也可以自定义CustomerTypeQ哪U比较好些?你ؓ难不为难Q对于一个表Q你可以选择单一映射一个对象,也可以映成父子对象Q还可以映射成两?:1的对象,在什么情况下用哪U方案比较好Q你为难不ؓ难? q个列表可以一直开列下去,直到你不惛_看下Mؓ止。当你面前摆着无数的眼qqҎ的时候,你会觉得q福呢?q是悲哀呢?如果你是一个负责的E序员,那么你一定会仔细研究每种Ҏ的区别,每种Ҏ的效率,每种Ҏ的适用场合Q你会觉得你已经陷入q去拔不出来了。如果是用EBQ你W一U种已l做Z军_Q根本没得选择Q比如说集合属性,你只能用CollectionQ如果是HibernateQ你会在BagQList和Set之间来回犹U不决Q甚x不清楚的话,E序都没有办法写?br> 3Q?Spring 它是一个开源的目Q而且目前非常z跃Q它ZIoCQInversion of ControlQ反向控Ӟ和AOP的构架多层j2eepȝ的框Ӟ但它不强q你必须在每一?中必M用SpringQ因为它模块化的很好Q允怽Ҏ自己的需要选择使用它的某一个模块;它实C很优雅的MVCQ对不同的数据访问技术提供了l一?接口Q采用IoC使得可以很容易的实现bean的装配,提供了简z的AOPq据此实现Transcation ManagmentQ等{?br>优点 ? ?a. Spring能有效地l织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他ؓJ2EE?API特制的frameworkQSpring致力于解军_下的问题? ? ?b. Spring能消除在许多工程中常见的对Singleton的过多用。根据我的经验,q是一个很大的问题Q它降低了系l的可测试性和面向对象的程度? ? ?c. 通过一U在不同应用E序和项目间一致的Ҏ来处理配|文ӞSpring能消除各U各栯定义格式的属性文件的需要。曾l对某个c要L的是哪个法般的属性项或系l属性感C解,为此不得不去读Javadoc甚至源编码?有了SpringQ你仅仅需要看看类的JavaBean属性。Inversion of Control的用(在下面讨论)帮助完成了这U简化? ??d.? 通过把对接口~程而不是对cȝE的代h几乎减少到没有,Spring能够促进L好的~程习惯? ??e. Spring被设计ؓ让用它创徏的应用尽可能的依赖于他的APIs。在Spring应用中的大多C务对象没有依赖于Spring? ??f. 使用Spring构徏的应用程序易于单元测试? ??g.? Spring能EJB的用成Z个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实C务接口,却不会媄响调用代码? ??h. Spring帮助你解册多问题而无需使用EJB。Spring能提供一UEJB的替换物Q它们适用于许多web应用。例如,Spring能用AOP提供声明性事务管理而不通过EJB容器Q如果你仅仅需要与单个数据库打交道Q甚至不需要一个JTA实现? ? i. ?Spring为数据存取提供了一个一致的框架,不论是用的是JDBCq是O/R mapping产品Q如HibernateQ? Spring实使你能通过最单可行的解决办法来解决你的问题。而这是有有很大h值的?br> ?~点Q用hC多、jsp中要写很多代码、控制器q于灉|Q缺一个公用控制器
]]> BEA實習面試﹐與EJBHStrutsHDesign Pattern盔R http://www.tkk7.com/xixidabao/archive/2007/04/09/109346.htmlJAVA之\ JAVA之\ Mon, 09 Apr 2007 03:12:00 GMT http://www.tkk7.com/xixidabao/archive/2007/04/09/109346.html 這門課的兩位老師都是牛hH一個來自BEAH系i架構師H是Weblogic 8.1b的開gh員﹐qx負KBEA公司在矽谷地區的面試﹔另一個是UC Berkeley的教授﹐華hH創業狂H在亞洲和美國都有自q公司。他們兩位負責了我校J2EE大考的出題。題?指明了公司對個h的J2EE能力的考察方向H也代表了業界對J2EE初級E序員的普遍要求"。我估計這些目?0%的機會會在BEA的面試中出現? 這裡我憑着自己的記憶把這些考題公佈Z和大家共享。一是為了讓大家自q能力有個評伎二也是幫我一同解{一些難? 目: 1. (這道是我們的一個項目有關﹐我這裡E做修改? 請舉Z最認為滿意的J2EE項目一個﹐用Flow Chart表示光發流E。你在項目開發最初﹐是否有Screen的設a過E? 列舉Screena計在項目初期能帶來的三條好處。你認為這個項目失敗的地方在哪? 如果開發過程重來一遍﹐你認為哪裡可以改? 如何攚w? (光這道就׃我將q一個小時﹐致我後面的目來不及做。考試時間?個半時) 2. Struspȝ中有哪五大組? 這些ig是通過什麼途經來互怽用的? Struts中xml文g的作用是什? xml文g的存在Strutspȝ帶來哪些~點? 詌HTML表單在Struts中被提交的過E。Struts中Controller的作用是什? 有沒有必要重載Struts的Controller? 3. 什麼是Pass-by-valueH什麼是Pass-by-reference? J2EE裡什麼時候用pass-by-valueH什麼時候用pass-by-value? ZDE序從Remote Interface到Local Interface的遷UL不可能的H反過來? 什麼時候用Local InterfaceH什麼時候用Remote Interface? 4. Value Object (Data Transfer Object)在J2EEpȝ中的作用是什? Z麼Value Object要實現Serializable接口? 在你的項目中Value Object是處于哪些層ơ之? Value ObjectiJ2EEpȝ帶來什麼麻?i出兩點)? 哪三E情況下Value Object要用到Collection? 5. 什麼是Optimistic Concurrency ControlH? 什麼是Pessimistic Concurrency Control? Time Stamp在Value Object中的作用是什? 畫出一程圖闡q從Client到Server到數據n你是如何實現Optimistic Concurrency Control? 6. 列舉JDBC Reading Pattern在EJB中的作用。什麼時候用JDBC Reading? JDBC Reading應該攑֜Stateless Session Bean, Stateful Session Bean, 還是Entity Bean? CMP是如何克服大量數據查詢時Entity BeanN+1ơ調用的問題? 7. 什麼是Pooling? Stateless Session Bean和Stateful Session Bean的Pooling有何不同? Stateless Session Bean和Stateful Session Bean有什g? Stateful Session Bean是如何Persistent它的狀態的(圖解表示)? 8. 在本學期的課E中我們學過如何保存Session State。如果我把Session State保存在Http Session中﹐而且我用Session Facadea計模式H那g的Session Facade是用Stateless Session Bean做呢H還是用Stateful Sessioin Bean? Z? 闡述我們在課堂上學到的另一E保存Session State的方法? 9. Message Driven Bean的好處和壞處?後面還有很多H忘a了) 10. 用戶希望在主頁面看到所有名酒清單﹐用戶可以dH刪除﹐修改這些信息。並且系i有一個Top 10評分頁面H用戶可在此瀏覽最受歡q的十種名酒H並可自己投評選。圖解表CZ上系i從瀏覽器到Servlet到EJB到數據n各流E﹐並在關鍵處附aL使用的Design PatternH比如Value Object, JDBC Reading, Session Facade{? 後面要有6﹐但由于時間關係﹐我連看都來不及看?nbsp; Struspȝ中有哪五大組? 這些ig是通過什麼途經來互怽用的? Struts中xml文g的作用是什? xml文g的存在Strutspȝ帶來哪些~點? 詌HTML表單在Struts中被提交的過E。Struts中Controller的作用是什? 有沒有必要重載Struts的Controller? # Action,ActionForm,ActionError,ActionForward,ActionMapping # Framework/MVC/ActionServlet/struts-config.xml # 定义面程 # 优点Q在pȝq行时可以变更业务流E? ~点Q编写xml文gQ相对于~写代码Q由于没有编译器的检验更Ҏ出错 # Request -> ActionServlet -> Create ActionForm/Action -> Set value to ActionForm -> Call Action -> ActionServlet -> Response/RrequestDispatcher # FrontController # d新功能(l一异常处理、添加Filter、修改struts-config的结?#8230;…Q可以重载ActionServlet 什麼是Pass-by-valueH什麼是Pass-by-reference? J2EE裡什麼時候用pass-by-valueH什麼時候用pass-by-value? ZDE序從Remote Interface到Local Interface的遷UL不可能的H反過來? 什麼時候用Local InterfaceH什麼時候用Remote Interface? # RMI中调用远E方法时串行化参数的Ҏ是pbvQ串行化参数stub的回调方法是pbr # 参数可以串行化Pass-by-ValueQ参数是rmi对象Pass-by-reference # 不能 # 同一台server上可以LocalQ不同的Remote Value Object (Data Transfer Object)在J2EEpȝ中的作用是什? Z麼Value Object要實現Serializable接口? 在你的項目中Value Object是處于哪些層ơ之? Value ObjectiJ2EEpȝ帶來什麼麻?i出兩點)? 哪三E情況下Value Object要用到Collection? # 装DB讉K/装DB数据Q轻量Q? # 因ؓ会被做remote的参C? # 业务层与数据? # 轻量U?无事务管? 无统一控制/调度Q需要VLH{配合) 大量数据性能? Q需要添加cacheQ? # 表关? 数据嵌套 包含数据数目不固?br> 什麼是Optimistic Concurrency ControlH? 什麼是Pessimistic Concurrency Control? Time Stamp在Value Object中的作用是什? 畫出一程圖闡q從Client到Server到數據n你是如何實現Optimistic Concurrency Control? # 非同期的处理Ҏ。OCC认ؓ数据是完全同步的QPCC认ؓ数据是完全不同步的? # 解决VOq期的问?nbsp; 列舉JDBC Reading Pattern在EJB中的作用。什麼時候用JDBC Reading? JDBC Reading應該攑֜Stateless Session Bean, Stateful Session Bean, 還是Entity Bean? CMP是如何克服大量數據查詢時Entity BeanN+1ơ調用的問題? # "JDBC Reading Pattern" 没有q样叫过? 不过我想应该是相对于EntityBean而言Q从sessionBean中直接访问DBQ返回VO的一UpatternU呼? # stateless session bean # SessionFacade Pattern 什麼是Pooling? Stateless Session Bean和Stateful Session Bean的Pooling有何不同? Stateless Session Bean和Stateful Session Bean有什g? Stateful Session Bean是如何Persistent它的狀態的(圖解表示)? # 减小对象因ؓ创徏/销毁的开销 # 无状?有状? # new EJB request -> LRU arith -> ejbPassivate() -> serialize bean -> store bean state 在本學期的課E中我們學過如何保存Session State。如果我把Session State保存在Http Session中﹐而且我用Session Facadea計模式H那g的Session Facade是用Stateless Session Bean做呢H還是用Stateful Sessioin Bean? Z? 闡述我們在課堂上學到的另一E保存Session State的方法? # stateful session bean # 因ؓ可以保存一个handle在session?br> Message Driven Bean的好處和壞處? 优点Q异? ~点Q无层次?l构化不?br> xml文gQ主要指struts-config.xml文gQ用来实现动态配|页面流E,在更大程度上实现q行开发,降低lever之间的耦合? xml文g的缺点,我认为有两方面? 1.降低执行效率? 2.不易调试 但以微弱的执行效率降低来换取开发效率的大幅增加是值得的。对于第二点Q我认ؓ目l应讄专门的配|h员? 至于五大lg如何作用及Controller的作用及提交q程csdn上也已经讨论的很多了? 有没有必要重载Struts的ControllerQ这个问题我不太理解Qcan you tell me in more detail, 或让大家看看原文Q?br>
]]>
վ֩ģ壺
պƷѵӰ |
þһح |
ձһ |
Ʒ456˳ |
18վڵ |
Ļ |
Ƶѹۿ |
þþƷŮav鶹 |
һѿ |
ëƬһ |
Ѵվ߿ |
ձѸ |
vaþþþ |
ĻĴȫƵ |
þúݺݰۺӰԺ
|
Ʒ߹ۿ |
ѹۿëƬȫ |
һAVٸӰ |
ĻӰѹۿ |
߲˳Ƶվ |
պһ |
վ |
avһ |
av㽶ˬˬˬˬ |
һ |
һ234 |
ѲСƵ |
ѹۿŮƵ |
VA߹ۿ |
ƷƵһ |
Ʒۺ |
ҹ |
ҹҹƵѿ |
ܻƺ۵վ |
ۺavһ |
99þۺϾƷ
|
99þþþþѿ |
AV߹ۿ |
ѿAVƬ |
ݺݺݰƵ |
Ļ |