JAVA交互

2024-07-16

JAVA交互(精选3篇)

JAVA交互 篇1

0 引言

随着互联网的快速发展, Web系统的开发显得越来越重要, 更加重视其开发效率, 项目运行的性能, 业务维护和扩展性。技术的统一和制定标准同样也显得越来越重要, 随着软件行业的发展, 使用框架技术引导开发的流程和项目层次的制定, 成为软件开发的重要流程。随着项目开发增多, 开发人员意识到, 开发过程中存在着许多重复性的工作和常用的程序。使用框架技术集成软件开发所需的通用功能, 可避免该类重复性的软件编程。

1 Web开发技术简介

1.1 Servlet简介

Servlet是运行在服务器上的Java应用程序, 跨平台性强, 可以运行在各种系统, 兼容性高, 在服务器端接收用户的请求, 可以进行转跳和响应服务器。由于Servlet运行在Web服务器端的Java应用程序, 所以Servlet必须由Web服务器加载, 而且该Web服务器必须支持Java和Servlet, 即该Web服务器要基于Java虚拟机运行。

1.2 JSP简介

JSP是一种动态网页技术标准, 用以辅助Web处理请求。以Servlet模型为基础的表示层技术。JSP是可以和HTML混合使用的一种标记语言, 可看作是HTML和Java联系的介质, 它是Servlet的一个扩展, 调用JSP和HTML页面时, 执行过程中, 页面会被翻译成Servlet, 能实现动态效果。

1.3 MVC思想

在早期开发一些比较简单的应用系统中, 没有分层的思想, 一个功能集中在一段代码上。当页面窗口的显示、业务与逻辑设计、数据库处理等操作都集中处理时, 程序流程相当繁琐。MVC (Model View Controller, 即MVC应用系统) , 分成3个核心的部分, 即模型 (Model) 、视图 (View) 、控制器 (Controller) , 每层有明确的工作重心, 且相互协调, 如图1所示。

它可强制性地使应用程序输入、处理和输出分开, 用一种业务逻辑和数据显示分离码的方法组织代码, 在一个逻辑的图形化用户界面的结构用于映射传统的输入、处理和输出功能;它能为应用程序处理很多不同的视图;模型能为多个视图提供数据, 由于应用于模型的代码只需写一次就可以被多个视图重用, 所以减少了代码的重复性。

1.4 基于MVC架构的Model1和Model2

Java Web系统应用在Model1模式下所开发的软件系统, 只有少量Javabean程序对数据库连接进行封装, 模式构成比较简单, 适合快速地开发小型的项目。随着市场需求的改变, 系统开发规模越来越大, 需求越来越复杂, 软件开发人员工作量越来越繁重, 为了减少软件开发人员不必要和重复性大的工作环节, 加强系统的性能和可维护性, 开发中大型规模的项目采用Model2模式。在其模式构成中以JSP作为视图, Servlet作为控制器, 接收用户的所有请求, 并调用Javabean封装的业务处理, 使模型 (Model) 、视图 (View) 、控制 (Controller) 很好协调, 在Model2中JSP将数据展示给用户, 直接与Servlet进行交互, 将用户请求发给Servlet, Servlet调用Javabean中业务逻辑进行处理, 完毕后再由Servlet转跳JSP页面响应用户, 如图2所示。

2 框架Struts2、Spring、Hibernate思想

2.1 Struts2思想

Struts2是基于MVC模型的Web应用框架, 以Web Work为核心, 采用拦截器的机制来处理用户的请求, 引入OGNL表达式和值栈, 可以使开发者使用简单代码实现复杂的数据访问;同时Struts 2框架取消了Action Form, 支持多种返回类型和Ajax技术, 简化了同其他技术的整合;通过配置文件使页面导航的脉络更加清晰, 提供Exception处理机制;数据库链接池管理技术, 降低了程序耦合性, 提高了重用性, 部署快, 可维护性良好。

2.2 Spring思想

Spring是一个控制反转 (Inversion Of Control, IOC) 和面向切面 (AOP) 的框架, 其表现开始式是分层架构, 采用POJOs构建应用程序, 能提高程序可持续构建和可测试性;能有效组织中间层对象, 数据访问界面一致, 使用Io C将创建对象的工作从应用程序代码剥离到框架, 使得JDBC操作简单化;对象管理集中化和简单化。

