Java程序设计之网络编程.ppt
《Java程序设计之网络编程.ppt》由会员分享,可在线阅读,更多相关《Java程序设计之网络编程.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java程序设计之网络编程程序设计之网络编程重庆大学计算机学院重庆大学计算机学院重庆大学计算机学院重庆大学计算机学院电子邮件:电子邮件:电子邮件:电子邮件: 教学课件第第17章章Web服务器端编程服务器端编程第第17章章Web服务器端编程服务器端编程17.1JavaWeb17.1JavaWeb服务器介绍服务器介绍服务器介绍服务器介绍17.217.2ServletServlet介绍介绍介绍介绍17.3JSP17.3JSP介绍介绍介绍介绍17.4Struts17.4Struts介绍介绍介绍介绍 17.1JavaWeb服务器介绍服务器介绍在进行实际大型在进行实际大型JavaWebJavaWeb项目实
2、施的时候,我们可以采项目实施的时候,我们可以采用商业型的应用服务器,应用服务器可以处理复杂的商业逻用商业型的应用服务器,应用服务器可以处理复杂的商业逻辑,常应用于辑,常应用于WEBWEB多层结构的开发。例如多层结构的开发。例如IBMIBM的的 WebSphereWebSphere服务器服务器,BEA,BEA的的WebLogicWebLogic服务器。这两种服务器功能齐全而服务器。这两种服务器功能齐全而强大,支持所有的强大,支持所有的JavaJava服务容器标准,适用于大型的商业服务容器标准,适用于大型的商业JavaWebJavaWeb应用的发布。但是这两种服务器都是商业服务器,应用的发布。但是
3、这两种服务器都是商业服务器,价格昂贵,对系统资源要求极高。特别是价格昂贵,对系统资源要求极高。特别是WebsphereWebsphere配置更配置更复杂。复杂。JBossJBoss公司的开源免费软件公司的开源免费软件JbossJboss应用服务器同样功能应用服务器同样功能齐全而强大,也支持所有的齐全而强大,也支持所有的JavaJava服务容器标准。而且服务容器标准。而且JBossJBoss具有良好的性价比具有良好的性价比,具有良好的运行效率和可靠性具有良好的运行效率和可靠性,因此已经因此已经得到越来越多的得到越来越多的J2EEJ2EE应用开发者和中小型企业的青睐。但同应用开发者和中小型企业的青
4、睐。但同样对系统资源要求高,配置复杂。样对系统资源要求高,配置复杂。17.1JavaWeb服务器介绍服务器介绍在开发或学习过程中,有许多免费轻型的在开发或学习过程中,有许多免费轻型的JavaWebJavaWeb服务器可以供我服务器可以供我们选用,如们选用,如TomcatTomcat、ResinResin、OrionOrion等等。他们使用都很方便,占用资源等等。他们使用都很方便,占用资源也很少,适合开发过程中的调试阶段;而且这些服务器还可以和也很少,适合开发过程中的调试阶段;而且这些服务器还可以和JbuilderJbuilder、EclipseEclipse等开发工具集成使用。根据实际开发中的
5、情况来看,等开发工具集成使用。根据实际开发中的情况来看,JakataJakata TomcatTomcat和和SunJavaSunJava结合的最好,和其他应用服务器配合使用可支持完整结合的最好,和其他应用服务器配合使用可支持完整的的J2EEJ2EE标准,因此其应用很广泛。但是从标准,因此其应用很广泛。但是从JavaJava普遍存在的编码问题来看,普遍存在的编码问题来看,还是还是ResinResin解决得比较好。从使用的角度来看,解决得比较好。从使用的角度来看,ResinResin比比TomcatTomcat方便,而方便,而且且ResinResin也可以结合也可以结合JbuilderJbuil
6、der、EclispeEclispe等等IDEIDE使用。使用。ResinResin强调使用强调使用XmlXml技技 术,术,从从ResinResin自己的自己的HomePageHomePage使用使用xtpxtp就可以看出来。本书将使用就可以看出来。本书将使用ResinResin服务器服务器作为测试和开发的工具。但本章的例子仍然可以在作为测试和开发的工具。但本章的例子仍然可以在TomcatTomcat上运行,只需上运行,只需要对配置文件进行简单的修改即可。要对配置文件进行简单的修改即可。17.1JavaWeb服务器介绍服务器介绍ResinResin可以在可以在 http:/http:/ 免费
7、下载和使免费下载和使用。使用用。使用ResinResin开发或者学习是免费的,但是如果把开发或者学习是免费的,但是如果把ResinResin作作为收费产品发布是需要付费的。本书将使用为收费产品发布是需要付费的。本书将使用2.1.162.1.16版本来运版本来运行所有的例子。行所有的例子。下载下载ResinResin时选择时选择ArchiveVersionsArchiveVersions中的中的 windows.zipwindows.zip的普的普通安装包通安装包resin-ee-2.1.16resin-ee-2.1.16。把该。把该zipzip包解压到任何目录下面,包解压到任何目录下面,如如d
8、:Resin-ee-2.1.16d:Resin-ee-2.1.16。以下介绍都假设。以下介绍都假设ResinResin安装在安装在d:Resin-ee-2.1.16d:Resin-ee-2.1.16下。进入下。进入d:Resin-ee-2.1.16bind:Resin-ee-2.1.16bin,运行,运行httpd.exehttpd.exe,另外也可以在,另外也可以在CommandCommand控制台下运行控制台下运行ResinResin服务服务器。此时弹出一个有器。此时弹出一个有startstart和和stopstop两个两个RadioRadio按纽和一个按纽和一个quitquit按纽的对话
9、窗,如图按纽的对话窗,如图17.1JavaWeb服务器介绍服务器介绍17.1JavaWeb服务器介绍服务器介绍第第17章章Web服务器端编程服务器端编程17.1JavaWeb17.1JavaWeb服务器介绍服务器介绍服务器介绍服务器介绍17.217.2ServletServlet介绍介绍介绍介绍17.3JSP17.3JSP介绍介绍介绍介绍17.4Struts17.4Struts介绍介绍介绍介绍 17.2Servlet介绍介绍17.2.117.2.1ServletServlet的概念的概念的概念的概念17.2.217.2.2ServletServlet应用范围和运行环境应用范围和运行环境应用范围
10、和运行环境应用范围和运行环境17.2.317.2.3ServletServlet简单例子简单例子简单例子简单例子 17.2.417.2.4ServletServlet常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期17.2.517.2.5ServletServlet应用举例应用举例应用举例应用举例17.2.1Servlet的概念的概念Servlet就是用Java编写的服务器端程序,是由服务器端调用和执行的Java类,这种类使用JavaServlet应用程序设计接口(API)及相关类和方法。除了JavaServletAPI,Servlet还可以使用用以扩展
11、和添加到API的Java类软件包。Servlet是一种采用Java来实现CGI(CommonGateInterface)功能的技术。Servlet本身与协议无关,与平台也无关。也就是说Servlet所适用的网络协议可以是多种多样的,比如HTTP,FTP,SMTP,TELNET等,但是就目前而言,只有HTTP服务已经形成了标准的Java组件。对应的软件包有两个javax.servlet.http和javax.servlet.jsp,分别对应我们要讲解的Servlet和JSP编程。我们通常所说的Servlet编程主要就是指针对HTTP的Servlet编程,用到的就是javax.servlet.ht
12、tp包中的类(典型的就是HttpServlet类),实际上JavaServlet编程的概念要更广一些,在这里我们约定俗成的使用Servlet来指代HTTPServlet的编程,这点读者是需要了解的。由于JSP最终都是要经过JSP引擎转换成Servlet代码的,而且Servlet编程和一般的Java编程是没有大的区别的,只需要了解一定的规范即可。17.2.217.2.2ServletServlet应用范围和运行环境应用范围和运行环境应用范围和运行环境应用范围和运行环境 Servlet运行于运行于Servlet引擎管理的引擎管理的Java虚拟机中,被来自客户机的请求所唤虚拟机中,被来自客户机的请求
13、所唤醒,与醒,与CGI不同的是,在虚拟机中只要装载一个不同的是,在虚拟机中只要装载一个Servlet就能够处理新的请求,就能够处理新的请求,每个新请求使用内存中那个每个新请求使用内存中那个Servlet的相同副本,所以效率比的相同副本,所以效率比CGI来得高。如果来得高。如果采用服务器端脚本,如采用服务器端脚本,如ASP,PHP,语言解释程序是内置程序,虽然可以加快服,语言解释程序是内置程序,虽然可以加快服务器的运行,但是效率还是比不上准编译的务器的运行,但是效率还是比不上准编译的Servlet。实际的使用也已经证明,。实际的使用也已经证明,Servlet是效率很高的服务器端程序,很适合用来开
14、发是效率很高的服务器端程序,很适合用来开发Web服务器应用程序。服务器应用程序。JavaServlet有着十分广泛的应用。不光能简单的处理客户端的请求,借助有着十分广泛的应用。不光能简单的处理客户端的请求,借助Java的强大的功能,使用的强大的功能,使用Servlet还可以实现大量的服务器端的管理维护功能,以及还可以实现大量的服务器端的管理维护功能,以及各种特殊的任务,比如,并发处理多个请求,转送请求,代理等。各种特殊的任务,比如,并发处理多个请求,转送请求,代理等。为了运行为了运行Servlet,首先需要一个,首先需要一个JVM来提供对来提供对Java的基本支持,一般需要的基本支持,一般需要
15、安装安装JRE(JavaRuntimeEnvironment)或)或JDK(JavaDevelopKit,JRE是其中的一个子集)。其次我们需要是其中的一个子集)。其次我们需要ServletAPI的支持,一般的的支持,一般的Servlet引擎都引擎都自带自带ServletAPI,只要我们安装,只要我们安装Servlet引擎或安装直接支持引擎或安装直接支持Servlet的的Web服服务器,便会自动安装上务器,便会自动安装上Servlet相关的程序包。相关的程序包。Resin自带一个自带一个ServletRunner和和HTTPServer,因此要构建一个简单的,因此要构建一个简单的Web环境,光
16、有环境,光有Resin已经足够了,不需要额外的支持软件。已经足够了,不需要额外的支持软件。17.2.3Servlet简单例子简单例子【例例17-1】使用Servlet在客户端输出简单的问候语句/HelloWorld.javapackagetest;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassHelloWorldextendsHttpServletprivateStringgreeting;publicvoidinit()throwsServletExceptiongreeting=get
17、InitParameter(greeting);17.2.3Servlet简单例子简单例子【例例17-1】使用Servlet在客户端输出简单的问候语句publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException/doGet()是这个Servlet的核心,真正处理请求的地方PrintWriterout=response.getWriter();/从HttpServletResponse得到输出流out.println();out.println();
18、out.println(+greeting+);out.println();out.println();out.println(+greeting+);out.println();out.println();/上面的语句都是向客户端打印HTML文本out.close();/关闭HttpServletResponsepublicvoiddestroy()/nothingtodo17.2.3Servlet简单例子简单例子这是最简单的一个Servlet程序,整个类从HttpServlet派生,就跟Applet一样,这个派生关系是必须的。这个Servlet必须实现doGet()方法(因为它是作为静态页
19、面通过地址访问的,这种方式在HTTP中称为GET请求,在后面还会有更具体的讲解),这是这个Servlet真正处理请求的地方,是整个Servlet的主体。doGet()有两个参数HttpServletRequestreq和HttpServletResponseres。HttpServletRequest包含了客户请求的各种信息,HttpServletResponse则包装了服务器响应,主要处理对客户机的输出。通过javac对以上程序进行编译,我们可以得到HelloServlet.class,下面我们就通过配置Resin来运行这个Servlet。在webapps下建立自己的发布目录mytest,m
20、ytest目录下的WEB_INF/classes是Resin默认的classpath环境变量的值,把HelloWorld.java拷贝到WEB_INF/classes/test目录下。当然也可以将其拷贝到有效的系统或用户的classpath下,Resin都是能够找到的,如Resin默认的发布目录doc。接下来就需要修改conf目录下的resin.conf文件,来配置我们的Servlet。读者可以使用任何一种自己所熟悉的文本编辑器来打开该配置文件17.2.3Servlet简单例子简单例子在中加上下面的配置语句这样当客户端产生/Hello请求的时候,Resin就能把这个请求定向到test.Hell
21、oWorld上,同时给出greeting参数的值。该Servlet就能正常运行了。下面我们启动Resin服务器(通过双击bin下的httpd.exe)。这样我们就可以通过浏览器访问这个Servlet了。打开浏览器,比如IE,在地址栏键入http:/localhost:8080/mytest/Hello,就可以看到运行结果网页,如图17.2.3Servlet简单例子简单例子17.2.417.2.4ServletServlet常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期17.2.417.2.4ServletServlet常用类、接口和生命周期常用类、接口
22、和生命周期常用类、接口和生命周期常用类、接口和生命周期1、Servlet的生命周期的生命周期Servlet容器负责处理客户请求、把请求传送给Servlet并把结果返回给客户。不同的Web容器实际的实现可能有所不同,但容器与Servlet之间的接口是由ServletAPI定义好的,这个接口定义了Servlett容器在Servlet上要调用的方法及传递给Servlet的对象类。Servlet的生命周期可以被归纳为下面的步骤:(1)装载Servlet,这一项操作一般是动态执行的。(2)Server创建一个Servlet实例;(3)Server调用Servlet的init方法;(4)一个客户端请求到达
23、Server;(5)Server创建一个请求对象;(6)Server创建一个响应对象;(7)Server激活Servlet的service方法,传递请求和响应对象作为参数;(8)service方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息;17.2.417.2.4ServletServlet常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期(9)service方法使用响应对象的方法。将响应传回Server,最终到达客户端。service方法可能激活其他方法以处理请求。如doGet,doPost或其他程序员自己开发的方法(10)对于更多的
24、客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service方法,将这两个对象作为参数传递给它,如此重复以上的循环,但无需再次调用init方法,Servlet一般只初始化一次(11)当Server不再需要Servlet时(比如当Server要关闭时),Server调用Servlet的destroy方法。一旦请求了一个Servlet,就没有办法阻止容器执行一个完整的生命周期。容器在Servlet首次被调用时创建它的一个实例,并保持该实例在内存中,让它对所有的请求进行处理。容器可以决定在任何时候把这个实例从内存中移走。在典型的模型中,容器为每个Servlet创建一个单独
25、的实例,容器并不会每接到一个请求就创建一个新线程,而是使用一个线程池来动态的将线程分配给到来的请求,但是这从Servlet的观点来看,效果和为每个请求创建一个新线程的效果相同。17.2.417.2.4ServletServlet常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期2、Servlet接口接口publicinterfaceServlet它的生命周期由javax.servlet.servlet接口定义。当你在写servlet的时候必须直接或间接的实现这个接口。一般趋向于间接实现:通过从javax.servlet.GenericServlet或jav
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 网络 编程
限制150内