Java程序设计之网络编程.ppt

上传人:s****8 文档编号:67341401 上传时间:2022-12-24 格式:PPT 页数:58 大小:429.50KB
返回 下载 相关 举报
Java程序设计之网络编程.ppt_第1页
第1页 / 共58页
Java程序设计之网络编程.ppt_第2页
第2页 / 共58页
点击查看更多>>
资源描述

《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

26、ax.servlet.http.HttpServlet派生。在实现servlet接口时必须实现它的五个方法:(1)init():publicvoidinit(ServletConfigconfig)throwsServletException(2)service():publicvoidservice(ServletRequestreq,ServletResponseres)throwsServletException,IOException(3)destroy():publicvoiddestroy()(4)getServletConfig()publicServletConfiggetSe

27、rvletConfig()(5)getServletInfo():publicStringgetServletInfo()17.2.417.2.4ServletServlet常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期下面的类和接口详细情况见下面的类和接口详细情况见servert帮助文档。帮助文档。3、GenericServlet类类publicabstractclassGenericServletimplementsServlet,ServletConfig,Serializable此类提供了此类提供了servlet接口的基本实现部分,其中包含的接

28、口的基本实现部分,其中包含的service()方法被申明为方法被申明为abstract,因此该类必须被继承。,因此该类必须被继承。init(ServletConfigconf)方法把方法把servletConfig对象存对象存储在一个储在一个privatetransient(私有临时)实例变量里,(私有临时)实例变量里,getServletConfig()方法返回指向本对象的指针,如果重载此方法,将不能方法返回指向本对象的指针,如果重载此方法,将不能使用使用getServletConfig来获得来获得ServletConfig对象,如对象,如果确实想重载,记住要包含对果确实想重载,记住要包含对

29、super.config的调用。的调用。17.2.417.2.4ServletServlet常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期4、HttpServlet类类该类扩展了该类扩展了GenericServlet类并对类并对Servlet接口提供了与接口提供了与HTTP更相关的实现。更相关的实现。(1)、service()方法方法:protectedvoidservice(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOExceptionpublicvoid

30、service(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOExceptionservice()方法是方法是Servlet的核心。每当一个客户请求一个的核心。每当一个客户请求一个HttpServlet对象,该对象的对象,该对象的service()方法就要被调用,而且传递方法就要被调用,而且传递给这个方法一个给这个方法一个请求请求(ServletRequest)对象和一个对象和一个响应响应(ServletResponse)对象作为参数。对象作为参数。在在HttpServlet中已存在中已存在servi

31、ce()方法。缺省的服务功能是调用与方法。缺省的服务功能是调用与HTTP请求的方法相应请求的方法相应的的do功能。功能。如果如果如果如果servletservlet收到一个收到一个收到一个收到一个HTTPHTTP请求而你没有重载相应的请求而你没有重载相应的请求而你没有重载相应的请求而你没有重载相应的dodo方法,它就返回方法,它就返回方法,它就返回方法,它就返回一个说明此方法对本资源不可用的标准一个说明此方法对本资源不可用的标准一个说明此方法对本资源不可用的标准一个说明此方法对本资源不可用的标准HTTPHTTP错误。下面是这些错误。下面是这些错误。下面是这些错误。下面是这些dodo方法方法方法

32、方法的说明:的说明:的说明:的说明:1 1)doGetdoGet 用来处理用来处理用来处理用来处理HTTPHTTP的的的的GETGET请求。请求。请求。请求。2 2)doPostdoPost 用来处理用来处理用来处理用来处理HTTPHTTP的的的的POSTPOST请求。请求。请求。请求。3 3)doPutdoPut用来处理用来处理用来处理用来处理HTTPHTTP的的的的PUTPUT请求。请求。请求。请求。4 4)doDeletedoDelete用来处理用来处理用来处理用来处理HTTPHTTP的的的的DELETEDELETE请求。请求。请求。请求。5 5)doHeaddoHead 用来处理用来处

33、理用来处理用来处理HTTPHTTP的的的的HEADHEAD请求。请求。请求。请求。6 6)doOptionsdoOptions用来处理用来处理用来处理用来处理HTTPHTTP的的的的OPTIONSOPTIONS请求。请求。请求。请求。7 7)doTracedoTrace用来处理用来处理用来处理用来处理HTTPHTTP的的的的TRACETRACE请求请求请求请求在开发以在开发以在开发以在开发以HTTPHTTP为基础的为基础的为基础的为基础的servletservlet中,中,中,中,ServletServlet开发者关心方法开发者关心方法开发者关心方法开发者关心方法doGetdoGet和方和方和