2.3 Hibernate思想

Hibernate是Java EE的轻量级应用, 解决持久层, 针对Java类到数据库中的数据变量进行的映射, 把数据存储交给Hibernate, 由Hibernate提供对数据的操作, 使得部分SQL指令操作变得更加容易。

Hibernate是Java对象或关系数据库映射的框架, 映射过程中, Hibernate内部部署SQL操作, 更换数据库时基本不用改代码。

3 学生交互平台整合Struts2, Spring, Hibernate框架

3.1 Spring和Hibernate框架技术集成配置

在Spring的配置文件中管理Hibernate的Sessionfactory, 源程序无需更改。其中配置事务和注解, 在配置文件中有由Spring容器管理“bean”;Spring接管Hibernate, 结合Transaction控制bean的运作。Hibernate和Spring管理实体类。如图3所示。

3.2 Struts2框架技术集成配置

在Struts2配置文件中, 用户发出请求, 其action符合struts.xml中配置项的话将会被拦截, 转入相关Java程序中继续处理。不同的action负责不同页面的调用, 通过Struts2带上数据转到相应的页面并将数据展示给用户, 如图4所示。

3.3 配置Web.xml关联Struts2, Spring, Hibernate

通过配置Web-INF目录下的Web.xml文件, 当服务器读取该配置文件时, 将三个框架的集成, 载入Web容器中。设计过程中, 加上相关的业务bean的编写, 和表示层页面的设计, 集成SSH2, 开发效率更高, 开发实际业务针对性越强。

3.4 分层结构

由框架整合开发出来的项目层次感较好, 表示层由Struts2管理, 实体层由Hibernate管理, 而Spring作为bean的容器则横跨三层的架构。分层对项目的可维护性, 可扩展性大大地提升, 提交了开发效率, 分层的方法对项目的管理更为方便。

4 结束语

本文介绍了Web技术和Web框架的整合, 分析了框架技术的必要性和运行原理, 介绍了Struts2, Spring, Hibernate三大框架的集成细节, 结合学生交互系统给出框架技术配置操作, 使学生交互系统的设计和实现层次明晰, 系统可维护性强, 系统流程业务逻辑思维更加严谨, 提高了开发效率。

摘要:随着软件开发技术的发展与演变, 为提高软件生产率、改变软件质量、便于项目维护, Java技术提出了J2EE技术平台体系结构的思想, 研究当前主流的轻量级框架技术。主要分析了Java在Web各个方面的技术工作原理, 介绍了Java的框架struts2、spring和hibernate技术思想, 通过设置配置操作实现学生交互平台的整合。

关键词:Java框架技术,学生交互系统,整合

参考文献

[1]郝玉龙, 尹建平.Java EE Web开发实例精解[M].北京:北京交通大学出版社, 2008.

[2]郝玉龙, 姜韡.Java EE编程技术[M].北京:清华大学出版社, 2008.

[3]王炜.Java Bean组件程序设计[M].北京:清华大学出版社, 1999.

[4]Douglas Bell, Mike Parr.Java程序设计[英文本][M].北京:中国水利水电出版社, 2006.

[5]Christian Bauer, Gavin King.Hibernate实战[M].北京:人民邮电出版社, 2008.

[6]刘发久.Java程序设计[M].大连:大连理工大学出版社, 2009.

[7]Joshua Bloch, Neal Gafter.Java解惑[M].北京:人民邮电出版社, 2010.

[8]Ramesh Nagappan.Java Web服务开发[M].北京:清华大学出版社, 2004.

JAVA交互 篇2

关键词:VRML,Java,通信机制,漫游系统

0 引言

VRML(虚拟现实建模语言,Virtual Reality Modeling Language)是一种网络上使用的三维形体和交互环境的场景描述语言。VRML创建的是三维的逼真场景,用户可以从不同角度和距离对场景中的对象进行观察,并可与场景中的对象进行交互,因此VRML是动态的[1]。要想构建具有真正实时、动态交互式的三维虚拟场景,仅仅依靠VRML还不够,我们可以应用VRML与Java的通信原理来达到上述效果。

