毕业论文---基于BS架构保险系统的设计和实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

毕业论⽂---基于BS架构保险系统的设计和实现
本科毕业设计(论⽂)
基于B/S架构保险系统的设计和实现
论⽂题⽬基于B/S架构保险系统的设计和实现系部艺术设计与计算机学部
专业⽹络⼯程
班级
学号
学⽣姓名
指导教师
摘要
⾯对⽇趋严峻的经营环境,各保险公司竞争致胜的关键是如何形成以客户服务为中⼼的营运主轴,并建⽴国际化、标准化与优质化的组织架构、作业流程,以及相应的信息系统,同时这也是各公司所需积极应对的挑战。

保险核⼼系统是⼀个保险公司开业的先决条件,保险公司也已经⼴泛地认识到保险公司业务的⾼速增长和⾯临的巨⼤竞争压⼒需要得到⼀个⾼度灵活的、可靠的和可扩展的核⼼业务系统的⽀持,这个核⼼业务系统需能够为保险公司和所有的⽤户提供完整、全⾯的业务处理⽀持。

国内的保险核⼼系统通常以保险公司现有业务作为模板进⾏开发,往往缺乏前瞻性,这样的系统缺乏可扩展性和可移植性。

由于不同保险公司之间的业务和经营模式差异性较⼤,需要通⽤核⼼系统具有⾼度的模块化、参数化、以满⾜不同保险公司的需求,同时保证系统具有良好的可扩展性和可移植性。

关键词:B/S,J2EE,保险核⼼系统,Java企业架构,架构模型,通⽤架构
Abstract
Facing the serious business environment, how to form to the customer service as a center spindle is the key to winning the competition, and the establishment of international standardization and quality of organizational structure, processes, the corresponding information systems, and required to actively respond to the challenges.Insurance core system is an opened prerequisite for the insurance company has also been widely recognized that the rapid growth of the insurance company's business and facing enormous competitive pressures need to be a highly flexible, reliable and scalable core business system support core business systems need to be able to insurance companies and all users to provide a complete, comprehensive business support. Domestic insurance core systems are usually developed as a template tot he existing business of the insurance company, and often a lack of forward-looking, such systems lack the scalability and portability. Business and business model differences between the different insurance companies, the common core system with a high degree of modularity, parameterization, in order to meet the needs of different insurance companies, while ensuring that the system has good scalability and portability .
Key words:B/S, J2EE, Insurance core system, Frameworkmodel, UniversalFramework
⽬录
1 绪论 (1)
1.1 背景及⽬的 (1)
1.2 研究主要内容 (2)
2 开发⼯具和开发技术选择 (3)
2.1 B/S模式 (3)
2.2 JSP技术 (4)
2.3 JSON技术 (8)
2.4 Struts技术 (10)
2.5 Spring技术 (11)
2.5 Hiberanate技术 (12)
2.6 本章⼩结 (13)
3 系统的需求分析 (14)
3.1 需求分析 (14)
3.2 新旧系统功能对⽐ (15)
3.3 本章⼩结 (16)
4 系统的设计 (17)
4.1 整体技术架构 (17)
4.2 构造思路 (23)
4.3 架构实现 (24)
4.3.1 PCIS V6应⽤服务器的配置 (24) 4.3.2 配置⽂件 (25)
4.3.3 DW展⽰ (30)
4.3.5 PCIS V6 业务层 (38)
4.3.6 业务层事务处理 (39)
4.3.7 PCIS V6集成层 (39)
4.4 数据库分析和设计 (43)
4.5 数据库物理结构设计 (44)
4.6 本章⼩结 (47)
5 系统模块的实现 (48)
5.1 ⽤户登录模块的实现 (48)
5.2 新增投保模块的实现 (50)
5.2.1 前台界⾯字段设置 (51)
5.2.2 后台界⾯字段设置 (54)
5.3 暂存单查询模块的实现 (54)
5.4 投保单查询模块的实现 (55)
5.5 本章⼩结 (55)
6 调试与测试 (57)
6.1 程序调试原则和⽬的 (57)
6.2 程序调试 (57)
6.3 系统测试 (58)
6.4 本章⼩结 (61)
总结 (62)
参考⽂献 (63)
致谢 (64)
1绪论
随着保险⾏业业务快速发展以及市场竞争加强,特别是渠道业务发展,将各个保险公司IT⽀撑系统推到竞争的第⼀线,直接进⼊―⾯对⾯‖的竞争。