34、方和方法法法法doPostdoPost即可。即可。即可。即可。n n(2)(2)、getLatModifiedgetLatModified():():protectedlongprotectedlonggetLastModified(HttpServletRequestgetLastModified(HttpServletRequest reqreq)17.2.417.2.4ServletServlet常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期5、HttpServletRequest接口接口publicinterfaceHttpServletReq

35、uestextendsServletRequest所有实现此接口的对象(例如从所有实现此接口的对象(例如从servlet容器传递的容器传递的HTTP请求对象)都能请求对象)都能让让servlet通过自己的方法访问所有请求的数据。下面是一些用来获取表单通过自己的方法访问所有请求的数据。下面是一些用来获取表单数据的基本方法。数据的基本方法。(1)getParameter()publicStringgetParameter(Stringkey)此方法试图将根据查询串中的关键字定位对应的参数并返回其值。如果有多此方法试图将根据查询串中的关键字定位对应的参数并返回其值。如果有多个值则返回列表中的第一个值

36、。如果请求信息中没有指定参数,则返回个值则返回列表中的第一个值。如果请求信息中没有指定参数,则返回null。(2)getParametervalues():publicStringgetParametervalues(Stringkey)如果一个参数可以返回多个值,比如复选框集合,则可以用此方法获得对应如果一个参数可以返回多个值,比如复选框集合,则可以用此方法获得对应参数的所有值。如果请求信息中没有指定参数,则返回参数的所有值。如果请求信息中没有指定参数,则返回null。(3)GetParameterNames():PublicEnumerationgetParameterNames()此方法

37、返回一个此方法返回一个Enumeration对象,包含对应请求的所有参数名字列表。对象,包含对应请求的所有参数名字列表。17.2.417.2.4ServletServlet常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期6、HttpServletResponse接口接口publicinterfaceHttpServletResponseextendsservletResponseservlet容器提供一个实现该接口的对象并通过service()方法将它传递给servlet。通过此对象及其方法,servlet可以修改响应头并返回结果。(1)setConte

38、ntType():publicvoidsetContentType(Stringtype)在给调用者发回响应前,必须用此方法来设置HTTP响应的MIME类型。可以是任何有效的MIME类型,当给浏览器返回HTML就是”text/html”类型。(2)getWriter():publicPrintWritergetWriter()throwsIOException此方法将返回PrintWriter对象,把servlet的结果作为文本返回给调用者。PrintWriter对象自动把Java内部的Unicode编码字符转换成正确的编码以使客户端能够阅读。(3)getOutputStream():(4)s

39、etHeader():17.2.417.2.4ServletServlet常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期7、HttpSession接口接口这个接口被这个接口被Servlet引擎用来实现在引擎用来实现在HTTP客户端和客户端和HTTP会话两者的会话两者的关联。这种关联可能在多次连接和请求中持续一段给定的时间。关联。这种关联可能在多次连接和请求中持续一段给定的时间。Session用来在无状态的用来在无状态的HTTP协议下越过多个请求页面来维持状态和识别用户。协议下越过多个请求页面来维持状态和识别用户。一个一个Session可以通过可以通过C

40、ookie或重写或重写URL来维持。其方法有:来维持。其方法有:getCreationTime()、()、getId()、()、getLastAccessedTime()、()、getMaxInactiveInterval()、()、getValue()、()、getValueNames()、()、invalidate()、()、iSNew()、()、putValue()、()、removeValue()、()、setMaxInactiveInterval()()等。等。17.2.417.2.4ServletServlet常用类、接口和生命周期常用类、接口和生命周期常用类、接口和生命周期常用类

41、、接口和生命周期8、ServletConfig和和ServletContext在在Servlet的初始化中,初始化方法使用的初始化中,初始化方法使用ServletConfig对象作为参数,这对象作为参数,这个方法中将保存这个对象,以便方法个方法中将保存这个对象,以便方法getServletConfig()返回该参数。并返回该参数。并且在该方法中重新编写且在该方法中重新编写getServletConfig()方法,以便能够从新的位置得方法,以便能够从新的位置得到该对象。到该对象。在下面的例子中,初始化方法就是调用在下面的例子中,初始化方法就是调用super.init(config)方法来管理安排

42、方法来管理安排ServletConfig对象的,代码如下:对象的,代码如下:publicvoidinit(ServletConfigconfig)throwsServletExceptionSuper.init(config);/初始化的操作初始化的操作在服务器上使用在服务器上使用Session对象来维持同单个客户相关的状态,而当为多个对象来维持同单个客户相关的状态,而当为多个用户的用户的Web应用维持一个状态时,则应使用应用维持一个状态时,则应使用Servlet环境环境(ServletContext)。ServletContext既可以用来为一个既可以用来为一个WEB应用定义从应用定义从UR

43、L到名称的映射,到名称的映射,也可以用来让也可以用来让Servlet在一个应用程序中访问所有客户的共享信息。在一个应用程序中访问所有客户的共享信息。Sevlet环境的状态信息保存在它的属性中。有三个环境的状态信息保存在它的属性中。有三个servletContext方法用于处理方法用于处理环境属性:环境属性:getAttribute、setAttribute和和removeAttribute。【例17-2】Servlet与表单交互的方法17.2.517.2.5ServletServlet应用举例应用举例应用举例应用举例表单是HTML中使用最广泛的传递信息的手段。搞清楚Servlet与表单的交互,

44、就在客户端与服务器之间架起了一座桥梁。Servlet使用HttpServlet类中的方法与表单进行交互。1)、静态HTML文本:information.htmlInputInformation请输入信息姓名:性别:男女       17.2.517.2.5ServletServlet应用举例应用举例应用举例应用举例2)、下面是处理表单的)、下面是处理表单的Servlet程序程序FormDeal:/FormDeal.javaimportjava.io.*;importjavax.servlet.*;importjavax.se