1 Java程序和VRML场景间的通信

1.1 VRML环境中的交互机制

虚拟现实系统中实现交互操作是通过各种信息通道进行的,在沉浸式的虚拟现实系统中人机交互操作要求采用自然方式进行。而在PC机上则利用软件方法建立非沉浸式的虚拟现实系统,该系统中通常使用常规交互设备进行交互操作。虚拟现实系统交互模型如图一所示[2]:

VRML虚拟现实场景与用户交互性的实现基于以下两个因素:行为和执行模式。行为是用来描述什么将要发生,即描述将要发生的行为;执行模式是一种来回传送实体的方法,它把事件作为改变工具作用于VRML场景对象节点保持状态的字段,VRML场景中虚拟对象状态的改变行为是通过执行模式来实现。VRML基本机制中的行为可以分为静态行为和动态行为。静态行为是一种预制运动行为,场景中对象状态的改变并不需要程序来实现,只需对象节点通过一个语句的结合来决定这种运动。动态行为是通过一段逻辑程序来决定事件产生,它具有询问对象状态的能力,再基于这些状态做出相应决定,在这些决定的基础上改变场景的状态。

VRML场景的行为机制,无论是静态行为还是动态行为都是基于事件和路径两个基本特征。在VRML中,事件被定义为字段—输出字段或显示字段。浏览器自动检测场景中产生的事件,并将新的字段值沿路径传送到宿主(Event In Field)。VRML这种事件机制驱动了虚拟场景中对象状态的变化,图二为VRML的行为机制图。

1.2 VRML与Java的结合

VRML2.0具有分布性、交互性、平台无关、真三维、多媒体集成等众多优点。但VRML仅对静态场景的结构设计和利用VRML本身的事件通路构成的事件体系进行交互处理时还比较理想,而无法实现用户与场景之间的实时交互性。作为弥补这一缺陷的方法,我们可以利用Java和VRML的通信原理,从场景中获得用户感兴趣的数据,精确地设置场景中的参数等高级交互功能,实时动态控制场景。Java对VRML的支持有以下两种方式:使用Java实现VRML的脚本—应用Java的脚本创作接口(Java Script Authoring Interface即JSAI);使用Java Applet控制VRML场景。前者应用Java提供的类来实现,后者需通过附加的封装类EAI来实现。通过这些类,Java程序就能够访问VRML场景,接收和发送事件,从场景中获得场景对象,实现对VRML场景的实时动态控制。

1.3 Java Applet对VRML场景的控制[3]

VRML97标准提供的外部编程接口EAI实现了Java Applet与VRML场景的通信。EAI是SGI公司设计的高层次的Java类包。EAI定义了外部环境怎样通过VRML现存的事件驱动模式来访问VRML内部节点的一系列方法。VRML与Java信息交互模型如图三所示:

Java对EAI的绑定是通过以下3个包实现的:

(1)vrml.external:为节点和浏览器接口提供基础类;

(2)vrml.external.exception:提供各种异常类;

(3)vrml.external.field:提供访问场景节点的域所需的类,即事件类和事件监听接口。

使用EAI对VRML场景进行交互控制,Browser类是很重要的一个类。该类封装了VRML场景,并提供了getNode(…)方法用来直接获得对虚拟场景节点对象的引用。获得节点对象后就可以通过getEventIn、getEventOut方法获得事件输入、输出的实例,改变事件输入值相当于改变VRML场景。在VRML中使用EAI主要有以下两个作用:增强VRML场景与外部环境通信联系和融合能力;外部程序(即Java Applet程序)可以使用VRML的事件模型访问和控制VRML场景中的节点。

EAI允许一个Java Applet程序主要以下列3种方法访问VRML场景中的节点:(1)发送一个事件到VRML场景中的事件入口;(2)接受VRML场景节点的事件出口发出的最新值;(3)当VRML场景中节点的事件出口发出一个消息后,Applet能得到一个通知,激活callBack(…)方法。

2 三维场景构建

