基于jspmysql的网上书店设计与实现内容摘要:

开发工具。 自从 1995年正式问世以来, Java的快速发展已经让整个 Web世界发生了翻天覆地的变化。 在早期, Java比较多的用在浏览器上,插入到网页中 (即是 Java Applet程序 ),成为最灵活、最强大的网页多媒体的载体,但由于 Java 虚拟机相对于个人电脑而言,有占用资源大,安全性相对较差等缺点, Applet逐渐的被后起之秀 Flash所替代,但随着 Java Servlet的推出, Java在电子商务方面开始崭露头角,最新的 JSP(Java Server Page)技术的推出,更是让 Java成为基于 Web的应用程序的首选开发工具,目前的 Java技术已成为所有大型电子商务项目的必然选择。 Java 程序可以获取网络上结点的图象、声音、 HTML 文档及文本等资源,并可以对获得的资源进行处理。 例如 Java程序可以每隔一定时间读取某结点提供的最新数据,并以图表的形式显示出来。 在编程处理上,一般先生成一个 URL类型的对象,然后用 Java中相应的方 法( method)获取该对象所代表的资源。 Structs 简介 简单的来说, Structs 是一个基于 SUN J2EE 平台 MVC 框架,很好的实现了 MVC 模式Structs。 通过一个配置文件,就可以把整个系统的各个部分联系起来。 随着 JSP 与 Servlet 技术大量应用于 Web 为基础的应用程序, Java开发人员群体认为应该以较佳之模式以提升 Web应用程序之可维护性与重新实用型。 早期 JSP规格书中曾例举两种可行之 JSP应用架构,分别为 Model1与 Model2。 在 Model1架构中, JSP直接处理 Web浏览器送来之请求,并辅以 JavaBean处理应用相关逻辑。 Model1架构单纯编写比较容易,但在 Model1中 JSP可以同时肩负 View与 Controller角色,两类程序代码有可能混杂而不易维护。 而 Model2 中将 Servlet 纳入架构中扮演前端Controller角色,将 Web浏览器送出之前请求集中送至 Servlet。 Servlet可集中管理使用者登入,权限控制,多国语言转型等前置处理,再视需求转向给对应之 JSP 处理。 Model2中采用了较佳之 MVC模式,但增加编写复杂度。 Struts只是一个 MVC框架( Framework) ,用于快速开发 Java Web应用。 Struts实现的重点在 C(Controller),包括 ActionServlet/RequestProcessor和我们定制的 Action,也为V(View)提供了一系列定制标签( Custom Tag)。 但 Struts 几乎没有涉及 M(Model),所以Struts可以采用 JAVA实现的任何形式的商业逻辑。 除此之外, Struts的优点主要集中体现在两个方面: Taglib和页面导航。 Taglib是Struts的标记库,灵活动用,能大大提高开发效率。 另外,就目前国内的 JSP开发者而言,除了使用 JSP自带的常用标记外,很少开发自己的标记,或许 Struts是一个很好的起点。 关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。 通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。 尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。 Servlet 技术简介 Servlet是使用 Java Servlet 应用程序设计接口编写的 Java 程 序。 它源于请求 /响应模式,如它可以接受来自客户端浏览器的 Http请求,并产生一个响应,然后将这个响应发送到客户端。 Servlets有不少的优点: 效率:使用传统的 CGI 编程,对于每个 HTTP 请求都会打开一个新的进程,这样将会带来性能和扩展性的问题。 使用 Servlets,由于 Java VM( Java 虚拟机)是一直运行的,因此开始一个 Servlet只会创建一个新的 Java线程而不是一个系统进程 功能强大 相对于传统的 CGI,由于有着广泛的 Java API 支持, Servlets 可做到传统CGI很困难甚至不能做的事。 Servlets可轻松做到共享数据、维护信息、跟踪 session等。 安全 Servlets 通过 Servlet 引擎在一个受到限制的环境下运行,与 Web 浏览器对applet的限制相似。 这可以避免恶意 Servlets的破坏。 花费 对于个人或者流量不大的站点来说,有不少“免费”或者低价的 web服务器可供选择。 如果你已经有一个 web服务器,你可以很容易加入 Servlet技术的支持,而且价格很便宜。 可移值性 Sevlet API得益于 Java平台,这是一个相当简单的 API, 几乎被所有的 Web浏览器支持,因此 Servlets可以轻松地在平台间移植,而且通常都无需作任何的修改。 Servlet通过创建一个框架来扩展服务器的能力,以提供 Web上进行请求和响应服务。 当客户机发送请求至服务器时,服务器可以将请求信息发送给 Servlet,并让 Servlet建立起服务器返回给客户机的响应。 当启动 Web服务器或客户机第一次请求服务时,可以自动装入 Servlet。 装入后, Servlet 继续运行直到其它客户机发出请求。 Servlet 的功能涉及范围很广。 Struts 优缺点 优点有 : 1. 实现 MVC模式,结构清晰 ,使开发者只关注业务逻辑的实现 . 2. 有丰富的 tag可以用 ,Struts的标记库 (Taglib),如能灵活动用,则能大大提高开发效率。 另外,就目前国内的 JSP开发者而言,除了使用 JSP自带的常用标记外,很少开发自己的标记,或许 Struts是一个很好的起点。 3. 页面导航 .页面导航将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。 通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。 尤其是当另一批开发者接手这个项目时,这种优势 体现得更加明显。 4. 提供 Exception处理机制 . 5. 数据库链接池管理 6. 支持 I18N 缺点 : 一、 转到展示层时,需要配置 forward,每一次转到展示层,相信大多数都是直接转到 jsp,而涉及到转向,需要配置 forward,如果有十个展示层的 jsp,需要配置十次 struts,而且还不包括有时候目录、文件变更,需要重新修改 forward,注意,每次修改配置之后,要求重新部署整个项目,而 tomcate这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。 现在就是这样,几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。 二、 Struts 的 Action必需是 thread- safe方式,它仅仅允许一个实例去处理所有的请求。 所以 action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。 三、 测试不方便 . Struts的每个 Action都同 Web层耦合在一起,这样它的测试依赖于 Web容器,单元测试也很难实现。 不过有一个 Junit的扩展工具 Struts TestCase可以实现它的单元测试。 四、 类型的转换 . Struts的 FormBean把所有的数据都作为 String类型,它可以使用工具CommonsBeanutils进行类型转化。 但它的转化都 是在 Class级别,而且转化的类型是不可配置的。 类型转化时的错误信息返回给用户也是非常困难的。 五、 对 Servlet的依赖性过强 . Struts处理 Action时必需要依赖 ServletRequest 和ServletResponse,所有它摆脱不了 Servlet容器。 六、 前端表达式语言方面 .Struts集成了 JSTL,所以它主要使用 JSTL的表达式语言来获取数据。 可是 JSTL的表达式语言在 Collection和索引属性方面处理显得很弱。 七、 对 Action执行的控制困难 . Struts创建一个 Action,如果想控制它的执行顺序将会非常困难。 甚至你要重新去写 Servlet来实现你的这个功能需求。 八、 对 Action 执行前和后的处理 . Struts处理 Action的时候是基于 class的hierarchies,很难在 action处理前和后进行操作。 九、 对事件支持不够 . 在 struts中,实际是一个表单 Form对应一个 Action类 (或DispatchAction),换一句话说:在 Struts中实际是一个 表单只能对应一个事件, struts这种事件方式称为 application event, application event和 ponent event相比是一种粗粒度的事件。 Struts 的工作流程 下图是 Struts 的工作流程,所有的请求都提交给 ActionServlet 来处理。 图 3251 ActionServlet 是一个 FrontController,它是一个标准的 Servlet,它将 request 转发给 RequestProcessor来处理, ActionMapping是 ActionConfig的子类,实质上是对 ,从中可以取得所有的配置信息 RequestProcessor 根据提交过来的 url,如 *.do,从 ActionMapping 中得到相应的ActionForn和 Action。 然后将 request的参数对应到 ActionForm中,进行 form验证。 如果验证通过则调用 Action的 execute()方法来执行 Action,最终返回 ActionFoward。 ActionFoward是对 mapping中一个 foward的包装,对应于一个 url ActionForm 使用了 ViewHelper 模式,是对 HTML 中 form 的一个封装。 其中包含有validate方法,用于验证 form数据的有效性。 ActionForm是一个符合 JavaBean规范的类,所有的属性都应满足 get 和 set 对应。 对于一些复杂的系统,还可以采用 DynaActionForm来构造动态的 Form,即通过预制参数来生成 Form。 这样可以更灵活的扩展程序。 ActionErrors是对错误信息的包装,一旦在执行 action或者 常,即可产生一个 ActionError并最终加入到 ActionErrors。 在 Form验证的过程中,如果有 Error发生,则会将页面重新导向至输入页,并提示错误。 Action是用于执行业务逻辑的 RequsestHandler。 每个 Action都只建立一个 instance。 Action 不是线程安全的,所以不应该在 Action 中访问特定资源。 一般来说,应改使用 Business Delegate 模式来对 Business tier进行访问以解除耦合。 Struts提供了多种 Action供选择使用。 普通的 Action只能通过调用 execute 执行一项任务,而 DispatchAction 可以根据配置参数执行,而不是仅进入 execute()函数,这样可以执行多种任务。 如 insert,update 等。 LookupDispatchAction 可以根据提交表单按钮的名称来执行函数。 Hibernate 简介 随着计算机应用软件的发展,应用程序逐渐由单层体系结构发展为多层体系结构。 其中,三层结构是目前典型的一种应用软件结构,如图 1左。 图 1 表述层:提供与用户交互的界面,如 GUI(图形用户界面), web页面等; 业务逻辑层:负责各种业务逻辑,直接访问数据库,提供对业务数据的保存、更新、删除和查询操作; 数据库层:负责存放管理应用的持久性业务数据 三层结构的特点是:所有下层向上层提供调用的接口,具体实现细节对上层透明。 层与层之间存在自上而下的依赖关系,即上层会访问下层的 API,但下层不依赖于上层。 Hibernate顾名思义冬眠的意思,相信它的创造者的用意在于用这个工具将数据库连接持久化层冬眠,关于 Hibernate网上争论很多,有人说其为工具,有人说其为框架,我相信一个人有一个人理解问题的角度,只要处理问题的方法正确就可以了。 Hibernate是采用 ORM映射机制的持久层开发工具,它是 JAVA应用和关系数据库之前的桥梁,负责 JAVA对象和关系数据之间的映射。 内部封装了 JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问 API,在 JAVA应用中使用到 Hibernate包含如下步骤。 Hibernate配置文件 3. 创建对象-关系-映射文件 HibernateAPI编写访问数据库的代码 如果想了解 Hibernate或者是要学习它的人必须要首先了解两个比较重要的概念: POJO:在 Hibernate 中理解为数据库表所对应的 Domain Object,如果从子面上理解就是无格式普通 JAVA 对象,简单的理解就是一个不包含逻辑代码的值对象。 从数据层面上看, POJO作为数据实体的对象化表现形式,也。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。