目前,可以说是框架泛滥,有流行的,有过时的例如: struts1 struts2 hibernate ibatis spring ext dwr jquery 等等
就想大家讨论一下各框架的好处与不足之处,好互相学习学习以及现在用的最多的是哪几种,为什么都会用呢?还有其他熟悉的框架可以自行加上(只能发这么多分,没办法)
就想大家讨论一下各框架的好处与不足之处,好互相学习学习以及现在用的最多的是哪几种,为什么都会用呢?还有其他熟悉的框架可以自行加上(只能发这么多分,没办法)
肯定有用别的啊
例如spring mvc 用的也比较多
struts2挺方便的
spring没什么好说的,用就是了,因为它很好
hibernate的虽好,但是性能的管理或优化上不好控制还是喜欢用iBATIS,毕竟可以更简单地处理性能问题
jQuery已经很方便了,呵呵
前台推荐EXT或者GWT等
现在很多公司正在努力的做研发平台,就是使用SSH或者SSI搭建一套框架,在这个框架上进行项目的开发。
所以SSH方向的框架还是不错的。至少在5年内应该流行。
好在全部用java实现,不用写jsp,不用写javascript. Vaadin用GWT的引擎, 不过封装了于server通信这块,之前觉得GWT不错不过只有client side, talk to server need RPC call. 而且Vaadin集成做的很好,想把他集成到现有系统很简单.
那么 ext 和 gwt 哪个好呢?为什么
为什么是jquery 而不是其他的呢?它好在什么地方
不过 通常用的 用的最多的有 ssh , servite+jsp dwr +jdbc
• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。线程模式:
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)Servlet 依赖:
• Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
• Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。可测性:
• 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。
• Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。捕获输入:
• Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。
• Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过 web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种 ModelDriven 特性简化了taglib对POJO输入对象的引用。表达式语言:
• Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
• Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL).绑定值到页面(view):
• Struts 1使用标准JSP机制把对象绑定到页面中来访问。
• Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
类型转换:
• Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
• Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。校验:
• Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
• Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性Action执行的控制:
• Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
• Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
——————————————————————————————————
个人觉得Struts1是基于servlet开发,Struts2是基于Filter开发,相对于现在的企业来说Struts1的技术成熟,便于维护,而且现在的许多程序员使用SSH框架时,还是多选用struts1来开发~~
当然Struts2安全性比Struts1要高~~
你可以去这个地方看看:也许对你有用http://topic.csdn.net/u/20090331/08/c000404d-eaf3-49fd-85a1-afbf63791def.html
struts axis 是日本的框架??不是很理解
JDBC 中的行集(RowSet)是做什么用的?
JDBC 如何实现对象/关系映射,也就是 O/R Mapping。
为什么 JDBC 规范推荐首选从 DataSource 中获得数据库连接对象(JDBC 4.0 Specification, p.51.),而不是首选从 DriverManager 中获得连接对象?
使用 DriverManager 获得连接对象时,虽然从实现 JDBC 4.0 规范的驱动程序开始,不需要使用 Class.forName("xxx.xxx.xxx.Driver"); 了,但我们也有必要了解一下这句话的作用是什么?
单纯地使用 JDBC 时如何实现低耦合性的事务管理?也就是说事务边界在业务层,一个业务层调用多个数据库操作的方法完成一个事务,在这种情况下如何进行事务控制?在使用 Spring 之前,我认为应先掌握:熟练地使用 JAXP、jdom, dom4j 等工具解析/生成 XML 文件,并能使用 XPath 进行 XML 查找;
掌握 Java 中的反射,以及 JavaBeans 规范中的内省类,了解 JavaBeans 规范对于方法名、属性的要求(别看这个很简单,实际上很少有人知道);
了解 JDK 的动态代理和 Cglib 的动态代理,了解 JDK 动态代理的限制,以及与 Cglib 动态代理的优缺点,
并且了解一下动态代理是做什么用的;
熟练地使用日志工具,比如:JDK 日志工具、log4j 工具等,以及在使用时需要注意些什么;
能善于使用开源框架中已经实现的东西,比如 Apache Commons 中很多实用的方法,像实现了 LRU 算法的 Map 等等之类的。 下面是我对一些开源框架的观点:
Spring
优点:IoC、AOP 容器,集大成者,集众框架,可谓包罗万象,应有尽有,学习资料丰富
缺点:极其繁杂的配置文件,原来有个 Spring 的项目,配置文件就有 8000 多行,可以把人看晕掉,极其不喜欢!大事小事都得弄个接口,感觉是为了接口而接口,估计有好多人是先写类再写接口的吧?Hibernate
优点:ORM 的领头羊,ORM 事实上的标准,功能完善,学习资料丰富
缺点:在效率上有些问题,加之含有许多的 hbm 配置文件强行与代码分隔。Struts 1.x
优点:老牌 MVC 框架,MVC 事实上的标准
缺点:说实在的我感觉除了比 Servlet 少在 web.xml 中配置一些东西、自动封装 FormBean 之外,没感觉到有什么好处,这个框架最不好用的就是它的标签,除了 html 标签好用之外,其他的标签极其不好用,特别是 logic:iterator 远远没有 c:forEach 用起来舒服。Struts 2.x/WebWork 没用过。JBoss Seam
优点:
完全打破三层体系架构,借助于 JSF 采用两层结构,页面层和组件层,Seam 是按照业务逻辑来分层,而不是按照架构来分层。Seam 的最低版本是在 JDK 1.5 之上设计的,使用了很多 JDK 1.5 的新特性,大量地使用 Annotation,这种方式完全可以取代复杂的配置文件。就算是其中的日志组件也是采用变参实现的,这样我们就不用在页面上写 if(log.isDebugEnabled()) 了。采用 xhtml 的 JSF 页面,将 JSF 原本的配置分散到每个页面的 .page.xml 文件中,可以在里面写些:进入页面时需要执行的方法、有哪些参数需要传递的、页面如何导航等等。Seam 拥有完善权限模型,权限不仅可以在页面中表现,也可以通过 Annotation 在方法上限制该方法的执行权限。Seam 中的 Backing Bean 可以是普通的 Java Bean,也可以是 Session Bean,这样就可以让 Seam 工程不仅能运行在 EJB 容器中,也可以运行在 Servlet 容器中。Seam 中扩充了 Servlet 中的请求范围,增加了 Conversation、Process,而不是 Servlet 中的 application, session, request, page 四种。最常用的是 Conversation 这表示一个业务逻辑的作用范围,比 Session 小,比 Request 大。这种扩充完全是为了一整步骤的业务逻辑而定制的。想想看使用 Seam 可以使用 Seam Gen 或者是 JBoss Tools 的 Eclipse 插件产生某个表的增删改查分页功能,如果不涉及业务逻辑,而且使用默认的模板可以一行代码不用写,快速开发,诱人吧 ^_^缺点:
学习难度相对于 SSH 大很多,学习资料相对较少,其中所使用的 JSF 不用说了,相对于 Hibernate,Seam 所使用的 JPA 也是需要一定阶段地学习才能灵活使用的。其中还有多如牛毛的 Annotation、双向注入、 WebBeans 等概念也是需要一定时间来掌握的。Seam 中所使用的页面组件框架,比如 Ajax4JSF, RichFaces 等等也是需要一定时间来掌握的。
用于 JAX-RS Web 服务的 Jesery、Apache CXF(我感觉在 REST 式的 WebServices 上 Jesery 比 CXF 好用,CXF 在 SOAP 的 Web 服务上好用)
用于 NIO Socket 通信的 Grizzly、Netty
用于 HTTP 通信的 Apache HttpComponents(这个是 Apache Commons HttpClient 的升级,可惜连用法、API 都变了)
等等,这些框架都是非常优秀、易于使用的。
理由:
1,全是开源框架,免费,省了不少money;
2,s2sh开源框架已经相当成熟,稳定性好;
3,extjs界面比较眩,特别是桌面程序,UI设计可以取代美工,同样为你又节省了不少资本;
4,若能掌握其运行机制原理,并熟练掌握运用,对将来自己写框架受益匪浅啊,顶!
struts1 struts2 MVC框架,之前用的struts1,相比struts2,1中的action中的返回的mapping.xxxxx就觉得挺烦的,且不支持intecepter,等等,struts2比1确实强大了很多,
区别就点这个吧 http://java.e800.com.cn/articles/2009/319/1237434188417_1.html
hibernate ibatis 这两个都是对jdbc的封装,hibernate可以说是几乎是完全自动的orm,完全面向对象,只要前期DB设计是好,几乎不用再写sql了, 所以hibernate其实对于开发者能力相对较强,碰到问题时处理起来比ibatis也许可能会难很多。
说了hibernate这么一些,都是相对ibatis来说,ibatis是半自动,相对来说灵活性也很强,开发者自己写sql,自己定义dto,出了错程序员相对解决起来容易很多。
如果程序员数据库设计不是很强,并且开发者基础不是很强,那么ibatis是很不错的选择。
当然还有其它区别,可以多参考文档。
spring 不同于其它的一些框架,绝对算是一个绝对成功的框架,ioc,aop,spring MVC,与其它框架的集成,不得不说spring真的很强大,项目javabean的管理器,解耦等,很多项目都用了spring这些功能,说一本书都说不完。
dwr jquery 这两个是我用的比较多的js框架,并且感触比较深的。
jquery 在ui上体现得淋漓尽致,div效果,css控制几乎ui上无所不能,选择器,过滤器等页面定位,查找都很方便,而且插件一大把,绝对是一个优秀的js框架,可以用于非java的项目。
dwr需要dwr.jar包,是一个java后台与web前端交互的一个ajax框架,为什么刚才没有说jquery的ajax,是因为与dwr的ajax比起来,dwr的ajax真的方便到了极点,dwr的优点在于ajax,极其对ajax数据的处理上,这个是dwr的强大之处。 但ui上几乎没有什么功能。
Connection DBUtils.getConnection()//查询数据库,返回地一行第一列
Object DBUtils.queryObject(String sql)//查询数据库,返回地一行
Object[] DBUtils.queryRow(String sql)//查询数据库,返回地所有行
ArrayList<Object[]> DBUtils.query(String sql)int DBUtils.execute(String sql)//在一个事务里执行所有sql语句,如果出错,全部回滚
int[] DBUtils.execute(String[] sql)//查询数据库,分页
PagedData DBUtils.queryPage(String sql,Page page)
简单、实用、上手快要算JSPGen了,配置文件就一个;功能强大,扩展无限,各平台数据方便集成!参考资料: http://www.JSPGen.com
Hibernate自从我做了一次数据库修改非常频繁的项目之后就没怎么用它了,用这个框架数据库结构若频繁修改会把人烦死。还有一点不知道是我理解不对还是怎样,说的不对请各位赐教,hibernate对应实体,如果查询的数据是多个表关联的数据,三个表关联甚至四个表关联,那当如何处理? 不是很麻烦吗?虽说也能根据主外键向上取,往下取,效率会有多低呢? 所以我后来很少用hibernate,也不用实体,而是把数据集封装到
List<Map<String,Object>> 这个的结构中,不知各位对此有何看法,请发表意见。
至于spring,我觉得他的aop是我最青睐的,不想用jboss的aop,而aspectj,IDE又没有很好的支持。
不知众高手有何见解..
[size=12px]第一,框架给懒人发明的,我不否认,也正是因为如此,我们的编码效率或许就可以得到提升第二,我们不能盲目追求框架,可既然有框架,有时候可以方便我们编程,那干嘛不用呢?如果说现在什么框架都没有,就是用jsp+servlet+jdbc 是不是觉得很好呢?我不否认jsp+servlet+jdbc好,但如果是你那种想法的话,那为什么会出框架呢?就是因为在进步第三,我们也不是刻意去追求框架,有这贴的原因,不是想要知道哪个框架是最好的,只是想让大家认识到每个框架都是有不足的,有什么优点什么缺点,什么时候该用第四,为了达到目的,无论使用什么技术,对啊!为了达到目的,我们也可以用我们觉得适合适当的框架,(要知道框架也是用技术实现的)[/size]
去年开始学习java web,啥都不会的时候,公司让做SSH+EXT模块,然后自己相当地难受,什么都不会么。不过做法也很简单,我不需要去理解SSH,我只是抄抄配置,照着别人的模块写模块。关键Ext自己也不会,费了九牛二虎之力把东西写出来了。
然后自己想着好好补习基础(jsp、Servlet、jdbc,到现在这些东西都没有经历过真正项目,jsp的内置对象阿,会话领域阿,servlet生命周期阿等等都没实战经验,然后也实在是没办法,只能补习。。)对框架的看法就是,当基础不扎实的时候就别谈框架了,不过公司都很恶心阿,面试的时候,10家(如果10家都是用的SSH框架)有8家必问:SSH框架会多少,我只能说这些东西我没怎么学过,现在只了解配置文件如何一步一步解析,至于配置里面很多细节,还有框架性能问题这个只能关注但还没研究。
关键是出生产么,至于一般的公司应用开发,下面程序员框架上只要做简单配置就行了。关键觉得java基础一定要过硬(说实在话,我技术是差了点,不过我觉得现在很多程序员写出来的东西都很可怕,类似于基于jvm回收机制,代码是不是创建过多对象无法及时回收,SQL性能问题等等,我始终在想很多代码能否经得起压力测试)
工作9个月,java web学习一年不到,代码经验3个月,毅然选择离职,后来进了中兴通讯,但还是邪恶的离开中兴了,现在在一家公司,也是不爽。
接下来还是好好学习学习框架吧,想不通招聘1年的程序员为什么要问那么多框架问题(ajax框架会什么?Extjs。 接着jQuery用过么?自学了俩天,主要就是操作页面元素接着还要来句,那个 d-o-j-o用过么彻底无语了,听说过大名)
他怎么不问问XMLHttpRequest对象,怎么不问问jsp+servlet这个前后台如何联系。数据如何请求,如何返回数据,如何处理对应。怎么不问问,你会不会写类(我始终觉得java的精髓就是会写类,自己一直问自己这个问题,然后就慢慢展开,面向对象多态、接口、继承、抽象类,往开就是再写个1到俩年代码再好好研究设计模式——没有2年工作经验大谈设计模式做什么,想不通,面试公司也问崩溃阿,老哥,我只有3个月编码经验阿)
难道一个出道一年的程序员,在自己努力之下,在分配的工作有一半以上不是作开发的情况下,把这些东西弄通了,然后框架简单应用可以使用还不值得鼓励,不值得录用么?关键是这程序员对开发有很多想法,会考虑很多问题,也很努力学习抓狂,离职后第一家面试中兴通讯进去了,之后作了俩个礼拜,跑路了,然后找了N家,竟然都不要我有的公司NB,框架SSH还不够好,要自己对其改装,之后自动生成前后台,数据库设计好基本上单表增删该查代码都有了,这是叫一绝,关键还来个疑难攻关小组,开发当中碰到任何问题都可以交给疑难小组(还要尽量交给疑难小组),曾经面试了这样一家公司,叫我过去,死活没去擦完全没有自己思想了,完全就是码工
• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。线程模式:
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)Servlet 依赖:
• Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
• Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。可测性:
• 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。
• Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。捕获输入:
• Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。
• Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过 web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种 ModelDriven 特性简化了taglib对POJO输入对象的引用。表达式语言:
• Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
• Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL).绑定值到页面(view):
• Struts 1使用标准JSP机制把对象绑定到页面中来访问。
• Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
类型转换:
• Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
• Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。校验:
• Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
• Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性Action执行的控制:
• Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
• Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
——————————————————————————————————
个人觉得Struts1是基于servlet开发,Struts2是基于Filter开发,相对于现在的企业来说Struts1的技术成熟,便于维护,而且现在的许多程序员使用SSH框架时,还是多选用struts1来开发~~
当然Struts2安全性比Struts1要高~~
合作现在郑州筹划运营一公司,其中需要建立一个网络交流互动平台,虽然在市场上有多年的工作经验,但是网站开发技术欠缺,希望有熟悉网络建设技术的伙伴共事,构筑网络平台征程序设计、网站设计 若干名有大型网站设计思想或经验,有意着请QQ837678875 EMAIL:[email protected]
所谓的框架都是用来管理代码和开发的,也就是一种思想,这种思想 你也可以有,如果了解计算机的工作原理,结合程序的实际开发,自己也可以定义一套框架,不过你要很精通计算加的接口,写每一个程序都要给他一定的计算机的资源.....
总之框架就是经验