基于VRML的虚拟现实技术构造三维虚拟场景,实现实时三维场景漫游,主要涉及以下三项技术:三维场景建模;虚拟场景的真实感表现;人与虚拟场景的交互技术。建立三维虚拟场景是整个系统的第一步。由于VRML对大型场景的建模很不方便,目前有不少很好的三维造型软件,它们大部分支持.wrl格式。比较流行的三维造型软件3DS MAX,采用该软件构建虚拟场景中的三维模型比较直观,所见即所得,创建出来的场景对象比较逼真,容易创建复杂的三维模型。因此本系统采用的方法是先用建模工具3DS MAX建立模型,再转换成VRML格式,然后对模型进行整理和优化,其流程如图四所示。

目前,3DS MAX支持.wrl输出格式,同时在3DS MAX中具有直观添加VRML节点的功能,如可以直接插入场景中不可见的或者设置空间背景、声音、大气效果等对于整个空间有效的12种VRML节点。在构建基于VRML虚拟场景时充分应用3DS MAX功能可以大大缩短构建场景对象的时间。为了适应实时漫游的需求,还必须对转换后的文件格式进行整理。构造LOD层次,应用3DS MAX在VRML场景中插入LOD节点(如图五所示),即为每个物体建立多个相似的模型,不同模型对物体的细节描述不同,对物体细节的描述越精确,模型也越复杂。这样,在不同观察距离上可以选择不同的场景对象,近处对象应用精细模型,远处对象选用粗略模型,从而可以提高系统的交互性和图像绘制速度。

3 虚拟场景漫游系统设计

在本系统中,我们采用JDBC作为数据引擎建立三维虚拟场景漫游系统,使用户的交互动作得到后台数据的支持。

在该系统中,在同一网页中同时嵌入一个VRML虚拟境界和一个Java Applet,在Applet中含有与VRML关联的EAI代码和与数据库关联的JDBC代码。这样来自于VRML或Applet上的事件就可通过EAI和JDBC与VRML场景或数据库中相应的信息进行数据通信,并将相应的信息格式化后在Applet上和VRML场景中显示出来。

系统经过设计、开发和测试,现已正式在网上Web投入使用,图六为系统中场景一角。

4 结束语

VRML技术提供了创建实时渲染三维虚拟场景的良好规范,该文应用VRML技术建立逼真的虚拟场景,并以事件驱动的方式实现用户与该场景之间的交互,这些都为建立一个以实时三维交互为主要特征的虚拟现实系统提供了极大的便利。通过VRML与Java之间的通信实现三维虚拟场景与外部数据的交互来构建三维虚拟场景漫游系统。

参考文献

[1]魏薇,陈宜.应用VRML实现虚拟校园漫游系统[J].北京工商大学学报,2006(,05).

[2]李亚萍,张明辉.利用Java在VRML中实现复杂运动控制[J].武汉大学校报,2001(,12).

[3]王汝传,姚旭敏等.基于Java和VRML虚拟场景通信方式的研究[J].系统仿真学报,2003(,07).

[4]葛艳红,李文锋.基于Java的VRML虚拟场景人机交互的实现[J].交通与计算机,2003(,02).

JAVA交互 篇3

关键词:Matlab,Vrml,Java,虚拟现实工具箱

1 引言

Java是Sun公司开发的高性能的面向对象语言,具有稳定、可靠、语言简洁、与平台无关等特点,广泛应用于Internet/Intranet网络应用和分布式系统开发。本文介绍了几种利用Java实现Matlab与Vrml之间交互的方式,有些在实际中已经得到一定的应用。

MATLAB(MATrix LABoratory,矩阵实验室)是由美国Mathworks公司推出的科学计算软件。它集数值分析、矩阵运算、信号处理和图形显示于一体.功能强大,界面友好,易学易用,在数值计算、数字信号处理、自动控制、时序分析与建模、神经网络、动态仿真系统、图象处理等科学与工程领域中得到了广泛的应用。

VRML是ISO组织于l998年1月通过的基于Internet的网上虚拟场景描述标准。由于它具有分布式、交互性、平台无关性、真三维、多媒体集成等众多优点,因此一经推出,立即受到人们的高度重视。VRML已经在网络制造、虚拟漫游以及计算机动画中扮演了愈来愈重要的角色。因为Vrml可以在低带宽网络环境中实时进行三维信息的远程传输和远程控制指令的接收,能与其他数据系统顺利连接,提供了良好的人机界面和完善的对象结构模型。由于其直观性和实时交互功能,在远程监控中得到应用。