45、rvlet.http.*;publicclassFormDealextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException/处理GET请求的方法response.setContentType(text/html;charset=gb2312);request.setCharacterEncoding(GB2312);/先设置Header,在这里只设置ContentType一项PrintWriterout=res

46、ponse.getWriter();/得到文本输出WriterStringname=request.getParameter(Name);/得到表单值NameStringsex=request.getParameter(Sex);17.2.517.2.5ServletServlet应用举例应用举例应用举例应用举例/打印得到的表单值out.println();out.println();out.println();out.println(YourInfomation);out.println();out.println();out.println(DataYouPosted);out.print

47、ln();out.println();out.println(你的姓名:);out.println(+name+);out.println();out.println();out.println(你的性别:);out.print();17.2.517.2.5ServletServlet应用举例应用举例应用举例应用举例/打印得到的表单值if(sex.equals(1)out.println(男);elseout.println(女);out.println();out.println();out.println();out.println();out.close();/关闭Writer17.2.

48、517.2.5ServletServlet应用举例应用举例应用举例应用举例第第17章章Web服务器端编程服务器端编程17.1JavaWeb17.1JavaWeb服务器介绍服务器介绍服务器介绍服务器介绍17.217.2ServletServlet介绍介绍介绍介绍17.3JSP17.3JSP介绍介绍介绍介绍17.4Struts17.4Struts介绍介绍介绍介绍 17.3JSP介绍介绍17.3.1JSP17.3.1JSP的概念的概念的概念的概念17.3.217.3.2JSPJSP的运行方式的运行方式17.3.3JSP17.3.3JSP指令介绍指令介绍指令介绍指令介绍17.3.4JSP17.3.4J

49、SP中的隐藏对象中的隐藏对象中的隐藏对象中的隐藏对象17.3.5JSP17.3.5JSP应用举例举例应用举例举例应用举例举例应用举例举例 17.3.6JSP17.3.6JSP和和和和ServletServlet在实际工程中的应用在实际工程中的应用在实际工程中的应用在实际工程中的应用17.3.1JSP17.3.1JSP的概念的概念的概念的概念n nJSP(JavaJSP(JavaServerPages)ServerPages)是是SunMicrosystemsSunMicrosystems公司倡导、许多公司参与一起建立的一公司倡导、许多公司参与一起建立的一种动态网页技术标准。它在种动态网页技术标

50、准。它在HTMLHTML代码中,插入代码中,插入JSPJSP标记标记(tag)(tag)及及JavaJava程序片段程序片段(ScriptletScriptlet),),构成构成JSPJSP页面,其扩展名为页面,其扩展名为.jspjsp。当客户端请求。当客户端请求JSPJSP文件时,文件时,WebWeb服服务器执行该务器执行该JSPJSP文件,然后以文件,然后以HTMLHTML的格式返回给客户。前面已经提到过的格式返回给客户。前面已经提到过JSPJSP只是构只是构建在建在ServletServlet以及整个以及整个JavaJava体系的体系的WebWeb开发技术之上的高层次的动态网页标准,利用

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com