Java Web应用底层数据传递模式的分析与研究
2014-08-24陈卓妮
杨 怿,陈卓妮
(1.湖北师范学院 计算机科学与技术学院,湖北 黄石 435002;2.黄石市教育局,湖北 黄石 435000)
Java Web应用底层数据传递模式的分析与研究
杨 怿1,陈卓妮2
(1.湖北师范学院 计算机科学与技术学院,湖北 黄石 435002;2.黄石市教育局,湖北 黄石 435000)
在Java Web应用开发中,底层数据传递的模式和传统本地应用有着不小的区别,对底层数据传递模式的了解和数据传递流程的设计决定了应用开发的复杂程度,影响着整个Java Web应用程序的开发效率和后期维护的难易度。笔者从开发模型入手对Java Web应用中的底层数据传递模式进行了分析,并详细说明了底层数据流程和方法。
Web应用;Java;数据传递
0 概述
Web应用程序已成为现代应用软件的一个重要分支。伴随着网络基础设施的不断完善,网络带宽的不断提升,给了Web应用更大更广阔的发展空间。加上Web应用在网络上发布和使用的便捷性,越来越多的应用程序采用了Web应用的模式来进行开发。而Web应用的软件结构和传统的依附于操作系统的本地应用不同,其底层数据传递方式多样且复杂。随着越来越多的Java Web开发开始使用第三方框架,这些框架对底层数据传递的机制或多或少的做了一定的封装,使得一部分开发者并没有完全接触到底层的代码,不了解底层数据传递的模式,因而对项目的开发造成了影响。相反,对底层模式的熟悉可以更快的掌握框架的核心功能,来减轻数据发送、传递和获取时重复代码的编写。Java Web应用中客户端与服务器进行数据传递和服务器端内部数据流的处理时机制完全不同,前者使用网络协议在网络上传输数据最终使用Java代码接受数据,而后者完全采用Java EE技术在服务器端的应用服务器软件的支持下进行传递,见图1.
图1 Java Web应用底层数据传递模式
1 客户端到应用服务器的数据传递
Java Web应用程序数据传递的发起始于客户端一个浏览器向Web应用服务器发出请求,应用服务器把请求中需要程序处理的数据放在由服务器生成的request对象中,接着调用相应程序处理后将最终结果放在response对象中发送给客户端的用户浏览器。不断往返的请求和响应构成了客户端到服务器的数据传递。
从客户端向服务器传递数据常用两种方式。简单的数据可以直接放在请求URL的后面加上问号接着写上参数名等于参数值的值对。例如:请求的URL是"abc?x=1&y=2",会把x和y这两个参数值传递给了URL"abc"所对应的程序代码。在程序代码中使用request对象的getParameter()方法即可接受到参数值。第二种方式采用表单从客户端提交数据给服务器,在提交数据之前需先向服务器请求一个表单页,可以把这个服务器返回的表单页看做数据的载体,在这个载体中填好数据后,再次提交时,数据就会传递给表单中指明的处理程序,在程序中同样适用request对象的getParameter()方法来取得表单中的各项数据。使用此方法取得的数据都是字符串类型,如果原始数据是基本数据类型,则要进行一次数据类型转化。
从服务器向客户端发送数据也有两种形式,第一种方式中服务器中的程序会直接把最终的数据结果插入到显示页面上,一起作为HTML页面响应发给浏览器显示。另一种则把数据放在response对象中传递给页面的JavaScript来处理。
2 应用服务器内部的数据传递
Java Web应用程序的底层技术是Servlet,因为JSP在运行时也要转化为Servlet,他们两者的实质是一样的,都需要使用URL来调用。当服务器端的程序接收客户端的数据以后,往往不仅仅是由一个Servlet或JSP来处理,因此会在多个Servlet或JSP中进行传递。他们之间的数据传递与传统的本地应用中直接通过函数调用时通过函数的参数来传递数据的形式完全不同。
首先把需要传递的数据通过request对象的setAttribute()方法与一个属性名绑定保存在request对象中。然后通过语句request.getRequestDispatcher(name).forward(request, response)转发到另一个Servlet或JSP,其中第一个括号中的参数值是转发目标的URL。最后再在目标代码中使用request对象getAttribute()方法通过保存时的属性名来取得数据值。
除了以线性方式传递数据以外,在服务器端很多时候还需要以一种离散的方式来保存和传递数据。例如在一些需要用户登录的Web应用中,很多界面都需要显示用户信息,那么在第一次取得用户信息以后,这一数据需要一直存在并多次被读取。Java Web编程中提供了几个对象来完成这些工作,session对象可以在一个会话即打开浏览器到关闭浏览器的整个过程中一直存在,这个对象也使用setAttribute()和getAttribute()方法来保存和取得数据。
需要注意的是,传递过程中数据是作为object对象类型来保存的,取得数据对象以后需要做一次强制类型转换,将object类型对象转换成传递前的对象类型。有时客户端页面需要展示从数据库读取的多行数据,或者若干的独立的对象数据,为了方便数据的传递,在传递之前可以把数据保存在一个集合类对象中。
3 数据传递与控制层
为了让数据传递处理更加高效,在Java Web应用开发中经常使用的MVC开发模式将整个Web应用分为了Model逻辑层,View表示层和Control控制层三个部分,其中控制层的主要作用之一就是负责整个应用程序的数据传递。控制层的独立把用于数据传递的代码分离出来,让数据传递的流程成为了应用程序的血管,同时也让表示层和逻辑层的任务更加明确,整个Web应用构架更加清晰。
控制层的作用是从客户端接受数据请求,然后根据请求,把客户端数据传递给相关的逻辑处理代码,待数据被逻辑层处理完毕后,再将处理完成的数据传递给表示层展示给客户端用户。控制层不仅是数据流的管道,同时也扮演这一个数据控制中心的角色,负责数据在业务逻辑和展示界面之间的调度。这样的开发模型能让开发者把更多的时间投入到业务逻辑和用户体验的设计当中。
4 结论
虽然Java EE的版本不断升级,新的框架不断出现,但底层数据传递始终是开发Java Web应用中的重要一环。采用各自针对性的模式来处理客户端到服务器的数据传递和服务器内部数据传递,在应用服务器内部选择不同的对象来保存生命周期不同的数据,同时在开发模式中建立控制层独立的处理数据流,不但可以让数据传递流程的设计更加合理,也是Java Web应用程序运行稳定和高效的保证。
[1]马卫华,马满增,刘文慧.Web应用系统设计与实现的原理[J]. 电脑编程技巧与维护,2008,15:48~49.
[2]姜宇鸣,刘瑞玲.基于MVC模式的B/S架构系统的开发与探讨[J]. 科技致富向导, 2012,18:19~21.
[3]郝玉龙.Java EE编程技术[M].北京:清华大学出版社,北京交通大学出版社,2008.
[4]李 刚.疯狂Java第二版[M].北京 :电子工业出版社,2012.
[5]邓子云.Java Web轻量级应用开发[M]. 北京:电子工业出版社,2012.
ThetransfermodeoftheunderlyingdatainJavaWebapplication
YANG Yi1,CHEN Zhuo-ni2
(1.College of Computer Science &Technology,Hubei Normal University,Huangshi 435002,China;2.Education Bureau,Huangshi 435000,China)
When an Java Web application system developed,the transfer mode of the underlying data is greatly different from that of the traditional local application system.How complicated the application development is depends on the understanding of the transfer mode of the underlying data and the design of the data transfer flow,which effects the development efficiency and the maintenance difficulty in later period.A transfer mode of the underlying data of the Java Web application system is analyzed in this paper,and the way of the data transfer flow is expained in detail.
Web application;Java;data transfer
2013—11—27
杨 怿(1979— ),男,湖北黄石人,硕士,实验师,研究方向为Java Web应用、软件工程.
TP311
A
1009-2714(2014)01- 0027- 03
10.3969/j.issn.1009-2714.2014.01.006