试谈用JAVA实现三层体系结构中用户层与应用层
- 格式:doc
- 大小:43.00 KB
- 文档页数:6
java三层架构实例摘要:一、Java 三层架构概述1.Java 三层架构的定义2.Java 三层架构的优势二、Java 三层架构实例1.实例简介2.实例分层说明a.界面层b.业务逻辑层c.数据持久层3.实例具体实现a.界面层的实现b.业务逻辑层的实现c.数据持久层的实现三、Java 三层架构的优缺点分析1.优点a.高内聚、低耦合b.提高代码可重用性和可移植性2.缺点a.降低系统性能b.可能导致级联修改正文:一、Java 三层架构概述Java 三层架构,即MVC(Model-View-Controller)架构,是一种常见的软件设计模式。
它将整个系统分为三个部分:界面层、业务逻辑层和数据持久层。
这种分层设计有助于实现高内聚、低耦合的目标,提高代码的可重用性和可移植性。
二、Java 三层架构实例1.实例简介本文将以一个简单的Java 三层架构实例为基础,介绍如何实现一个完整的Web 应用。
该实例包含一个用户注册功能,涉及Ajax、Json、Servlet、HTML、CSS 和JDBC 等技术。
2.实例分层说明(1)界面层(View):负责展示用户界面,接收用户输入,与用户进行交互。
(2)业务逻辑层(Controller):处理用户请求,调用相关业务逻辑,将数据传递给界面层或数据持久层。
(3)数据持久层(DAO):负责与数据库进行交互,存储和检索数据。
3.实例具体实现(1)界面层的实现首先,我们创建一个HTML 页面(regist.html),设置用户输入表单,包括用户名、密码、邮箱等。
接着,编写JavaScript 代码对用户输入进行非空检验、邮箱格式检验等。
最后,为表单添加点击事件,将用户输入的数据通过Ajax 技术传递给业务逻辑层。
(2)业务逻辑层的实现在业务逻辑层,我们编写一个CustomerServlet.java 文件,接收来自界面层的请求参数,并对数据进行封装。
然后,调用相关业务逻辑,如查询数据库,判断用户名和邮箱是否唯一等。
java三层架构实例-回复Java三层架构实例在软件开发中,通常使用三层架构将软件系统划分为三个层次:表示层、业务逻辑层和数据访问层。
Java作为一种广泛应用于业界的编程语言,也可以利用其强大的特性来实现这种架构。
本文将以Java三层架构实例为主题,逐步解释这个过程。
第一步:设计表示层在Java三层架构中,表示层负责对外部系统和用户的交互,通常以用户界面的形式展示数据和接收用户输入。
我们可以使用Java Swing或JavaFX等图形界面框架来实现表示层。
这部分的代码仅涉及用户界面的操作,不涉及具体的业务逻辑。
示例代码如下:javaimport javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class PresentationLayer {private JFrame frame;private JButton button;private JLabel label;public PresentationLayer() {frame = new JFrame("Java三层架构示例");button = new JButton("查询");label = new JLabel();button.addActionListener(new ActionListener() {Overridepublic void actionPerformed(ActionEvent e) {String result = BusinessLayer.queryData();label.setText(result);}});frame.add(button);frame.add(label);frame.setLayout(new FlowLayout());frame.setSize(300, 200);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}第二步:设计业务逻辑层在Java三层架构中,业务逻辑层负责处理表示层传递过来的数据,进行相应的数据处理和业务逻辑操作。
java三层架构原理与作⽤⼩结三层架构三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应⽤划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。
区分层次的⽬的即为了“⾼内聚,低耦合”的思想。
概念简介1、表现层(UI):通俗讲就是展现给⽤户的界⾯,即⽤户在使⽤⼀个系统的时候他的所见所得。
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。
概述在软件体系架构设计中,分层式结构是最常见,也是最重要的⼀种结构。
微软推荐的分层式结构⼀般分为三层,从下⾄上分别为:数据访问层、业务逻辑层(⼜或称为领域层)、表⽰层。
三层结构原理:3个层次中,系统主要功能和业务逻辑都在业务逻辑层进⾏处理。
所谓三层体系结构,是在客户端与数据库之间加⼊了⼀个“中间层”,也叫组件层。
这⾥所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应⽤才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到⼀台机器上。
三层体系的应⽤程序将业务规则、数据访问、合法性校验等⼯作放到了中间层进⾏处理。
通常情况下,客户端不直接与数据库进⾏交互,⽽是通过COM/DCOM通讯与中间层建⽴连接,再经由中间层与数据库进⾏交互。
各层的作⽤1:数据数据访问层:主要是对原始数据(数据库或者⽂本⽂件等存放数据的形式)的操作层,⽽不是指原始数据,也就是说,是对数据的操作,⽽不是数据库,具体为业务逻辑层或表⽰层提供数据服务.2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积⽊,那逻辑层就是对这些积⽊的搭建。
3:表⽰层:主要表⽰WEB⽅式,也可以表⽰成WINFORM⽅式,WEB⽅式也可以表现成:aspx, 如果逻辑层相当强⼤和完善,⽆论表现层如何定义和更改,逻辑层都能完善地提供服务。
java三层架构实例摘要:1.三层架构概述2.Java三层架构实例详解3.三层架构的优缺点4.总结正文:一、三层架构概述三层架构(3-Tier Architecture)是一种常见的软件架构模式,它将系统分为三个层次:显示层、业务逻辑层和数据层。
这种架构模式使得系统具有高内聚、低耦合的特点,提高了程序的可重用性和可移植性。
在Java开发中,显示层通常使用HTML、CSS和JavaScript等技术,业务逻辑层使用JavaBean、Servlet等技术,数据层则使用JDBC等数据库操作技术。
二、Java三层架构实例详解1.显示层(View):编写注册界面,用户可以通过界面输入用户名、密码和邮箱等信息。
2.业务逻辑层(Controller):编写CustomerServlet.java,接收请求参数并封装,保证用户名的唯一性,调用Service层将用户信息添加到数据库。
3.数据层(Model):编写User实体类,表示用户的信息。
4.数据库(Database):使用JDBC技术,实现用户信息的增删查改。
三、三层架构的优缺点优点:1.高内聚、低耦合:每个层次职责明确,相互独立,便于维护和扩展。
2.可重用性和可移植性:各层次可以根据需求独立更换,提高系统的灵活性。
缺点:1.系统性能稍低:由于分层处理,可能导致请求处理的效率降低。
2.级联修改:当某个层次发生变化时,可能需要修改其他层次,增加了维护难度。
四、总结Java三层架构是一种理想的软件开发模式,它使得系统具有更好的可维护性、可扩展性和灵活性。
通过具体的实例,我们可以更深入地理解三层架构的实现方式和注意事项。
深入解析Java分层概念一、引言随着企业级应用的不断发展,应用程序的复杂性不断增加,传统的单层架构已经无法满足现代应用程序的需求。
为了解决这个问题,Java分层架构应运而生。
这种架构将应用程序划分为多个层次,每个层次都有其特定的职责和功能,从而提高了应用程序的可维护性和可扩展性。
本文将详细介绍Java分层架构的概念、各层的功能以及它们之间的关系,同时分析Java分层架构的优势和最佳实践,最后展望Java分层的未来发展。
二、Java技术分层Java技术分层是Java分层架构的基础。
在Java技术分层中,通常包含以下几个层次:1.基础层:包括Java语言本身和Java虚拟机(JVM)。
基础层提供了Java程序运行的基础环境和核心功能。
2.框架层:包括Spring、Hibernate、MyBatis等框架。
这些框架提供了丰富的功能和工具,使得开发人员可以更加高效地构建应用程序。
3.业务逻辑层:负责处理应用程序的核心业务逻辑。
业务逻辑层通常由一组业务规则和流程组成,这些规则和流程描述了应用程序的功能和行为。
4.表示层:负责与用户交互,接收用户的请求并返回响应。
表示层通常使用HTML、CSS和JavaScript等技术实现用户界面,并通过HTTP协议与后端进行通信。
三、Java应用分层Java应用分层是将应用程序划分为不同的层次,以便更好地组织和管理应用程序的各个部分。
在Java应用分层中,通常包含以下几个层次:1.表示层:负责与用户交互,接收用户的请求并返回响应。
表示层通常使用Web应用框架实现用户界面,如Spring MVC、JSF等。
2.业务逻辑层:负责处理应用程序的核心业务逻辑。
业务逻辑层通常由一组业务规则和流程组成,这些规则和流程描述了应用程序的功能和行为。
在业务逻辑层中,通常会使用Java语言实现各种业务逻辑算法和数据验证规则。
3.数据访问层:负责与数据库进行交互,实现对数据的增删改查操作。
数据访问层通常使用JDBC、Hibernate、MyBatis等持久化框架来实现对数据库的访问和操作。
java架构思路
Java是一种面向对象的编程语言,它可以在不同的架构中使用。
以下是一些常见的Java架构思路:
1. 三层架构:三层架构是一种将应用程序划分为表示层、业务逻辑层和数据访问层的架构。
表示层处理用户界面和用户输入输出,业务逻辑层处理业务逻辑,数据访问层负责与数据库交互。
2. MVC架构:MVC(Model-View-Controller)是一种将应用程序划分为模型、视图和控制器的架构。
模型表示应用程序的数据和业务逻辑,视图负责展示数据和与用户交互,控制器处理用户输入并更新模型和视图。
3. 微服务架构:微服务架构是一种将应用程序划分为多个小型、独立、可部署的服务的架构。
每个服务负责处理一个特定的业务功能,并通过API进行通信。
4. 分布式架构:分布式架构是一种将应用程序划分为多个不同的节点或计算机的架构。
每个节点负责处理一部分业务逻辑,并通过消息传递或远程过程调用进行通信。
5. 领域驱动设计(DDD):DDD是一种以领域模型为核心的软件设计方法。
领域模型是对业务领域的概念和规则的抽象表示,它驱动应用程序的设计和实现。
无论选择哪种架构思路,都需要考虑应用程序的可扩展性、可维护性、性能和安全性等方面的需求。
同时,合适的设计模式和开发框架也有助于实现更高效、可靠的Java应用程序。
三层架构的理解范文三层架构是指在软件系统开发过程中将系统划分为三个层次,每个层次有不同的功能和责任。
它是一种常用的架构设计模式,用于实现软件系统的可维护性、可扩展性和可重用性,具有很高的灵活性和可靠性。
三层架构由以下三个层次组成:表示层(或用户界面层)、业务逻辑层和数据访问层。
下面将逐层进行详细介绍。
1.表示层(用户界面层):表示层是用户与系统之间的界面,主要负责接收用户的请求并显示系统的响应结果。
它可以是网页、桌面应用程序、移动应用程序等形式。
表示层通过调用业务逻辑层的接口来处理用户的请求,并将结果展示给用户。
它负责用户界面的呈现,包括页面布局、控件和元素等。
2.业务逻辑层:业务逻辑层是整个系统的核心,负责处理与业务逻辑相关的操作。
它接收表示层的请求,根据业务规则进行处理,并通过调用数据访问层来执行数据库操作。
在这个层次上,开发人员需要对业务进行分析和抽象,将业务逻辑转化为代码实现。
业务逻辑层主要包括各种业务逻辑的实现、数据校验和数据处理等。
3.数据访问层:数据访问层主要负责与数据库进行交互,对数据库进行增、删、改和查等操作,将数据保存到数据库或从数据库中读取数据。
它封装了数据库的操作细节,提供了一组接口供业务逻辑层使用。
数据访问层的设计需要考虑数据库的类型、操作方式和连接方式等,保证数据的安全性和完整性。
1.模块化:三层架构将系统划分为三个独立的层次,使得每个层次都具有独立的功能和责任。
这样可以提高代码的复用性,减少系统模块之间的耦合度。
2.可维护性:由于每个层次都有明确的功能和职责,因此当需要对系统进行扩展或修改时,只需对相应的层次进行修改,而不会影响到其他层次。
这样可以降低系统维护的难度和成本。
3.可扩展性:三层架构能够支持系统的可扩展性,当需求发生变化时,可以对一些层次进行扩展或替换,而不会对其他层次造成影响。
4.安全性:三层架构能够通过对不同层次的合理划分来保证系统的安全性。
通过控制数据访问层的权限,可以有效防止非法访问和数据泄露。
基于Java的多层分布式应用模型研究的研究报告随着计算机技术的不断进步和互联网的广泛应用,分布式系统逐渐成为了一种重要的计算模型。
多层分布式应用模型作为分布式系统中一种非常常见的构建方法,受到了广泛的关注。
本文将从Java作为一种主流编程语言出发,对多层分布式应用模型进行研究并探讨其实现方式。
一、多层分布式应用模型概述多层分布式应用模型多指采用层次结构,服务分布式部署的技术架构。
常常使用的分层方式包括:展示层(Presentation)、应用层(Application)、服务层(Service)、数据层(Data Access)。
在该模型中,Web服务器、应用服务器、业务服务都可以实现完全解藕。
其中,数据层是不支持UI的业务,如数据库、文件存储等。
展示层:负责向用户呈现UI界面,包括HTML、JSP等页面,与用户直接交互。
应用层:负责业务功能模块的实现,如用户注册、登录等,具体实现方式可采用Java Bean组件封装业务操作,外部以Servlet、JSP提供服务。
服务层:负责将业务拆分成服务单元,供上层调用。
可使用远程过程调用(RPC)、消息中间件等技术实现。
数据层:负责业务数据读写操作,可以访问数据库、文件系统等。
通常使用JavaBean和DAO实现数据层操作,与策略层和服务层解耦。
二、Java多层分布式应用模型实现方案Java作为一种高效、安全和跨平台的编程语言,深受开发人员的青睐。
在多层应用中,Java可采用以下几种方式实现:采用SSH框架:Spring+Struts+Hibernate架构,便于实现业务逻辑。
Spring主要负责业务线程池、业务控制逻辑、事务控制等功能,Struts主要负责Web展示层,Hibernate负责ORM关系数据层。
采用SSM框架:Spring+Spring MVC+MyBatis架构,类似于SSH,Spring负责业务调度,Spring MVC负责Web显示层,MyBatis负责数据操作。
三层⽹络结构(客户端,应⽤服务层,数据源层)指的是将数据处理过程分为三部分:第⼀层是客户端(⽤户界⾯层),提供⽤户与系统的友好访问;第⼆层是(也叫中间层),专司业务逻辑的实现;第三层是数据源层(数据服务层,),负责数据信息的存储、访问及其优化。
由于业务逻辑被提取到应⽤服务层,⼤⼤降低了客户端负担,因此也成为瘦客户(Thin Client)结构,在传统的⼆层结构的基础上增加了应⽤服务层,将应⽤逻辑单独进⾏处理,从⽽使得⽤户界⾯与应⽤逻辑位于不同的平台上,两者之间的通信协议由系统⾃⾏定义。
通过这样的结构设计,使得应⽤逻辑被所有⽤户共享,这是两层结构应⽤软件与三层应⽤软件之间最⼤的区别。
三层结构将表⽰部分和业务逻辑部分按照客户层和相分离,客户端和应⽤服务层、应⽤服务层和数据库服务层之间的通讯、异构平台之间的数据交换等都可以通过中间件或者相关程序来实现。
当数据库或者应⽤服务层的业务逻辑改变时,客户端并不需要改变,反之亦然,⼤⼤提⾼了系统模块的,缩短开发周期,降低维护费⽤。
以Java为客户端,以Java为中间层的,在信息平台得到了⼴泛的应⽤。
---------------------------------------------------------------------------------------------------------客户端层 (Client Tier,也叫⽤户界⾯层)是将数据呈现给⽤户或处理⽤户输⼊的应⽤程序或系统⼀部分。
客户端也称为前端,它并不执⾏数据函数,⽽是通过输⼊向服务器请求数据,然后以⼀定的格式显⽰结果。
参见中间层、数据源层。
客户端层⽤来实现企业级应⽤系统的操作界⾯和显⽰层.另外,某些客户端程序也可实现业务逻辑.可分为基于Web的和基于⾮Web的客户端两种情况.基于Web的情况下,主要作为企业Web服务器的浏览器.⾮基于Web的客户端层则是独⽴的应⽤程序,可以完成瘦客户机⽆法完成的任务. ⽤户界⾯层负责处理⽤户的输⼊和向⽤户的输出,但并不负责解释其含义(出于效率的考虑,它可能在向上传输⽤户输⼊前进⾏合法性验证),这⼀层通常⽤前端⼯具(VB,VC,ASP等)开发;商业逻辑层是上下两层的纽带,它建⽴实际的数据库连接,根据⽤户的请求⽣成SQL语句检索或更新数据库,并把结果返回给客户端,这⼀层通常以动态链接库的形式存在并注册到服务器的注册簿(Registry)中,它与客户端通讯的接⼝符合某⼀特定的组件标准(如COM,CORBA),可以⽤任何⽀持这种标准的⼯具开发;数据库层负责实际的数据存储和检索。
javaee分层知识点总结JavaEE是企业级Java应用程序开发的一系列标准和规范的集合。
在JavaEE应用程序中,通常会使用分层架构来实现系统的模块化和解耦。
分层架构把系统分为不同的层次,在每个层次中都有自己的功能和责任,这样可以更好地管理系统的复杂性并提高系统的可维护性和扩展性。
在JavaEE中,通常会使用三层架构(也称为MVC架构)来组织系统的结构,这三层分别是表示层(View)、业务逻辑层(Model)和持久层(Controller)。
下面我们将分别介绍这三个层次在JavaEE中的主要知识点。
表示层(View)表示层主要负责系统与用户的交互,它负责向用户展示数据和接收用户的输入。
在JavaEE 中,表示层通常采用JSP、Servlet和JSF等技术来实现。
JSP(Java Server Pages)是一种用于开发动态Web页面的技术,它允许我们在页面中嵌入Java代码,以便动态生成页面内容。
JSP页面通常包含HTML代码和Java代码,它们通过JSP引擎动态生成Java Servlet,并由Servlet容器负责处理用户请求。
Servlet是在服务器上运行的Java程序,它负责接收并处理用户的请求,然后生成响应并返回给用户。
Servlet通常用于处理用户的表单提交、登录验证、数据列表展示等操作。
JSF(JavaServer Faces)是一种用于构建用户界面的JavaEE框架,它为开发者提供了一系列的组件和标签库,使开发者能够更加方便地开发JavaEE应用程序的用户界面。
除了以上的技术之外,JavaEE中还有一些其他的表示层技术,例如Struts和Spring MVC 等框架。
这些框架都可以用于构建JavaEE应用程序的表示层,并且各有各的特点和适用场景。
业务逻辑层(Model)业务逻辑层主要负责处理系统的业务逻辑和业务流程,它包括各种业务对象和逻辑处理的组件,负责处理数据的验证、计算和数据处理等操作。
试谈用JA V A实现三层体系结构中用户层与应用层摘要:近些年来应用程序使用多层体系结构来设计已经越来越普遍。
本文从使用JA V A的角度来论述了三层结构中优点和实现应用服务器层和用户层的方法和手段。
关键字:三层体系结构,用户层,应用服务器层,一. 三层结构的简单描述及优点三层体系结构,即用户层、应用层和数据库服务器。
用户层主要指用户界面,它要求尽可能的简单,使最终用户不需要进行任何培训就能方便地访问信息;第二层就是应用服务器,也就是常说的中间件,所有的应用系统、应用逻辑、控制都在这一层,系统的复杂性也主要体现在应用层;最后的数据库服务器存储大量的数据信息和数据逻辑,所有与数据有关的安全、完整性控制、数据的一致性、并发操作等都是在第三层完成。
采用JAVA的三(N)层结构的优点1.能有效降低建设和维护成本,简化管理多层应用结构在各层次上的组件能单独更新、替换或增加、拆除。
因此,系统维护更方便,代价相对低得多。
而且,因各组件互相独立,更换组件就好比更换组合音响的一个部件,对系统其它部分并无影响,所以更新维护更加安全可靠。
客户端采用瘦客户机。
因为,客户机不必进行大量的计算或数据处理,它的硬件配置就不需要太高。
通过将业务逻辑集中到中间层,系统获得了对业务逻辑的独立性,即当用户的需求改变时,开发人员可以迅速地在中间层(应用服务器)上更新业务逻辑,而无需将更新后的应用提交到众多的PC终端系统上去,即客户端无需任何改动(改动众多的客户端并不是件轻松的事)。
2.适应大规模和复杂的应用需求如果说结构化方法使软件开发从一门手工艺术走向科学的工程方法,组件技术则使软件工程从个体作坊走向大规模工业。
虽然,结构化方法对中小型系统开发能够行之有效,但对大型系统,结构化分析的结果往往是错综复杂的网状结构,而不是结构清晰的层次结构。
这也正是面向对象方法学诞生的原因。
组件技术能使复杂系统的设计变得简单可行,具有良好的伸缩性。
三层或多层结构,可以将数据处理从客户端转移到应用服务器和数据库服务器上。
这样,尽管客户端与应用服务器之间可能存在着多个甚至数百个的连接,但是应用服务器与数据库服务器之间的连接却只有少数几个,从而达到减少通信线路上传递的数据量的目标。
这样的功能分配提供了很强的系统可伸缩性,使得在用户数量急剧增加时还能保持系统性能的稳定。
即使在用户数量很大的情况下,数据库仍能保持良好的工作负载,保持系统的快速的响应速度。
3.可适应不断的变化和新的业务需求任何应用系统实施的重点不在于需求确定以后能否实现这些需求,而是在系统实施后如何适应变化的需求。
JAVA系统结构和组件式系统的开发和维护过程中,技术人员可以按照新的需求,通过在不同系统层次上调度更新的组件或新加入的组件来调整旧的系统,以适应新的与不断变化的要求。
以往的系统只能靠专业维护人员或系统开发商的再次开发或修改原有系统,才能满足新的需求,代价往往很大,无法保证时间上的要求。
4.访问异构数据库多层结构的中间层即应用服务器能够提供广泛的异构数据库访问和复制能力。
传统的客户机/服务器结构则需要在客户端安装许多访问异构数据库的驱动程序,而三层/多层结构只要在中间层有相应的驱动程序就可以访问异构数据源。
5.能有效提高系统并发处理能力传统的一体化集中式系统或客户服务器架构,在处理大信息量业务时,都可能形成瓶颈。
而多层体系架构的组件式系统将界面、界面发布、业务应用逻辑及数据存储分为多个层次分散管理,逻辑或物理地将它们分开,可减轻系统压力,提高整体性能。
并且中间层可以采取多机并行的方式,相互备份的方式,保证系统的高可用性。
一般情况下进行数据分析时,每次查询可能涉及到大量的数据,往往需要较长的响应时间,特别在分布式数据环境下,响应时间有时长得令人难以忍受。
三层(多)层结构提供了客户端与服务器之间的异步通信,使得客户不必等待提交的分析处理结果而可以继续执行其他处理任务。
6.能有效提高系统安全性多层体系结构将数据与程序、数据控制与应用逻辑分层独立管理,能更严格地控制信息访问;信息传递中采用数据加密技术,可进一步减低信息失密的风险。
应用服务器内建安全控制数据库,实现应用服务器与数据服务器的双重权限控制,对权限的划分更准确、灵活、严格。
新系统在信息访问、传递和存储三个环节上均有严格的安全措施。
由于利用JAVA的三层结构具有这么多的优点,以至于它的应用越来越广,现在几乎所有的Web服务器都采用三(N)层结构,所以怎样采用JAVA实现三(N)层体系结构成了当今程序员希望掌握的一个热点。
二. 利用JA V A实现三层体系结构中的中间层:服务器应用层。
1 创建服务器创建一个Server 类从Thread类继承过来。
声明一个ServerSocket对象监听客户请求。
Server 类的构造函数创建和启动ServerSocket 线程。
如果在启动服务器时引发异常,将会产生一个出错信息。
此构造函数的代码如下:Public Server(){try{serverSocket = new ServerSocket(1001);}catch(IoException e){fail(e,”Could not start server”);}System.out.println(“Server started ………”);This.start();}2 实现监听客户请求服务器的run()方法和实现Runnable 接口的所有线程一样,拥有线程的指令。
在这种情况下,服务器进入了个无限循环并监听客户请求。
当服务器安全连接到客户机时,ServerSocket 类的accept()方法接收此连接。
服务器为客户机创建一个用户定义的类Connection 的对象,将一个Socket 对象传入构造函数。
客户机和服务器之间的通讯通过这个套接字发生。
run()方法的代码如下:Public void run(){try{while(ture){Socket client = serverSocket.accept();Connection con = new Connection(client);}}catch(IoException e ){fail(e,”Not listening”);}}3 启动服务器main()方法的代码如下。
它创建了一个启动线程的Server类的对象。
Public static void main(String args[]){new Server();}Connection 线程以下代码片段描述了Connection 类.Class Connection extends Thread{protected Socket netClient;protected bufferedReader fromClient;protected PrintStream toClient;public connection(Socket client){netClient = client;try{fromClient = new BufferedReader(new InputStreamReader(newClient.getInputStream()); toClient = new PrintStream(newClient.getOutStream()));}catch(IoException e){try{netClient.close();}catch(IoException e1){System.err.println(“Unable to set up streams” +e1);Return;}}this.start();}public void run(){String login,password;Try{for( ; ; ){toClient.println(“Login:”);login = fromClient.readLine();if(logion == null)break;toClient.println(“Welcome !! Enter command :”);}}catch( IoException e ){}finally{try{netClient.close();}catch (IoException e ){}}}}Connection 类创建一个BufferedReader 对象(fromClient)和一个PrintStream 对象(toClient)。
FromClient 使用getInputStream() 方法检索客户端的输入:toClient 使用getOutPutStream() 方法使得服务器可以把输出写到客户端。
这样一来;就开始了双工通讯。
当客户连接到服务器时,服务器使用toClient对象的Println() 方法将”Login:”写到套接字上,它使用readLien()方法将客户机发送的登陆ID存入字符串变量Login.println()方法用于将”Password:”。
提示写到套接字上.然后,服务器再次调用readLine()将用户输入存入另一个变量password。
服务器中可以有一个验证登陆ID和口令以加密的格式存储,这将是解密的地方.如果用户是经过授权的,就可以使用已经建立流对象开始对话。
到了注销的时候,服务器中断循环.这引起finally 程序块的执行,关闭客户套接字.关闭套接字是很关键的,如果让连接开着,很快就将耗尽服务器的内存.finally 程序块确保连接的关闭。
注意:服务器是多线程的,每个客户都要从服务器得到它自己的线程。
三.利用JA V A实现三层体系结构中的用户层。
import .*;import java.io.*;public class Client{public static void main(String str[]){Socket socket;PrintStream out=null;BufferedReader in =null;Try{socket=new Socket(“192.168.10.2”,1001);out = new PrintStream(socket.getOutputStream());in= new BufferedReader(new InputStreamReader(socket.getInputStream()));}catch(UnknownHostException e){System.out.println(“Unknown hostname”);System.exit(1);}catch(IOException e){System.out.println(“I/O error”);System.exit(1);}BufferedReader sdtin= new BufferedReader(new InputStreamReader((System.in)));String login= in.readLine();System.out.println(login);String logName=stdin.readLine();out.println(logName);String password=in.readLine();System.out.println(password);String pass=stdin.readLine();out.println(pass);String str= in.readLing();System.out.println(str);while((str=stdin.readLine())!=null){out.println(str);if(str.equal(“byebye”))break;}out.close();in.close();stdin.close();}}上述程序输入“byebye”时中断连接。