梳理核⼼业务的出单流程,推出更⾼效便捷的―快速出单系统‖成为迫在眉睫的事项。

为V6保险快速出单系统需求调研提供指引,同时对系统设计提供参考性指导。

由于不同保险公司之间的业务和经营模式差异性较⼤,需要通⽤核⼼系统具有⾼度的模块化、参数化.以满⾜不同保险公司的需求,同时保证系统具有良好的可扩展性和可移植性。

J2EE(Java2Platform.EnterpriseEdition)是Sun公司推出的⼀个多层次结构的分布式应⽤程序模型,该模型具有重⽤组件的能⼒、基于扩展标记语⾔(XML)i~数据交换、统⼀的安全模式和灵活的事务控制,它为搭建具有可伸缩性、灵活性、易维护性的企业信息系统提供了良好的机制,与传统的互联⽹应⽤程序模型相⽐有着不可⽐拟的优势。

开发者不仅可以更快地发表对问题域新的解决⽅案,⽽且其独⽴于平台、基于组件的J2EE解决⽅案不再受到提供商的产品和应⽤程序编程界⾯的限制。

本⽂通过研究保险⾏业的核⼼系统的基础上.根据保险⾏业的共同特点给出了保险核⼼系统的总体构架模型,该总体架构模型解决了保险公司根据现有的业务模板开发出的系统的不⾜。

1.1背景及⽬的
当前渤海核⼼业务系统(由软通动⼒提供的PCISV5)系统运⾏稳定,从性能⽀撑上和功能扩展性均能满⾜。

但是,其的技术架构不能适应车险快速出单的要求。

需要进⾏根据业务发展的要求进⾏部分升级。

现有核⼼系统升级在规划当中,由于核⼼系统的升级涉及业务⾯⼴,外围系统众多,数据迁移量⼤⽽繁杂。

核⼼系统全⾯升级需要更长的时间以及更全⾯的准备。

基于上述原因,渤海保险决定建设―快速出单系统‖。

这也决定了该系统的建设重要⽬标:⾼效、快速,并能与当前的核⼼系统兼容。

1. 对出单点的⽹络情况要求不⾼。

对⽹络的要求⼀⽅⾯是⽹速要求,⼀⽅⾯是VPN要求。

快速出单系统应该允许公⽹访问,不能仅仅依靠VPN才能联通。

快速出单
系统的客户端(即:浏览器)与服务器之间传送信息最⼩化,交互次数最少化。

2. 对录单⼈员的系统熟悉度不应有过⾼要求。

系统假定⾯向三个层⾯的操作者:第⼀,了解车险业务,但不熟悉系统,系统应该从⼈的⾓度考虑,通过向导式的录⼊,引导客户录⼊信息;第⼆、初步了解系统,并且业务范围相对固定(例如:某品牌4S店),系统应该提供预定义模板的⽅式简化这部分⼈员的操作流程;第三、对系统⾮常熟悉的熟练操作⼈员,系统应该将信息分块,并考虑预提⼀部分信息做录⼊准备。

3. 系统要避免出现系统长时间等待或者死机现象,需要具有良好的交互性,能对操作员的动作快速做出反映,对于操作错误要准确定位。

1.2研究主要内容
原V6前台采⽤的DW(DataWindow)+XSLT形式做页⾯及数据展现,好处是制定页⾯时候模板化,开发⼈员耗费较少的时间定制页⾯,同时不需要关⼼页⾯的基础校验及事件管理。

但是由此也带来⼀些问题,由于界⾯的模板化,导致需要在客户端浏览器解析模板⽂件⽣成HTML才能展现,耗费客户端浏览器资源,同时对客户端机器有⼀定的要求,另外模板化对于个性页⾯的处理带来了不⽅便,对于部分需要特殊展现及特殊视觉效果⽀持不到位。

同时由于需要兼容原有V6的后台,所以快速出单推出了新的前台框架。

