1、1毕业设计开题报告计算机科学与技术基于WEB应用的电子印章制作控件1、选题的背景与意义传统的商务办公模式,为了保证文件确由当事人或某机关所签发以保证文件未被篡改,必须在纸张上签字或者盖上公章。但传统公章却也有被盗用或被仿制的威胁,其使用性面临极大考验。在网络高速发展的现代,传统的办公模式逐渐向电子商务转变。在网络高速发展的大环境下,文件传递已采取电子邮件的方式,重要的文件签署之类的问题使得电子印章的应用需求也越发重视。何为电子印章电子签章泛指所有以电子形式存在,依附在电子文件并与其逻辑相关,可用以辨识电子文件签署者身份,保证文件的完整性,并表示签署者同意电子文件所陈述事项的内容。那么电子印章的
2、优势在哪里首先电子印章具难以仿制性。制作印章需要大量参数,包括印章类型、宽度、长度、字体颜色、边线颜色、所要打印的字符串、字符串字体、字符串相隔间距等参数,其中颜色还有三个三原色参数。通过这些参数,经过一些算法,可以精确的得到包括每个需要打印的字缩放后的大小,椭圆边线处字体倾斜程度。经过一系列的计算,以及绘制,可以得到一个只有百万分之一的可能性相同的印章。其次,制作出的电子印章还有法律保护。网络安全技术的不断发展以及中华人民共和国电子签名法的制定,给电子签章的兴起奠定了安全技术的基础。最重要的是,即使有人试图仿冒印章,也难以成功。制作印章除了计算绘图算法外,还需要加上许多复杂的加密/解密算法。
3、已经成熟运用的算法有数字签名RSA公钥体制,算法标准公钥长度1024、2048、4096BITS;数字加解密国家密码管理局认可的加密算法;数字水印印章水印生成之后经许可的加密算法进行封装,以防盗取;指纹识别和数字签名相结合。2如今市面上已有制作成型的产品,并已上市。印章种类繁多,包含圆形印章,三角印章,四边形印章等。成品可以应用于各行各业,如制造业、商业、金融、电信、电力、建筑等行业。为企业的网上协同办公提供了安全保证。但是,一些产品还是有些缺陷,例如字体在椭圆长轴旋转处处理不够平滑,由于椭圆旋转的问题,字体间距有差异。二、研究的基本内容与拟解决的主要问题研究的基本内容1JAVABEAN封装对
4、象(印章)所有参数。电子印章制作控件的架构设计,包括控件调用接口设计与实现。2基本绘制功能的设计与实现,包含各类印章的接口参数、图形与字符的绘制算法等。3GIF格式或PNG格式的透明图片的生成。4控件调用测试程序拟解决的问题1字符绘画时字符处理平滑的问题2字符绘画时字符间距的处理3利用动态库,输出GIF格式或PNG格式的透明图片以方便嵌入WEB、文本以及PDF中三、研究的方法与技术路线1、电子印章制作空间的架构可以很明显看出在椭圆长轴处,字符处理不够细腻。GUI层算法工具JAVABEAN根据算法结果在画板上绘制电子印章调用绘制算法传输数据电子印章基本数据3GUI层通过用户输入可以得到绘制印章所
5、需的参数,通过按键封装成一个对象。JAVABEAN包装了所有参数。GUI层通过传输JAVABEAN对象调用算法工具包,经过一系列的计算可以得到绘制结果。2、电子印章制作文本角度位置的算法印章生成的一种一个重要部分,也是难点部分就是绘制某个字,要计算该字的角度和实际的位置。假设某字在A点位置,椭圆长轴为WIDTH,短轴为HEIGHT,字符串长度为N,字符串总占用角度为,A点坐标为X,Y。则A点的角度为360/NN1/2190A点坐标XCOSWIDTHYSINHEIGHTA4A点所在切线斜率KKHEIGHT2/WIDTH2X/YK的切线角度()TAN1(K)/180在根据4个象限,得到真正的切线对
6、应的角度第一四象限180第二三象限字体的旋转由已知A点坐标(X,Y),对A点进行平移变换,结果A点的新坐标(X1,Y1)为对A点进行旋转,结果A点的新坐标(X1,Y1)为X1XCOS()YSIN(),Y1XSIN()YCOS()字符经过平移和旋转后所得的坐标应当如下XB10DXCOSSIN0XBYB01DYSINCOS0YBW001001W3、JAVA绘制接口在JAVA中绘制图像和字体的类为GRAPHICS。GRAPHICS是所有图形的抽象基类,其中拥有本次设计所需的一些方法,包括绘画圆弧,绘画字符,设置字符字体之类。GRAPHICS2D继承了GRAPHICS类,其主要用途是提供对几何形状,坐
7、标转换、文本布局具有更复杂的控制,也是本项目研究的重点之一。形成透明图像为了形成透明图像,调用DLL动态数据库是必不可少的。JAVA中,调用DLL动态链接库的通常使用JNI方案。JNI的应用方案是基于JAVA类和本地函数相映射的。调用步骤相对麻烦,5涉及到JAVA编程以及C/C编程。首先,我们需要创建一个JAVA类,这个JAVA类需要调用SERIALCOMMDLL库。作为JAVA环境端的设计,在此类中需要装载库,并声明方法。代码如下PUBLICCLASSJSERIALCOMM类名PUBLICJSERIALCOMM(类名)/空的构造方法STATICSYSTEMLOACLLILBRARY“SERI
8、ALCOMMDL“(类库名)/调用DLL库SERIALCOMMDLPUBLICNATIVESTATICVOIDSETCOMM/串口初始化和设置PUBLICNATIVESTATICINTWATCHSERIALCOMM/开始检测串口PUBLICNATIVESTATICINTJSTOPWATCH/停止检测串口PUBLICSTATICVOIDMAINSTRINGARGSMTSTART,STOPJSERIALCOMMCOMMNEWJSERIALCOMMCOMMSETCOMMSTARTCOMMWATCHSERIALCOMMSTOPCOMMJSTOPWATCH使用命令“JAVAC类文件JAVA“编译代码,A
9、编译通过后,使用命令“JAVAH类文件JAVA“生成头文件类名HJSERIALCOMMJAVAH,其主要内容如下INCLUDE“JNIH“INIEXPORTJINTJNICALLJAVA_JSERIALCOMM_SETCOMMJNIENV,JCLASS6INIEXPORTJINTJNICALLJAVA_JSERIALCOMM_WATCHSERIALCOMMJNIENV,JCLASSINIEXPORTJINTJNICALLJAVA_JSERIALCOMM_JSTOPWATCHJNIENV,JCLASS之后要在VC中继续工作。建立工程,命名为JSERIALCOMM,将JSERIALCOMMH、JN
10、IHTEXTALIGNMENTWEBAPPLICATIONTRANSPARENTIMAGE15目录1引言611电子印章的背景与意义612电子印章的应用领域813课题研究的目标92应用程序架构1121基于B/S体系1122MVC模式1123设计思想与功能设计123网络应用关键技术1531JAVASCRIPT语言1532AJAX技术16321AJAX发送数据17322响应数据的处理1833SERVLET请求处理机制1934JSP技术19341SESSION机制20342JSP标记库介绍与使用2035STRUTS2技术21351STRUTS2思想21352STRUTS2应用程序配置214电子印章的数
11、据传输2441浏览区处理数据2442STRUTS2与数据传输26421AJAX与STRUTS26422图片传输26423文件传输285电子印章布局算法3151JAVA图片布局3152印章图形生成算法3116521印章外圈圆形生成31522印章中心图片正五角星生成3253文字排列算法34531JAVA文字绘制缺陷与调整34532圆形印章文字位置计算34533椭圆印章文字位置计算3654JAVA生成透明图片376总结38参考文献39致谢39171引言11电子印章的背景与意义现代电子商务发展迅猛,每天产生的电子文件不计其数,其中还有大量需要盖上公章进行文件确认。这个流程是必须的,但又相当繁琐,在这样
12、的情况下,一个新的概念应运而生让电子印章来替代普通的公章。电子印章泛指以电子形式存在的,依附在电子文件上同时又与文件逻辑相关的电子内容。电子印章可以用来辨识电子文件签署者的身份,保证文件的完整性与未更改性。当然,电子印章继承了一般公章的功能表示签署者同意电子文件所陈述事项的内容。1在2005年4月1日,我国信息化建设迎来了一个新的时代,从那个时刻起,我国信息化开始就有法可依了。电子签名法作为我国规范电子商务活动的第一部法律诞生了,它的存在赋予了电子印章和数据电文法律效力,并且在很大程度上消除网络信用危机。某种意义上,电子签名法实现了真正意义上的“无纸化办公”,让电子印章具有了和一般公章同等的法
13、律效力。2电子印章有不同于一般的普通公章。电子印章要保证其本身唯一性,不可仿制性,所以一系列的加密机制为其保驾护航。已经成熟运用的算法有数字签名RSA公钥体制,算法标准公钥长度1024、2048、4096BITS;数字加解密国家密码管理局认可的加密算法;数字水印印章水印生成之后经许可的加密算法进行封装,以防盗取;指纹识别和数字签名相结合。PKI(PUBLICKEYINFRASTRUCTURE)是一种利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。用户可以利用PKI平台所提供的各种服务来进行安全通信。应用电子印章需要数字证书,数字证书是标识网络用户身份信息的一系列数据,是用来识
14、别网络通讯时各方的身份。数字证书的特性保证在这个世界上不可能出现完全一样的数字证书,而其中所包含的一对私钥和公钥,私钥的作用的是对数据进行签名,而公钥则是用来验证签署者的身份。因为是利用数字证书私钥来签名,所以私钥的安全性非常重要,通常做法是将私钥存储在USBKEY中。USBKEY是一种USB接口的硬件存储设备。USBKEY的模样跟普通的U盘差不多,不同的是它里面存放了单片机或智能卡芯片,利用USBKEY内置的公钥算法可以实现对用户身份的认证。3可以说,安全的电子印章,是印章与科技结合的印章新品种。它的推广应用,不仅将有效地打击由印章引起的刑事犯罪活动,也有利于加强公安机关对印章的统一管理和监
15、控。18图11电子印章使用流程第一步我们可以上网搜索印章生成程序,下载程序并生成我们所想的漂亮的电子印章图片。第一步之后,为了保护各位使用者的权益,请各位使用者到有关部门进行申请注册电子印章。第二步USBKEY中含有自带的CPU,可以进行对用户信息的加密,存放数字证书等重要信息。第三步当我们需要在文件上使用电子印章时,我们从USBKEY中取出信息,并且对文件进行加密,目的是为了保证文件在任何情况下不被篡改。第四步文件传输后,接收者阅读文件,通过公钥可以得知印章的使用者,同时由于印章算法对文件进行了加密,接收者无法私自改动文件内容,以此保障双方的权益。接收者确认文件后,同样加盖自己的印章。这样,
16、一桩电子商务的交易就可以在几分钟内结束,期间没有使用一般的公章,没有使用纸质用品,没有任何交通工具的使用。电子印章为电子商务提供了简单、轻松、边界的办事效果。12电子印章的应用领域现在应用电子印章的各种部门机构相当多,政府机构的办公自动化、政府机关间的收发文件管理以及联网办公需要相应的电子印章,以保证电子公文等信息的完整性、防篡改性和不可抵赖性。政府与企业之间存在大量的信息交换,如网上报税、网上申报、网上审批、网上工商年检、电子海关等流程中运用电子印章来确保网上办公的安全性。电子印章还为企业的网上协同办公提供了安全保证,企业与企业之间的协同商务提供可信任的认证、保证信息交换的安全性和有效性4。
17、同时既保证了工作的高效率,又利用现代化手段节约了能源,每年可省下大量的纸质成本。其实,社会中的各行各业都会用到电子印章,大量的业务流程也会使用到电子印章,19它的诞生与存在已经为许多工作带来了方便,它的发展道路也相当宽广。现在的电子印章相比最初的诞生已经不在单一,有应用与WORD文档的,应用于EXCEL表格文件的,应用于PDF文件的,也有应用于网页、图片等电子印章产品。13课题研究的目标图12电子印章成品效果现在的电子印章产品发展趋势良好,当然还有潜力可以去改进。图12绘制了电子印章的成品,显而易见的是在椭圆印章的长轴两端文字处理不够平滑,影响美观度。本系统将要对这种不足进行改进,将椭圆印章轴
18、端点位置的文字做再处理。再者,为了顺应电子商务的发展趋势,减轻客户端程序的运行负担,系统应当设计成浏览器/服务器结构。数据库用户信息存储服务器提供印章生成算法客户端浏览器传输印章参数1传输印章图片2下载印章图片图13网上电子印章系统基本功能一个基本的网上电子印章系统将需要如下功能1注册功能。服务器将有一套更为完善的数据库系统,用来存放用户信息。在以前更为依靠客户端的应用程序中,用户通过购买序列号得到产品的使用权。其缺陷之一是当用户丢失了序列号后,用户只能通过再次购买序列号才能得到再次使用的权限。缺陷之二则是如今有多种文件格式相对应的印章产品,这种情况下是否用户需要多次购买产品序列号而使用印章产
19、品2界面友好,交互设计优越。在一个网络应用系统中,界面友好并不仅仅只是指漂亮华丽的界面,在设计概念中,友好的界面是指用户几乎感觉不到等候的感觉。为了加强用户体验,人机交互的设计更为重要。人机交互技术主要研究人与计算机之间的信息交换,一些相同功能的效果不应该让用户感觉到页面的跳转。3多种功能印章使用。电子印章产品种类繁多,相对于客户端程序,难道我们需要20使用不同的产品就要下载多种应用程序如此设计理念我们应当抛弃,而应该多为方便用户考虑。网上电子印章系统应该为用户提供多种电子印章产品的使用。4提供印章下载功能。这是电子印章应用的基本功能,方便用户使用。如果要将电子印章设计更为完善,系统可以为用户
20、提供一整套的服务,包括与有关部门联网提供注册电子印章的服务,提供数字证书、PKI算法为电子印章直接加密,为将印章加入USBKEY保驾护航。图14电子印章系统交互而电子印章系统同用户之间简单的交互过程如图14。当用户希望使用电子印章产品时,首先需要完成系统注册。然后进入交互页面,用户每次输入参数,系统将立即生成产品图片在当前页面而没有页面跳转,让用户觉得与使用客户端程序没有差异,从而感觉使用方便快捷。而用户在查看印章效果感到不满意时可以立即进行改变参数,与服务器进行交互直到用户满意为止。之后用户可以下载产品进行使用。本次设计的目标1将电子印章系统设计成网络应用。2为服务系统完善电子印章在线生成功
21、能,并且界面友好。3提供印章完成后的透明图片下载。212应用程序架构21基于B/S体系电子商务工作正逐步抛弃客户端/服务期端结构,基于C/S体系设计的应用程序需要客户端安装程序,更新操作复杂,兼容性差,并且维护起来繁琐。然而这些缺点恰恰是浏览器/服务器(B/S)结构的优点。为了响应电子商务的趋势,电子印章系统采用BROWSER/SERVER体系结构。在B/S体系的应用中,对于客户端计算机的要求大大降低,客户端不需要安装任何专门的软件,仅仅一台可以上网的、有浏览器的电脑,就可以在任何地方对网站进行请求操作。其优点是客户端零维护,无需升级。算法工具WEB服WEB应务器IIS用程序浏览器图21B/S
22、结构图如图21所示B/S体系的运行过程。用户通过浏览器发送应用请求到服务器,而服务器则对数据做处理、执行业务逻辑、生成页面,再将响应数据发回给浏览器。22MVC模式MVCM(MODEL)模型,V(VIEW)视图,C(CONTROLLER)控制器。MVC的基本思想是将一个软件的组成部分划分成三部分,即M(模型)封装业务逻辑;V(视图)数据展现,也就是将模型提供的数据以合适的方式展现出来;C(控制器)将视图与模型的关系解耦,即将视图与模型的调用要通过控制器来协调,目的是为了实现模型复用。MVC模式这样设计的目的是为了实现模型复用,也就是说可以使用多种视图来表示,例外,MVC模式提供了用户接口,用户
23、可以通过视图来向系统发送请求。22图22MVC运行流程MVC运行流程如图22所示,其中,左侧是浏览器,右侧是服务器。用户在输入页面输入请求数据(REQUEST)并发送到服务器,服务器接受到数据时并不直接处理用户REQUEST,而是先交给CONTROLLER,通过CONTROLLER解析请求地址,从而转发交个某个特定的业务逻辑(ACTION)来处理数据,再由ACTION调用数据中对应的MODEL进行数据加工。最后,ACTION对数据进行封装,再交给VIEW,由VIEW作为载体显示数据并将响应数据(RESPONSE)发送回浏览器。MVC的运行流程看似复杂,而且还增加了复杂度和开发工作量,但是,MV
24、C却将服务器的职能划分干净,方便对于程序的理解以及代码的维护。23设计思想与功能设计电子印章系统是个小型的网络服务应用,在初始访问应用时,页面生成已初始化的印章图片,用户通过改变印章参数进行对印章外观的更改。为了更好的考虑用户体验,无论哪项操作完成,最后的图片呈现结果仍然是原来页面。后台方面,运用STRUTS2框架进行对请求的解析,发送给相应的ACTION,由ACTION对数据进行处理。BEAN中包含印章实体与数据处理,再数据处理完毕之后,交由后台另一个绘制功能的ACTION,绘制成形的电子印章。并通过解析成字节型数组输出流给VIEW。当用户需要进行下载操作时,后台经过解析,找到下载的ACTI
25、ON,通过将图片进行编码输出成GIF格式的透明图片,并通过流文件进行传送。客户端浏览器接受到响应请求,发现传输的是非指定的HTML语言,便自动启动下载功能,将图片下载到本地机上可直接使用。23电子印章系统ACTION包BEAN包UTIL包PRINTGIFSEAL参数变更操作类下载操作类绘制操作类图23电子印章包结构图电子印章系统下设立三个包,ACTION包中存放的是各种操作类,包含改变印章颜色、长短轴、显示文字等等更改数据的操作类,响应下载请求的操作类,响应获取印章图片的操作类。UITL工具包中存放的是将缓冲图片打印输出成GIF格式透明图片的工具类。而BEAN包中存放的是印章实体类,此类中包含
26、了生成电子印章的算法。将包设计成此结构后,每个包所执行的职能变的明确,包下每个类的操作可以分的更为细致,相当程度上提高了程序的逻辑。24开始显示初始化页面用户更改参数显示电子印章图片确认电子印章图片并下载结束图24电子印章系统流程图用户在使用本系统时,首先输入网站地址,进入初始化页面。初始化的页面中已经将电子印章的参数给出,并且有预先生成的印章图片等待用户更改参数。用户通过改变参数值或者点击更改相应参数值的按钮来改变印章的外观。用户选择自己所需的图片,进行下载得到透明的印章图片。253网络应用关键技术网络应用程序每次生成的数据不会是一成不变的类似HTML页面,而是根据处理后的数据动态的页面,也
27、正是因为如此,应用程序中囊括了各种网络编程语言。其中JAVA语言是其中发展成熟的编程语言。本系统将使用JAVA语言编写,其中所使用的关键技术如下。31JAVASCRIPT语言JAVASCRIPT是一种用于客户端WEB开发的脚本语言,此语言用来为HTML网页添加动态功能,比如响应用户点击按钮操作。JAVASCRIPT的源代码从服务器端发送到客户端之前不需要进过编译,浏览器可以自行JS脚本,而且市面上各类浏览器都具备运行JS脚本的功能。5通常引入JS脚本有三种方法(1)页面内部ALERTHELLO(2)单独放在文件里(3)嵌入HTML元素内部SAYHELLO当然JS脚本主要功能是响应用户操作,当用
28、户执行点击按钮操作时,浏览器通过响应按钮事件ONCLICK进行操作。响应这种事件的代码如下FUNCTIONFUN/事件处理内容JAVASCRIPT是目前为止网络页面语言响应客户端事件推广最为广泛的语言,正是因为其的使用度广,却因为使用繁琐复杂,JAVASCRIPT如同JAVA语言一样被开发出一系列框架。PROTOTYPE是基于JAVASCRIPT语言编写的集成框架。PROTOTYPE首先将大多数的JAVASCRIPT操作进行了简化,例如得到HTML元素JS脚本写法是DOCUMENTGETELEMENTBYIDSTR在PROTOTYPE中被简写成STR。同样得到HTML元素值的方法则简化为FST
29、R。除了简化JS代码外,还提供了对各种基本数据类型的操作。例如对字符串的多种操作类似JAVA中STRING类中的方法。26当然PROTOTYPE的思想接近于我们所熟悉的JAVA语言,PROTOTYPE像JAVA那样提供OBJECT关键字。当我们的编程思想由JAVASCRIPT脚本语言逐渐向JAVA编程思想转变后,编写代码突然变得异常明朗。JQUERY对JAVASCRIPT的封装更为进一步,与PROTOTYPE也有很大的区别,而且它们两者在使用上有所冲突,无法同时使用,所以在使用上要有所选择,孰优孰劣也是根据实际情况来判断。JQUERY为网络编程提供了包括判断浏览器版本型号的功能,让火狐、微软浏
30、览器的区别对于编程者是透明的。我们无需区分使用者是什么浏览器,如果用户无法显示,那是因为JQUERY框架没有编写完美。JAVASCRIPT中有数组对象和一般对象,但处理方法极少。JQUERY则为这组“难兄难弟”提供了更多的操作方法,在本系统中,颜色板的使用就是通过JQUERY编写的。32AJAX技术AJAX(ASYNCHRONOUSJAVASCRIPTANDXML)是多种技术的综合,包括JAVASCRIPT、XHTML和CSS、DOM、XML和XSTL、XMLHTTPREQUEST。传统的WEB应用采用同步交互过程,在这种情况下,用户首先向HTTP触发一个请求,反过来,服务器执行某些任务,在向
31、发出请求的用户返回一个HTML页面。这将导致一种不连贯的用户体验,服务器在处理请求时,用户多数时间处于等待状态,浏览器屏幕也是一片空白,这种情况也就是所谓的界面不友好。6在某些情况下,页面所改变的只是一小部分的数据,那又为何一定要重新加载整个页面呢正是因为上述的缺陷,AJAX技术呼之欲出,并在诞生后收到广泛使用,而此技术也成为香饽饽了。27图31AJAX应用模型321AJAX发送数据首先AJAX是以JAVASCRIPT语言编写的,为WEB应用提供异步处理的技术。在语言格式上类似JAVASCRIPT,当然在形式上我们可以作为JAVA语言看待。AJAX在用户与服务器之间引入一个中间媒介,从而消除了
32、网络交互过程中“处理等待再处理再等待”的缺点。7好在如见的浏览器版本都支持AJAX技术。但是面对不同的浏览器,仍然有所不同。首先我们需要初始化对象,浏览器的不同编写的代码不同,分别如下FUNCTIONGETXMLHTTPREQUESTVARXMLHTTPREQUESTNULLIFTYPEOFXMLHTTPREQUESTUNDEFINED/FF以及其它浏览器XMLHTTPREQUESTNEWXMLHTTPREQUESTELSE/IE28XMLHTTPREQUESTNEWACTIVEXOBJECTMICROSOFTXMLHTTPRETURNXMLHTTPREQUEST在得到XMLHTTPREQUE
33、ST对象后,接下来要指定服务器返回信息时客户端的处理方式。HTTP_REQUESTGETXMLHTTPREQUESTHTTP_REQUESTONREADYSTATECHANGEFUNCTION然后,就可以像服务器发送HTTP请求了。格式如下HTTP_REQUESTOPENMETHOD,URL,TRUEHTTP_REQUESTSENDNULLOPEN函数的第一个参数是HTTP请求的方法,可选项为GET,POST。OPEN函数的第二个参数是目标URL。OPEN函数的第三个参数是指定在等待服务器返回信息的时间内是否继续执行下面的代码。TRUE表示不会继续执行,知道服务器返回信息。OPEN调用完后要调
34、用SEND方法。OPEN方法只是打开网络连接,而SEND方法才是发送数据,这两个方法应当同时出现并且方法调用次序不能颠倒。322响应数据的处理之前的代码介绍了发送数据的流程,那么我们又如何对响应的数据做处理的在上述第二步骤中其实已经提到了对返回数据进行处理的方法,处理数据只需要在方法体中加入合适的代码。首先,处理数据要检查XMLHTTPREQUEST对象的READYSTATE值,判断请求目前的状态。IFHTTP_REQUESTREADYSTATESTATCCODE/当返回的状态码是STATECODE时,处理业务ELSEXMLHTTPREQUEST对象与服务器之间进行交互,其交互的过程,STAT
35、ECODE常用的状态码分为以下五种。0连接还没有建立也就是XMLHTTPREQUEST对象已经创建,但没用调用OPEN方法;1连接已经建立,但是还没有发请求;2请求已经发送;3正在和服务器正交互;294响应结束。在服务器返回信息后,还需要判断返回的HTTP状态码,以确定返回的页面没有错误。IFHTTP_REQUESTSTATUSSTATUSCODE/HTTP状态码为STATUSCODE时执行业务ELSE在HTTP协议中常用的状态码如下200OK,一切顺利。302请求被重定义。403请求被禁止。404请求的资源不存在。405请求的方法不支持。500服务器内部错误,通常为程序执行过程中抛出异常。3
36、3SERVLET请求处理机制SERVLET是JAVA编程网络应用中基础而又重要。它担当客户请求与服务器响应的中间层。SERVLET由WEB服务器进行加载,该WEB服务器必须包含支持SERVLET的JAVA虚拟机。SERVLET中共有两种响应方法,包括GET/POST,这些是相对应HTTP协议发送方法而定义的公开方法。SERVLET通过用户请求在SERVICE方法中解析,再来执行相应的方法。当然在现实中,我们直接将我们所执行的SERVLET中的SERVICE()方法直接覆盖,这样,当服务器接到用户请求后便不需要再次解析调用响应的GET/POST方法。同时,SERVLET还是一个容器,我们所有的请
37、求数据都放在这个容器中,所以所有的SERVLET公用此容器,可以访问容器中的公用数据。由于一些业务我们不在一个SERVLET中执行,这时我们通过转发将业务交给另一个SERVLET处理,这时,数据继续存储在容器中,SERVLET可以访问并处理数据。8然而,这样的数据比较不安全。所以SERVLET还提供了SESSION、COOKIE等机制来加以限制。34JSP技术JSP(JAVASERVERPAGEJAVA)服务器端页面技术。是SUN公司制订的一种服务端动态页面生成技术,其主要组成部分是HTML(包含HTML,CSS,JAVASCRIPT)JAVA代码。因为采用SERVLET生成页面,过于烦顼,比
38、如要输出比较复杂的页面,必须全部采用OUTPRINTLN方式来编写。所以,为了简化生成页面,才会有JSP技术出现。但是事实上JSP其实就是一个SERVLET对象。JSP是一个文本文件,以JSP为后缀。JSP30写好以后,不需要单独去编译,JSP引擎会将JSP文件转换成“类名_JSPJAVA”文件。然而打开该文件,我们发现一个最主要的方法是PUBLICVOID_JSPSERVICEFINALJAVAXSERVLETHTTPHTTPSERVLETREQUESTREQUEST,FINALJAVAXSERVLETHTTPHTTPSERVLETRESPONSERESPONSE;其实是JSP引擎将JSP文
39、件进行再次转换成一个SERVLET。之后JSP引擎再将JAVA编译成CLASS文件并且调用SERVICE方法。而且JSP为当前页面已经封转了一系列的对象例如REQUEST对象、RESPONSE对象、SESSION对象等等。EL(EXPRESSIONLANGUAGE)表达式的诞生,其目的是为了JSP写起来更为方便。它提供了JSP脚本编制元素范围外使用运行时表达式的功能。EL表达式格式EXPRESSIONEL表达式可以直接访问BEAN的属性,例如USERNAME。当JSP引擎读到这行代码时,JSP引擎会依次搜索PAGECONTEXT,REQUEST,SESSION,APPLICATION,如果搜索
40、到了,即停止向下搜索。其搜索方法即调用每个方法的GETATTRIBUTEUSER,然后调用GETNAME方法并输出。341SESSION机制在用户方位服务器时,服务器会发送给浏览器的少量的数据,该数据会被浏览器保存下来,并且,在浏览器下一次访问服务器时,携带给服务器。该数据会被浏览器保存到内存或者以文件的方式保存到其所在的机器上。这种操作的对象称之为COOKIE。通过这种方式,服务器就知道浏览器是否访问过,并且也知道访问过程涉及到的数据。服务器端使用COOKIE时浏览器会将用户登录信息保存到浏览器,使得用户下一次不用再登录系统,并且COOKIE将记录用户的使用的偏好数据。当浏览器第一次访问服务
41、器时,服务器会创建一个对象,该对象用于保存客户端的状态,这个对象就是SESSION,我们称其为“会话”。SESSION有一个唯一的ID号,该ID号也叫SESSIONID,在默认情况下,服务器将采用COOKIE机制发送给浏览器,浏览器下次访问服务器时将SESSIONID发送给服务器。服务器通过SESSIOID找到对应的SESSION对象。SESSION也是一个容器,其存在是为了保存用户的特定信息、某些业务所需操作数据等。COOKIE机制和SESSION机制正巧相对。前者将用户信息保存在客户端,为的是可以简化登录时的操作、完成购物车技术等。而后者则是保存在服务器端,保存用户之前一次或几次操作结果数
42、据。在网络应用中同时应用,方便操作和记录用户数据。342JSP标记库介绍与使用JAVASTANDARDTAGLIB(标准标签库)指的是APACHE开发的标签库被SUN纳入到JAVAEE50,已经被标准化了。它的用途是为了减少JSP页面中出现的JAVA代码,更好地维护JSP代码。标签的实质是JSP引擎碰到标签后,会搜索标签对应的JAVA类,执行JAVA类对应的方法。31若要使用在JSP页面中,则要导入标签库。方法是添加标记。其中URI是一个标识符,用来唯一标识一个标签库。URI的值可以参考标签库的TLD描述文件。PREFIX前缀,可以自定义。比如,导入核心标签库。35STRUTS2技术STRUT
43、S是JAVA网络编程中为了简化代码,复用控制器的一种新新技术。其目标即是为了使WEB开发变得更加容易。351STRUTS2思想在原始的网络开发环境中,我们每一次不同类型的请求需要处理,就会产生一个对应的SERVLET。如果是简单的WEB应用还好,但是如果是大的WEB应用,那就会产生繁多的SERVLET,代码繁多,又由于为了简化SERVLET编写的代码量,每个SERVLET必定会对应产生一个页面无论是静态的HTML页面还是JSP动态产生的页面。这种情况所带来的负面影响不仅仅是因为产生大量代码,同时,由于大型WEB应用开发带来的大量程序开发人员产生路径设置不同的问题,让我们应用难以维护。9正是这种
44、测试以及维护问题需要简化,所以STRUTS的思想正是将控制器简化成一个只用一个SERVLET,而将解析地址的方法封装起来,让路径写在单独的XML配置文件中,将SERVLET和JSP概念合并到一起。其想法就是把对当前用户所见的页面请求的处理动作分拆成处理逻辑和表现逻辑,让它们各司其职,这也是面向对象编程的思想。当每个职能被清楚分开后,不但个人编程也变得逻辑明朗,并且团队编程分配工作任务时也将简化,使项目管理变得相对简单。在做项目时有个软件工程中“高内聚、低耦合”的概念。而STRUTS的思想就是提供一个松耦合的框架。352STRUTS2应用程序配置并不是简单的将STRUTS2引入到项目中就可以了,
45、我们需要为STRUTS2进行配置。32浏览器CONTROLLERDISPATCHERFILTERMODELACTIONJSPVIEWSTRUTSXML文件在这里起到解析地址作用,让服务器知道由哪个ACTION来处理业务STRUTSXML文件在这里起到解析地址作用,让服务器知道由哪个页面来承载处理完的数据WEBXML文件将不解析所有路径而交由STRUTS过滤器,让STRUTS来解析图32STRUTS配置文件用途首先我们要将WEBROOT文件夹下的WEBXML中添加如下标签内容STRUTS2FILTERORGAPACHESTRUTS2DISPATCHERFILTERDISPATCHERSTRUTS
46、2FILTER/STRUTS2有其它一些配置文件我们需要填入。STRUTSDEFAULTXML默认配置,用于定义STRUTS2框架提供的RESULT组件、INTERCEPTOR组件。DEFAULTPROPERTIES默认配置,用于定义STRUTS2框架的一些属性。STRUTSXML开发自定义,用于定义开发者编写的RESULT组件、INTERCEPTOR组件、ACTION组件。STRUTSPROPERTIES开发自定义,用于覆盖DEFAULTPROPERTIES中的默认配置。STRUTSPLUGINXML整合插件的配置文件。33其中STRUTSXML文件是我们需要配置路径最为重要的文件。配置文件
47、有如下标签/OKJSP/INDEXJSP/OPTJSP标签中的意义是使用那个STRUTS包为之后的路径做解析服务。ACTION标签中NAME属性表示请求路径,CLASS属性表示处理业务所需要使用的JAVA文件的路径。RESULT标签中NAME是JAVA文件返回的字符串,通常是“SUCCESS”、“FAIL”之类的,标签之间的字符串表示视图路径。这个标签的含义是当ACTION中业务处理完与否,根据值类型选择所要显示的视图数据返回给用户。上面所使用的是默认的RESULT类型,我们用TYPESTR来描述。当然,RESULT中有很多的结果类型可以使用。名称描述CHAIN将一个ACTION的执行与另外一
48、个配置好的ACTION串联起来。用第一个ACTION的GETTER方法和第二个ACTION的SETTER方法来完成ACTION之间属性的复制。DISPATCHER渲染JSP。只是默认的结果类型。如果在ACTION配置中没有配置其它的结果类型,它就会被使用。FREEMARKER渲染FREEMAKER模板。34HTTPHEADER返回HTTP头和用户定义的值。REDIRECT重定向到任意的URL。REDIRECT重定向到任意的URL。STREAM将数据流返回给浏览器。可以用来吧数据注入PDF,MICROSOFTWORK,图像或其它数据中。VELOCITY渲染VELOCITY模板。XSLT使用XSL
49、T来转换已执行完毕的ACTION的属性格式。以上是STRUTS最为重要、也是最为基础的配置文件,当我们通过以上步骤一步步的进行配置,那么功能简单的网络应用系统就可以运行起来了。354电子印章的数据传输41浏览区处理数据为了让用户更好的感觉界面友好、没有繁多的页面跳转,系统应当更多的使用异步请求技术。窗体标题窗体标题数据1数据2数据3数据4印章图片为什么数据输入后页面不跳转呢哦使用了AJAX技术图41AJAX处理数据效果之前介绍了AJAX技术,那这个系统终于要使用这项先进技术了。在使用AJAX技术的同时,系统还将进行简化,使用JQUERY框架对请求进行封装。JQUERY对JAVASCRIPT的封装更为进一步,与PROTOTYPE也有很大的区别,而且它们两者在使用上有所冲突,无法同时使用,所以在使用上要有所选择,孰优孰劣也是根据实际情况来判断。JQUERY为网络编程提供了包括判断浏览器版本型号的功能,让火狐、微软浏览器的区别对于编程者是透明的。我们无需区分使用者是什么浏览器,如果用户无法显示,那是因为JQUERY框架没有编写完美。JAVASCRIPT中有数组对象和一般对象,但处理方法极少。JQUERY则为这组“难兄难弟”提供了