(7) 拦截器异常强大。Struts2 的拦截器是一个Action级别的拦截器。Struts2框架的有些特征就是通过拦截器体现出来的,比如文件上传,信息验证,异常处理。拦截器可以再次使用和重新配置,把一些常用的功能例如:信息验证等放在拦截器中从而实现一些jsp项目中经常使用的功能。在一些公司的网页项目中,就是通过Struts2的拦截器来实现项目中的权限验证功能的。
2.2.2 Struts2的缺点
(1) 类型的变换。Struts2的 FormBeen组件将它所有的数据都转化为字符类型,它可以通过Comnons Beanutils方法实现类型变换。但是它的数据类型变化仅限于Class级别,并且变换的类型是禁止设置的。类型变化时的报错信息想要及时返回给用户也是非常不方便的。
(2) 执行Action类非常困难。Struts2建立一个Action类,要改变它的运行顺序几乎是不可能的。就算是你试图重载Servlet类来完成所需的功能也是非常不便的。
(3) 测试不方便。Struts2的每一个Action类都同视图紧密相联,从而使系统的测试工作要依靠网页容器。
(4) 当数据从后台控制层转到前台视图层的时候,就要设置forward文件,每当数据传到前台时,一般的程序员通常直接把数据传到jsp文件。如果存在转向的问题,就必须改变forward的设置,如果有五个前台的jsp文件,就必须配置五次struts2。这还并不包括因为修改文件位置,文件名而需要重新修改forward设置的情况。最关键的在于,每当设置完成之后,就要对这个项目进行重新布置,如果使用的服务器是tomcat的话,还需重新开启服务器。如果是业务流程非常繁琐的程序,这样的操作将会非常困难。目前开发者们就面临这样的问题,成百上千的用户同时在线使用同一个系统,这对于开发者来说,是非常头疼的问题。
(5) 对事件的支持不够。在struts2构架中, 事实上是一个web页面对应一个Action类,换一句话说:在Struts2中实际上是一个页面必须与一个Action事件相互对应,这种处理事件的方法叫作application event,application event与component event对于application event来说是一种比较简单事件。
(6) 前端表达语句。Struts2结合了JSTL标签库,因此它一般是用JSTL标签库的语句来取得数据的。不过JSTL的语句在搜索性能和信息收集两方面上的处理则尤为薄弱。
(7) Struts2的Action类通常是线程安全的方式,它只产生一个实例去接收所有用户发出的请求。因此action所用到的所有变量都一定要明确并且兼容,这一点就加大了线程的安全隐患。
(8) 对Servlet有着过强的依赖。 Struts2在使用Action类的时候一定要利用Response方法和Request方法,所以它无论如何也摆脱不了Servlet容器。
(9) 对Action类运行前和运行后的处理方法。 Struts2运行Action类的时候是以class文件的等级制度为基础的,很难在action类运行前和运行后进行处理。
2.3 Hibernate技术
Hibernate技术是一个开放型源代码的对象关系映射框架,该技术对JDBC进行了轻量级的对象封装,使得Java开发者可以自由地使用对象编程思想来控制数据库。只要系统采用了JDBC,就可以引入hibernate技术,该技术不仅可以在java客户端程序中使用,还可以在以B/S结构为框架的jsp系统中使用。最重要的是,Hibernate可以运用在J2EE框架中代替CMP,用来长时间存储数据。
2.3.1 Hibernate的优点
(1) 事务Trasaction(org.hibenate.Trasaction)。系统以它来定位执行单元范围的对象,由于它是单线程的,运行周期很短。事务以抽象的方法把系统从基层具体的CORBA、JDBC以及JTA事务分割。在特殊情况下,一个Session里面会包含多个Trasaction对象。虽然有时候不必使用这个对象,但无论是使用基层的API或者是Trasaction,事务边界的打开与关闭都是非常重要的。 JSP公司会议室预定管理系统的设计与实现(5):http://www.751com.cn/jisuanji/lunwen_12115.html