新的框架使⽤的是纯JSP作为前台页⾯展现及数据获取,在页⾯初始化的时候平台将初始化⼀个WD(WebData)的JSON数据结构存储数据。

由于使⽤的是JSP所以对页⾯布局也更为灵活,可以任意将数据布局。

界⾯上的Input标签的机构任然采⽤原产品定义的结构使⽤―别名.字段名‖作为字段Name,前台JSP维护了DW[?Base']的DW数据结构。

看到这⾥你可能会疑问,为什么前台还会有DW的形式存在。

那是因为后台向前台返回数据的时候仍然要⽤到DW的结构,但是对⾥⾯的数据类型、CodeList、校验类型、Onchange事件等均布响应,新平台关联DW仅仅使⽤Attribute标签的Name 属性,也就是说前台的⼀个Input的那么必须对应后台⼀个DW的Name,否则字段回填会有问题(不会影响字段值抽取,因为字段值抽取与DW⽆关)。

2 开发⼯具和开发技术选择
系统开发平台:My Eclipse 6.5
数据库管理系统软件:Oracle 10.0
运⾏平台:Windows XP / Window Vista / Window 7
Java 开发包:JDK5.0 以上
Web 服务器:Tomcat 6.0
本系统采⽤MVC架构模式开发,具体如下。

显⽰层:使⽤JSP技术开发
控制层:使⽤Servlet技术开发
模型层:使⽤Java Bean技术开发
2.1B/S模式
B/S(Browser/Server)结构即浏览器和服务器结构。

它是随着Internet技术的兴起,对C/S结构的⼀种变化或者改进的结构。

在这种结构下,⽤户⼯作界⾯是通过WWW 浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。

这样就⼤⼤简化了客户端电脑载荷,减轻了系统维护与升级的成本和⼯作量,降低了⽤户的总体成本(TCO)。

以⽬前的技术看,局域⽹建⽴B/S结构的⽹络应⽤,并通过Internet/Intranet模式下数据库应⽤,相对易于把握、成本也是较低的。

它是⼀次性到位的开发,能实现不同的⼈员,从不同的地点,以不同的接⼊⽅式(⽐如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。

特别是在JA V A这样的跨平台语⾔出现之后,B/S架构管理软件更是⽅便、快捷、⾼效。

由此⽽见,B/S架构软件的优势与劣势就⼗分明显了。

1. 维护和升级⽅式简单。

⽬前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为⽅便的特性。

对⼀个稍微⼤⼀点单位来说,系统管理⼈员如果需要在⼏百甚⾄上千部电脑之间来回奔跑,效率和⼯作量是可想⽽知的,但B/S架构的软件只需要管理服务器就⾏了,所有的客户端只是浏览器,根本不需要做任何的维护。

⽆论⽤户的规模有多⼤,有多少
分⽀机构都不会增加任何维护升级的⼯作量,所有的操作只需要针对服务器进⾏;如果是异地,只需要把服务器连接专⽹即可,实现远程维护、升级和共享。

所以客户机越来越―瘦‖,⽽服务器越来越―胖‖是将来信息化发展的主流⽅向。

今后,软件升级和维护会越来越容易,⽽使⽤起来会越来越简单,这对⽤户⼈⼒、物⼒、时间、费⽤的节省是显⽽易见的,惊⼈的。

因此,维护和升级⾰命的⽅式是―瘦‖客户机,―胖‖服务器。

2. 成本降低,选择更多。

⼤家都知道windows在桌⾯电脑上⼏乎⼀统天下,浏览器成为了标准配置,但在服务器操作系统上windows并不是处于绝对的统治地位。

现在的趋势是凡使⽤B/S架构的应⽤管理软件,只需安装在Linux服务器上即可,⽽且安全性⾼。

所以服务器操作系统的选择是很多的,不管选⽤那种操作系统都可以让⼤部分⼈使⽤windows作为桌⾯操作系统电脑不受影响,这就使的最流⾏免费的Linux操作系统快速发展起来,Linux除了操作系统是免费的以外,连数据库也是免费的,这种选择⾮常盛⾏。

⽐如说很多⼈每天上―⽹易‖(原⽂为新浪)⽹,只要安装了浏览器就可以了,并不需要了解―⽹易‖的服务器⽤的是什么操作系统,⽽事实上⼤部分⽹站确实没有使⽤windows操作系统,但⽤户的电脑本⾝安装的⼤部分是windows操作系统。

3. 应⽤服务器运⾏数据负荷较重。

由于B/S架构管理软件只安装在服务器端(Server)上,⽹络管理⼈员只需要管理服务器就⾏了,⽤户界⾯主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,⽹络管理⼈员只需要做硬件维护。

但是,应⽤服务器运⾏数据负荷较重,⼀旦发⽣服务器―崩溃‖等问题,后果不堪设想。

因此,许多单位都备有数据库存储服务器,以防万⼀。

2.2 JSP技术
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与⼀起建⽴的⼀种动态⽹页技术标准。

JSP技术有点类似ASP技术,它是在传统的⽹页HTML⽂件(*.htm,*.html)中插⼊Java程序段(Scriptlet)和JSP标记(tag),从⽽形成JSP⽂件(*.jsp)。

⽤JSP开发的Web应⽤是跨平台的,既能在Linux下运⾏,也能在其他操作系统上运⾏。

JSP是动态⽣成HTML、XML或其他格式⽂档的Web⽹页的技术标准。

JSP技术是以Java语⾔作为脚本语⾔的,JSP⽹页为整个服务器端的Java库单元提供了⼀个接
⼝来服务于HTTP的应⽤程序。

JSP使Java代码和特定的预定义动作可以嵌⼊到静态页⾯中。

JSP句法增加了被称为JSP动作的XML标签,它们⽤来调⽤内建功能。

另外,可以创建JSP标签库,然后像使⽤标准HTML或XML标签⼀样使⽤它们。

标签库提供了⼀种和平台⽆关的扩展服务器性能的⽅法。

JSP被JSP编译器编译成Java Servlets。

⼀个JSP编译器可以把JSP编译成JA V A代码写的servlet然后再由JA V A编译器来编译成机器码,也可以直接编译成⼆进制码。

JSP是模型-视图-控制器(MVC)的设计模式,为了把表现层presentation从请求处理request processing和数据存储data storage中分离开来,升阳公司推荐在JSP⽂件中使⽤⼀种模型-视图-控制器Model-view-controller模式。

规范的SERVLET或者分离的JSP ⽂件⽤于处理请求。

当请求处理完后,控制权交给⼀个只作为创建输出作⽤的JSP页。

有⼏种平台都基于服务于
⽹络层的模-视图-控件模式(⽐如Struts和Spring framework)。

1. ⼀个JSP页⾯可以被分为以下⼏部份:
(1) 静态数据,如HTML
(2) JSP指令,如include指令
(3) JSP脚本元素和变量
(4) JSP动作
(5) ⽤户⾃定义标签
(6) 静态数据
静态数据在输⼊⽂件中的内容和输出给HTTP响应的内容完全⼀致。

此时,该JSP 输⼊⽂件会是⼀个没有内嵌JA V A或动作的HTML页⾯。

⽽且,客户端每次请求都会得到相同的响应内容。

2. JSP指令
JSP指令控制JSP编译器如何去⽣成servlet,以下是可⽤的指令:包含指令include –包含指令通知JSP编译器把另外⼀个⽂件完全包含⼊当前⽂件中。

效果就好像被包含⽂件的内容直接被粘贴到当前⽂件中⼀样。

这个功能和C预处理器所提供的很类似。

被包含⽂件的扩展名⼀般都是"jspf"(即JSP Fragment,JSP碎⽚):<%@ include file="somefile.jsp" %>
页⾯指令page –页⾯指令有以下⼏个选项:
(1) import使⼀个JA V A导⼊声明被插⼊到最终页⾯⽂件
(2) contentType规定了⽣成内容的类型。

当⽣成⾮HTML内容或者当前字符集character set并⾮默认字符集时使⽤。

(3) errorPage处理HTTP请求时,如果出现异常则显⽰该错误提⽰信息页⾯
(4) isErrorPage如果设置为TRUE,则表⽰当前⽂件是⼀个错误提⽰页⾯
(5) isThreadSafe表⽰最终⽣成的servlet是否安全线程(thread safe)
(6) import="java.util.*"表⽰导⼊java实例
(7) contentType="text/html表⽰页⾯类型
(8) isErrorPage=false 表⽰⽆错页⾯
(9) isThreadSafe=trueJSP表⽰安全线程JSP
注意:在同⼀个JSP⽂件中只有"import"导⼊页⾯指令可以被多次使⽤。

标签库指令taglib –标签库指令描述了要使⽤的JSP标签库。

该指令需要指定⼀个前缀prefix(和C++的命名空间很类似)和标签库的描述URI:<%@ taglib prefix="myprefix" uri="taglib/mytag.tld" %>
3. JSP脚本元素和变量
(1) 以下是永远可⽤的标准脚本变量:
out:JSPWriter⽤来写⼊响应流的数据
page:servlet⾃⾝
pageContext:⼀个PageContext实例包括和整个页⾯相联系的数据,⼀个给定的HTML页⾯可以在多个JSP之间传递。

request:HTTP request对象
response:HTTP response对象
session:HTTP session对象
(2) 脚本元素
有三个基本的脚本元素,作⽤是使JA V A代码可以直接插⼊servlet。

⼀种是声明标签,在JA V A SERVLET的类体中放⼊⼀个变量的定义。

静态的数据成员也可以如此定义。

<%! int serverInstanceVariable = 1; %>⼀种是脚本标签,在JA V A SERVLET的类的_jspService()⽅法中放⼊所包含的语句。

<%int localStackBasedVariable = 1; out.println(localStackBasedVariable); %>⼀种是表达式标签,在JA V A SERVLET的类中放⼊待赋值的表达式,表达式注意不能以分号结尾。

4. JSP动作
JSP动作是⼀系列可以调⽤内建于⽹络服务器中的功能的XML标签。

JSP提供了以下动作:
jsp:include和⼦过程类似,JA V A SERVLET暂时接管对其它指定的JSP页的请求和响应。

当处理完该JSP页后就马上把控制权交还当前JSP页。

这样JSP代码就可以在多个JSP页中共享⽽不⽤复制。

jsp:param可以在jsp:include, jsp:forward或jsp:params块之间使⽤。

指定⼀个将加⼊请求的当前参数组中的参数。

jsp:forward⽤于处理对另⼀个JSP或SERVLET的请求和响应。

控制权永远不会交还给当前JSP页。

jsp:pluginNetscape Navigator的⽼版本和Internet Explorer使⽤不同的标签以嵌⼊⼀个applet。

这个动作产⽣为嵌⼊⼀个APPLET所需要的指定浏览器标签。

jsp:fallback如果浏览器不⽀持APPLETS则会显⽰的内容。

jsp:getProperty从指定的JavaBean中获取⼀个属性值。

jsp:setProperty在指定的JavaBean中设置⼀个属性值。

jsp:useBean创建或者复⽤⼀个JavaBean变量到JSP页。

上述说明了⼀种在⽹页中嵌⼊applet的统⼀⽅法。

在标签出现之前,并没有⼀种嵌⼊applets的通⽤⽅法。

这个标签设计得并不好,但有希望在以后加⼊动态属性(height="${param.height}", code="${chart}"等)和动态参数的新功能。

⽬前jsp:plugin 标签不允许动态调⽤applets。

例如,你如果有⼀个图表applet需要数据点以参数形式被传⼊,除⾮数据点的数量是⼀个常量,否则你就不能使⽤ResultSet循环来创建jsp:param 标签,你不得不⼿写每个jsp:param标签的代码。

⽽每个上述jsp:param标签可以有⼀个动态命名和动态值。

scope属性可以是request, page, session or application,它有以下⽤意:
request—该属性在请求的⽣命周期内有效,⼀旦请求被所有的JSP页处理完后,那么该属性就不可引⽤。

page:该属性只是当前页中有效。

session:该属性在⽤户会话的⽣命周期内有效。

application:该属性在各种情况下都有效,并且永远不会被变为不可引⽤,和全局变量global variable相同。

可⽤⼀个创建⼀个类的实例,并且把该实例存储在属性中,该属性将在该请求的⽣命周期内有效。

它可以在所有被包含或者从主页⾯(最先接收请求的页⾯)转向到的JSP 页之间共享。

5. JSP标签库
除了JSP预定义动作之外,开发者还可以使⽤JSP标签扩展API添加他们⾃定义的动作。

开发者写⼀种实现⼀个标签的界⾯和⼀个标签库的XML描述⽂件的JA V A类,这就能指定标签和实现标签的JA V A类。

JSP编译器将会载⼊.tld这个XML⽂件,然后可以看到标签myaction由JA V A类MyActionTag实现。

当该标签⾸次在⽂件中使⽤时,将会创建⼀个MyActionTag的实例。

然后(⽽且当每次该标签被使⽤时),当出现开始标签时,将会调⽤doStartTag()⽅法,根据开始标签的结果,来决定如何处理标签的主体。

主体是指开始标签和结束标签之间的⽂本。

这个doStartTag()⽅法将会返回如下之⼀:
SKIP_BODY:标签之间不做处理。

EV AL_BODY_INCLUDE:对标签之内主体进⾏赋值。

EV AL_BODY_TAG:对标签之内主体进⾏赋值并把结果输出到流(保存在标签的主体内容属性中)。

注意:如果标签扩展了BodyTagSupport类,当主体被执⾏时会在调⽤doEndTag()之前调⽤doAfterBody()⽅法。

该⽅法⽤于实现循环结构。

当结束标签出现时,它会调⽤doEndTag()⽅法,该⽅法会返回如下两做之⼀:
EV AL_PAGE:表⽰JSP⽂件的剩余部份将会被执⾏。

SKIP_PAGE:表⽰将不会再有更多执⾏操作。

当前JSP页交出控制权。

就象在转发动作中的作⽤⼀样。

2.3 JSON技术
JSON(JavaScript Object Notation) 是⼀种轻量级的数据交换格式。

它基于JavaScript (Standard ECMA-262 3rd Edition -December 1999)的⼀个⼦集。

JSON采⽤完全独⽴于
语⾔的⽂本格式,但是也使⽤了类似于C语⾔家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。

这些特性使JSON成为理想的数据交换语⾔。

易于⼈阅读和编写,同时也易于机器解析和⽣成。

JSON格式是1999年《JavaScript Programming Language, Standard ECMA-262 3rd Edition》的⼦集合,所以可以在JavaScript以eval()函式(javascript通过eval()调⽤解释器)读⼊。

不过这并不代表JSON⽆法使⽤于其他语⾔,事实上⼏乎所有与⽹页开发相关的语⾔都有JSON函式库。

1. JSON⽤于描述数据结构,有以下形式存在。

(1) 对象(object):⼀个对象以―{‖开始,并以―}‖结束。

⼀个对象包含⼀系列⾮排序的名称/值对,每个名称/值对之间使⽤―,‖分割。

(2) 名称/值对(collection):名称和值之间使⽤―:‖隔开,⼀般的形式是:{name:value};⼀个名称是⼀个字符串;⼀个值可以是⼀个字符串,⼀个数值,⼀个对象,⼀个布尔值,⼀个有序列表,或者⼀个null值。

(3) 值的有序列表(Array):⼀个或者多个值⽤―,‖分割后,使⽤―[‖,―]‖括起来就形成了这样的列表,形如:[collection, collection]
(4) 字符串:以""括起来的⼀串字符。

(5) 数值:⼀系列0-9的数字组合,可以为负数或者⼩数。

还可以⽤―e‖或者―E‖表⽰为指数形式。

(6) 布尔值:表⽰为true 或者false。

2. 安全性问题
(1) JavaScript的eval()
由于JSON在语法上是JavaScript的⼦集合,所以⼀般都会使⽤eval()作为读取资料的⽅式,如果是针对可靠的数据来源,在不⽀持原⽣JSON解析的浏览器上⾯这是最快速的⽅法。

然⽽由于eval⽅法同样可以执⾏任意的JavaScript代码,因此当数据来源不可靠时则可能产⽣安全性问题。

其中⼀种防⽌不安全代码出现的解决办法是透过浏览器原⽣⽀持的JSON.parse(str)⽅法读取JSON资料,⽬前已经得到⼤部分主流浏览器的⽀持(IE8+,Firefox 3.5+,Chrome4+/Safari4+,Opera10+),在不⽀持原⽣JSON对象的浏览器上⾯可以使⽤parseJSON⽅法进⾏读取,parseJSON采⽤解析器验证读⼊的代码是否真的是JSON代
码,这样就提供了较好的安全性。

但是,由于这是⽤模拟的⽅式读取,速度上会⽐eval()慢。

(2) 跨站存取问题
另外⼀个安全上的问题则是跨站请求伪造(Cross-site request forgery,简称CSRF 或XSRF)。

这个问题在Javascript中的状况是,由于Javascript采⽤了称为―沙盒‖的机制,这种机制限制Javascript引擎仅能引⼊同⼀个站点的代码,因⽽某种程度上提⾼了安全性。

(3) 与XML格式的⽐较
JSON与XML最⼤的不同在于XML是⼀个完整的标记语⾔,⽽JSON不是。

这使得XML在程式判读上需要⽐较多的功夫。

主要的原因在于XML的设计理念与JSON 不同。

XML利⽤标记语⾔的特性提供了绝佳的延展性(如XPath),在数据存储,扩展及⾼级检索⽅⾯具备对JSON的优势,⽽JSON则由于⽐XML更加⼩巧,以及浏览器的内建快速解析⽀持,使得其更适⽤于⽹络数据传输领域。

2.4 Struts技术
在Struts中,已经由⼀个名为ActionServlet的Servlet充当控制器(Controller)的⾓⾊,根据描述模型、视图、控制器对应关系的struts-config.xml的配置⽂件,转发视图(View)的请求,组装响应数据模型(Model)。

在MVC的模型(Model)部分,经常划分为两个主要⼦系统(系统的内部数据状态与改变数据状态的逻辑动作),这两个概念⼦系统分别具体对应Struts⾥的ActionForm与Action两个需要继承实现超类。

在这⾥,Struts可以与各种标准的数据访问技术结合在⼀起,包括Enterprise Java Beans (EJB), JDBC与JNDI。

在Struts的视图(View)端,除了使⽤标准的JavaServer Pages (JSP)以外,还提供了⼤量的标签库使⽤,同时也可以与其他表现层组件技术(产品)进⾏整合,⽐如Velocity Templates,XSLT等。

通过应⽤
Struts的框架,最终⽤户可以把⼤部分的关注点放在⾃⼰的业务逻辑(Action)与映射关系的配置⽂件(struts-config.xml)中的。

它也有优缺点。

很多开发⼈员认为Struts⽬前尚不成熟,应⽤的成本较⾼。

附带的⼀点点建议:Struts的优点主要集中体现在两个⽅⾯:Taglib和页⾯导航。

Taglib是Struts的标记库,灵活动⽤,能⼤⼤提⾼开发效率。

Struts这个名字来源于在建筑和旧
式飞机中使⽤的⽀持⾦属架。

它的⽬的是为了减少在运⽤MVC设计模型来开发Web应⽤的时间。

你仍然需要学习和应⽤该架构,不过它将可以完成其中⼀些繁重的⼯作。

Struts跟Tomcat、Turbine等诸多Apache项⽬⼀样,是开源软件,这是它的⼀⼤优点,使开发者能更深⼊的了解其内部实现机制。

它的发展历程。

在Java EE的Web应⽤发展的初期,除了使⽤Servlet技术以外,普遍是在JavaServer Pages(JSP)的源代码中,采⽤HTML与Java代码混合的⽅式进⾏开发。

因为这两种⽅式不可避免的要把表现与业务逻辑代码混合在⼀起,都给前期开发与后期维护带来巨⼤的复杂度。

为了摆脱上述的约束与局限,把业务逻辑代码从表现层中清晰的分离出来,2000
年,Craig McClanahan采⽤了MVC的设计模式开发Struts。

后来该框架产品⼀度被认为是最⼴泛、最流⾏JA V A的WEB应⽤框架。

2006年,WebWork与Struts这两个优秀的Java EE Web框架(Web Framework〕的团体,决定合作共同开发⼀个新的,整合了WebWork与Struts优点,并且更加优雅、扩展性更强的框架,命名为―Struts 2‖,原Struts的1.x版本产品称为―Struts 1‖。

⾄此,Struts项⽬并⾏提供与维护两个主要版本的框架产品——Struts 1与Struts 2。

2.5 Spring技术
Spring 也表⽰是⼀个开源框架,是为了解决企业应⽤程序开发复杂性由Rod Johnson创建的。

框架的主要优势之⼀就是其分层架构,分层架构允许使⽤者选择使⽤哪⼀个组件,同时为J2EE 应⽤程序开发提供集成的框架。

Spring使⽤基本的JavaBean 来完成以前只可能由EJB完成的事情。

然⽽,Spring的⽤途不仅限于服务器端的开发。

从简单性、可测试性和松耦合的⾓度⽽⾔,任何Java应⽤都可以从Spring中受益。

Spring 也是⼀个开源的Java/Java EE全功能栈(full-stack)的应⽤程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。

该框架基于Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)⼀书中的代码,最初由Rod Johnson 和Juergen Hoeller等开发。

Spring Framework 提供了⼀个简易的开发⽅式,这种开发⽅式,将避免那些可能致使底层代码变得繁杂混乱的⼤量的属性⽂件和帮助类。

1. Spring 中包含的关键特性
强⼤的基于JavaBeans 的采⽤控制翻转(Inversion of Control,IoC)原则的配置管理,使得应⽤程序的组建更加快捷简易。

⼀个可⽤于从applet 到Java EE 等不同运⾏环境的核⼼Bean ⼯⼚。

数据库事务的⼀般化抽象层,允许宣告式(Declarative)事务管理器,简化事务的划分使之与底层⽆关。

内建的针对JTA 和单个JDBC 数据源的⼀般化策略,使Spring 的事务⽀持不要求Java EE 环境,这与⼀般的JTA 或者EJB CMT 相反。

JDBC 抽象层提供了有针对性的异常等级(不再从SQL异常中提取原始代码),简化了错误处理,⼤⼤减少了程序员的编码量。

再次利⽤JDBC时,你⽆需再写出另⼀个'终⽌' (finally) 模块。

并且⾯向JDBC的异常与Spring 通⽤数据访问对象(Data Access Object)异常等级相⼀致。

以资源容器,DAO 实现和事务策略等形式与Hibernate,JDO 和iBATIS SQL Maps 集成。

利⽤众多的翻转控制⽅便特性来全⾯⽀持,解决了许多典型的Hibernate集成问题。

所有这些全部遵从Spring通⽤事务处理和通⽤数据访问对象异常等级规范。

灵活的基于核⼼Spring 功能的MVC ⽹页应⽤程序框架。

开发者通过策略接⼝将拥有对该框架的⾼度控制,因⽽该框架将适应于多种呈现(View)技术,例如JSP,FreeMarker,Velocity,Tiles,iText 以及POI。

值得注意的是,Spring 中间层可以轻易地结合于任何基于MVC 框架的⽹页层,例如Struts,WebWork,或Tapestry。

2. 提供诸如事务管理等服务的⾯向⽅⾯编程框架。

在设计应⽤程序Model时,MVC 模式(例如Struts)通常难于给出⼀个简洁明了的框架结构。

Spring却具有能够让这部分⼯作变得简单的能⼒。

程序开发员们可以使⽤Spring的JDBC 抽象层重新设计那些复杂的框架结构。

2.5 Hiberanate技术
Hibernate是⼀种Java语⾔下的对象关系映射解决⽅案。

它是使⽤GNU宽通⽤公共许可证发⾏的⾃由、开源的软件。

它为⾯向对象的领域模型到传统的关系型数据库的映射,提供了⼀个使⽤⽅便的框架。

Hibernate也是⽬前Java开发中最为流⾏的数据库持久层框架,现已归JBOSS所有。

它的设计⽬标是将软件开发⼈员从⼤量相同的数据持久层相关编程⼯作中解放出来。

⽆论是从设计草案还是从⼀个遗留数据库。

相关文档
最新文档