2 MATLAB与Java联合应用的方法

2.1 MATLAB对Java的调用

利用MATLAB提供的Java接口.可以在MATLAB中调用Java,从而实现二者的联合应用。MATLAB Java接口是在MATLA B环境中运行和使用Java程序所提供的函数库,用来完成以下功能:(1)访问Java API的类组件。(2)访问第三方提供的类。(3)在MATLAB中方便地构造Java类对象。(4)使用MALAB或Java语法调用Java类对象的方法。(5)在MATLAB变量和Java类对象之间传递数据。Java接口的使用涉及以下几个方面:Java类的导入、Java类对象的创建和使用、Java类方法的调用、J a v a类对象与M A T L A B的交互等。

Matlab可以在众多的Java类中得到要使用的类,也可以创建自己的Java类。Matlab命令通过完整的类名识别任何一个Java类.也可以使用import导人命令进行简化。在MATLAB中,可以通过构造函数与JavaObject函数两种方法创建类对象.使用save命令可将Java类对象存储到MAT文件中,再使用load命令即可将M文件中的类对象导入到M A T L A B中来使用,类对象中的公有数据可直接访问,而私有数据可使用get与set方法进行访问。

在MATLAB中要调用类对象中的方法,可以使用Java的语法:object.method(argl,…,argn),也可以用MATLAB的语法method(object,argl,…,argn)来调用非Java类对象的静态方法。但如调用方法名超过31个字节时,必须使用JavaMethod方法。Java类对象可以传递给方法,也可以从方法中返回Java类对象,还可以将Java类对象在矩阵之间传递,但必须是Java对象矩阵或者MATLAB单元矩阵。Java对象矩阵是调用Java类的构造函数或方法所返回的Java对象的矩阵,在MATLAB中可以使用JavaArray函数来创建Java对象矩阵。MATLAB屏蔽了Java对象矩阵与MATLAB矩阵在结构上的差异,使用户可以象操作MATLAB矩阵一样操作Java对象矩阵。

在MATLAB中调用Java代码时,任何一个需要传递给Java的MATLAB数据必须转换为Java语言的数据类型,MATLAB自动执行这一转换过程。如果传递的变量属于某一个Java类,则必须传递这个类的对象。如果传递的变量是Java对象矩阵,则只能是Java矩阵和MATLAB单元矩阵。在许多情况下,从Java方法返回的值并不兼容于MATLAB数据类型,此时MATLAB将Java方法返回的值转换成匹配的MATLAB内部数据.并且可使用struct函数把Java对象转换成MATLAB结构.使用cell函数将一个Java矩阵或Java对象转换成MATLAB中的单元矩阵。

2.2 Java对Matlab的调用

利用Java的Runtime类,并通过MATLA B的标准输人输出流,可以实现Java对MATLAB的调用,从而达到二者的联合应用[4]。实现原理如图1所示。

为了实现上述功能,可设计一个Java类,能够用来启动MATLAB程序,发送命令给这个程序。并接受处理结果。这个类必须导人java.1ang.Runtime和java.io.*,主要包含BuferedReader型(缓冲读取),Buffered—Writer型(缓冲写人),字符数组(结果输出)等三类私有变量。需要设计三个方法:

(1)open()方法,包含以下主要语句:

(2)send()方法

主要调用BuferedWriter型变量的write()和f l u s h()方法,向缓冲写入数据,主要是待执行的M A T L A B命令。

(3)receive()方法

主要调用BuffercdReader型变量的read()方法,向缓冲读取数据,主要是MATLAB程序的执行结果,并可返回给这个类的字符数组变量。值得注意的是,在所有这三个方法中必须有synchronized(this)语句,用来同步控制。避免MATLAB输人输出流可能的冲突。最后在主函数main()中,调用open(“matlab”)方法,向cxcc0方法传递启动命令字符串给参数startmat,启动MATLAB程序。调用scnd(matstr)方法,传递要执行的MATLAB命令字符串matstr给write(),写人到缓冲,交由MATLAB执行。调用reccive()方法,从缓冲中读取MATLAB执行结果,从而实现了Java对MATLAB的调用。

3 Java与Vrml的联合应用

为了实现V R M L世界与外部环境的交互,V R M L提供了一组接口EAI(External Authoring Interface)[2]。该接口由一组关于浏览器操作的函数组成,通过这些函数的调用,外部程序就能影响VRML世界中的物体。在Java语言中,这些函数被封装在3个包中:v r m 1.e a i.*,vrml_eai.event.*,vrml_eai.field.*(或vrml_externa1.*,vrm1.externa1.field.*,vrm1.externa1.exception.*)。

首先,调用封装在vrm1.eai.BrowserFactory类中的getBrowser()获得一个Browser类实例(注:该类提供了3个获得Browser实例的方法:getBrowser(Applet),get Browser(Applet,String,int),get Browser(Inet Address,int);前两个函数为本地调用,后一个支持远程调用,需要给出IP地址和端口号),然后用所得的Browser实例,调用Browser.getNode(String)函数(该函数能访问到用InLine语句内嵌在VRML场景中的节点),以获得所需的节点,最后调用封装在v r m 1.e a i.N o d e类中的getEventInO,getEventOut0函数,即可访问VRML场景中各节点的域,进而按要求改变节点的状态,从而实现其交互性。

利用vrml_eai包提供的Browser和Node类,可以完全不用Script节点和Script类以及路由等方式而直接由EAI外部程序操控VRML世界中的各种节点,极大地丰富了VRML的功能。但是该方法也有其局限性,它只能通过Java小程序来控制VRML世界,因为get(BrowserfApplet)函数中的参数只能是Applet应用程序的实例。

最后将经过Java编译器编译后生成的classname.class文件和VR文件放在同一目录下,然后编写HTML文件整合二者即可。

4 Matlab与Vrml直接交互的方法

利用Matlab提供的虚拟现实工具箱,可以实现和Vrml程序的直接交互[1]。Matlab中的虚拟现实工具箱可在Matlab/Simulink环境中设计、微调并控制3D世界,带来强大的虚拟视觉化、模拟以及实证动力.Virtual Real—ity Toolbox借由VRML所构成的浏览器与Matlab和Simulink紧密连结,同时将模型系统以三度空间的虚拟方式呈现,为能在一个三维虚拟现实环境中进行可视化操作和与动态系统进行交互提供了一种有效的解决方案.使用标准的VRML技术,可以通过Matlab和S i m u l i n k环境生成三维场景,特别的可以通过Simulink这一接口在一个虚拟现实的三维模型中观察动态系统的模拟.虚拟现实工具箱的大多数特征可以使用Simulink模块来实现,一旦在Simulink对话框中包含了这些模块,就可以选择与Simulink信号连接的虚拟世界.所有V R M L节点的属性分别列在等级树样式的观察窗口中,可以选择控制的自由度.当关闭接口对话框后,虚拟现实工具箱模块自动更新在虚拟世界中与选择节点有关的输入和输出。当连接这些输入到一定的Simulink信号上时,就可以在一个支持VRML的浏览器中观察到可视化的模拟.另外,虚拟现实工具箱还提供了一个灵活的与虚拟现实世界相连的Matlab接口[3].

5 结束语

以上简要介绍了Matlab与Vrml实现交互的几种方法,其中,利用虚拟现实工具箱进行交互的办法简单易行,并且在教学与实验室环境下得到了一定的应用,但是这种交互只能是Matlab到Vrml的单向信息传递。为了解决此类问题,可以利用Java语言丰富的网络交互性,文中提到的办法,具有很好的应用前景。

参考文献

[1]张家祥,方凌江,毛全胜.基于Matlab6.x的系统分析与设计一虚拟现实[M].西安:西安电子科技大学出版社,2002

[2]张辉,吴侃.VRML与Java技术在虚拟现实中的应用[J].测绘信息与工程,2004(4):20-23

[3]晁冰,吴祖国.虚拟现实技术在Matlab 6.x中的实现[J].计算机与现代化,2004(7):124-126.

上一篇:电气节能技术下一篇:高中英语口语测试