MVC框架技术实现学员教材.docx

上传人:b****4 文档编号:6306690 上传时间:2023-05-09 格式:DOCX 页数:36 大小:129.83KB
下载 相关 举报
MVC框架技术实现学员教材.docx_第1页
第1页 / 共36页
MVC框架技术实现学员教材.docx_第2页
第2页 / 共36页
MVC框架技术实现学员教材.docx_第3页
第3页 / 共36页
MVC框架技术实现学员教材.docx_第4页
第4页 / 共36页
MVC框架技术实现学员教材.docx_第5页
第5页 / 共36页
MVC框架技术实现学员教材.docx_第6页
第6页 / 共36页
MVC框架技术实现学员教材.docx_第7页
第7页 / 共36页
MVC框架技术实现学员教材.docx_第8页
第8页 / 共36页
MVC框架技术实现学员教材.docx_第9页
第9页 / 共36页
MVC框架技术实现学员教材.docx_第10页
第10页 / 共36页
MVC框架技术实现学员教材.docx_第11页
第11页 / 共36页
MVC框架技术实现学员教材.docx_第12页
第12页 / 共36页
MVC框架技术实现学员教材.docx_第13页
第13页 / 共36页
MVC框架技术实现学员教材.docx_第14页
第14页 / 共36页
MVC框架技术实现学员教材.docx_第15页
第15页 / 共36页
MVC框架技术实现学员教材.docx_第16页
第16页 / 共36页
MVC框架技术实现学员教材.docx_第17页
第17页 / 共36页
MVC框架技术实现学员教材.docx_第18页
第18页 / 共36页
MVC框架技术实现学员教材.docx_第19页
第19页 / 共36页
MVC框架技术实现学员教材.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

MVC框架技术实现学员教材.docx

《MVC框架技术实现学员教材.docx》由会员分享,可在线阅读,更多相关《MVC框架技术实现学员教材.docx(36页珍藏版)》请在冰点文库上搜索。

MVC框架技术实现学员教材.docx

MVC框架技术实现学员教材

第一章Servlet

第一节JavaServlet概述

1、什么是Servlet

Servlet是标准的服务器端Java应用程序,它扩展了Web服务器的功能。

Servlet运行在一个Java环境中,即Java虚拟机,或JVM。

servlet将被载入到一个应用服务器中,例如WebSphere(tm)ApplicationServer。

由于Servlet是由一个用户的请求来调用,Servlet对应一个Web站点单一URL的系统响应。

一个企业级Web站点可能对一个请求就有多个Servlet,例如注册、购物和支付。

由于Servlet运行在服务器环境中,用户永远不会直接看到它们而且Servlet不需要图形的用户界面。

Servlet是Java组件,可以在系统需要它们时被载入。

使用Servlet生成的动态文本,比CGI脚本更容易,且运行效率更高,是CGI脚本的高效替代品。

ServletAPI的最大一个优点是协议的独立性,它不假定网络传输使用的协议、Servlet如何装载以及运行的服务器环境,这些特性使得ServletAPI可以方便的嵌入到许多不同种类的服务器中。

另外,它还具有可扩展、简单、短小、容易使用的特点。

2、Servlet的用途

一个简单的Servlet可以处理使用HTMLFORM在HTTP(S)上使用POST传递的数据,例如:

一个带有信用卡数据的定单。

复杂的Servlet可以用于实现定单输入和处理系统、生产及库存数据库、或者一个复杂的联机支付系统。

一个Servlet可以将请求传递给另一个服务器,这项技术在多个服务器中可以用来平衡装载相同的镜像内容。

或者,可以用于将一个逻辑服务划分给几个服务器,按照任务类型或组织的边界路由请求,实现负载均衡。

3、API的有效性

JavaServletAPI是一个标准的Java扩展API。

在J2EE中,它已经发展成为Java核心框架的一部分。

JavaSoft提供了一个包,可以用于在其他服务器中嵌入Servlet。

4、ServletAPI的特性

ServletAPI已经被大多数基于Java的Web服务器支持,因此,当使用ServletAPI时,可以继承Java的许多优点:

不但代码不存在内存漏洞和难以发现的指针bug,而且还可以运行在许多不同服务器提供商的平台上。

主要功能

Servlet采用常见的接受请求和生成响应的编程模型,该模型使用了一系列的分布式系统编程工具箱,这包括从远程过程调用到向Web服务器发出HTTP请求等。

Servlet编程非常简单,主要就是实现一个Servlet接口,例如:

PublicclassMyServletextendsGenericServlet

{

Publicvoidservice(ServletRequestrequest,ServletResponseresponse)

throwsServletException,IOException

{

……

}

}

Service方法内可以操作request和response参数,这里封装了客户机发送的数据,提供了对参数的访问,并允许Servlet报告各种状态。

通常Servlet通过输入流得到大多数参数,并使用输出流发送它们的响应。

ServletInputStreamin=request.getInputStream();

ServletOutputStreamout=request.getOutputStream();

环境状态

由于Servlet是一种Java对象,它们由特定的实例数据组成,这意味着正在执行的Servlet是运行在服务器内部的独立的应用程序。

在初始化期间,Servlet访问一些特定的Servlet配置数据,这允许相同Servlet类的不同实例可以用不同的数据来初始化,并当作不同名字的Servlet来管理。

在初始化期间提供的数据中,包括了每个实例将在哪里保存它们自己的状态。

Servlet还可以利用ServletContext对象与它们自己的环境进行交互。

使用模式

Servlet可以使用下面几种模式,然而,不是所有服务器环境都支持以下所有这些模式:

●基本的模式:

以请求/响应协议为核心。

●服务器可以用过滤链链接多个Servlet。

●Servlet可以支持特定的协议,例如HTTP。

●在基于HTTP的应用程序中,Servlet是一个基于CGI扩展的完全的替代品。

●在基于HTTP的应用程序中,Servlet还可以作为HTML的服务器端来包含动态的生成的Web文档。

主要方法

Servlet装载之后,其生命周期涉及三个主要方法:

◆init方法

Servlet通过调用init方法被服务器激活,如果开发者需要,可以执行一些内在的设置,这样,无需每个请求都设置一次。

◆service方法

当初始化后,Servlet处理许多请求,为每一个客户请求生成一个service调用,这些请求可能是并行的,这允许Servlet调整多个客户的行为,类的静态属性可以用于在请求中共享数据。

◆destroy方法

Servlet对象将一直处理请求,除非服务器调用destroy方法显示的关闭Servlet,Servlet类还是一个合格的垃圾收集器。

安全特性

与当前任何其他的服务器扩展API不同,JavaServlet提供了强大的安全策略支持。

这是因为所有的Java环境都提供了一个安全管理器,可以用于控制是否允许执行某项操作,例如网络或文件的访问。

缺省的,通过网络装载的所有Servlet都是不可信的,它不允许执行诸如访问网络服务或本地文件的操作。

仅仅在JavaWebServer中创建的,或者在本地由服务器管理员控制的…/Servlet目录的Servlet,才是完全可信的,并赋予所有的权限。

性能特性

Servlet最突出的特性之一就是对于每一个请求不需要象CGI那样单独创建一个新的进程。

在大多数环境中,许多Servlet可以并行运行在与服务器相同的进程中,处理许多已初始化的客户请求,这些初始化的开销由许多方法分担,对于该service方法所面对的所有客户请求,它们都有机会共享数据和通讯资源,并充分利用系统缓存。

Servlet的生命周期

Servlet部署在容器里,它的生命周期由容器管理。

Servlet的生命周期概括为以下几个阶段:

◆装载Servlet:

这项操作一般是动态执行的。

有些服务器提供了相应的管理功能,可以在启动的时候就装载Servlet并能够初始化特定的Servlet。

◆创建一个Servlet实例。

◆调用Servlet的init()方法。

◆服务:

如果容器接收到对此Servlet的请求,那么它将调用Servet的service()方法。

◆销毁:

实例被销毁,通过调用Servlet的destroy()方法来销毁Servlet。

在几个阶段中,对外提供服务是最重要的阶段,service()方法是我们最关心的方法,因为它才是真正处理业务的方法。

Servlet为客户端提供服务,如下图所示:

第二节Servlet编程示例

在进行具体Servlet编程之前,这里,先举一个最简单的Servlet程序,熟悉一下Servlet的结构。

源程序:

HelloWorld.java

packagecom.iss.test;

importjava.io.*

importjavax.servlet.*;

importjavax.servlet.http.*;

publicclassHelloWorldServletextendsHttpServlet

{

//Initializeglobalvariables

publicvoidinit()

throwsServletException

{

}

//ProcesstheHTTPGetrequest

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException

{

response.setContentType("text/html;charset=gb2312");

PrintWriterout=response.getWriter();

out.println(“”);

out.println(“”);

out.println(“HelloWorld”);

out.println(“”);

out.println(“”);

out.println(“Hello,World!

”);

out.println(“”);

out.println(“”);

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

  throwsServletException,IOException

{

  doGet(request,response);

  }

//Cleanupresources

publicvoiddestroy()

{

}

}

编译

使用任何一种编译工具,编译为class文件。

比如jdk自带的javac命令:

JavacHelloWorld.java

打包

使用任何一种打包工具,打成可发布的jar包或web组件包。

部署

将打包好的程序发布到任何支持Servlet容器的服务器上去。

这个servlet对应的部署描述符如下:

(位于WEB-INF下的web.xml中)

xmlversion=”1.0”encoding=”ISO-8859-1”?

>

xmlns:

xsi=”http:

//www.w3.org/2001/XMLSchema-instance”

xsi:

schemaLocation=”web-app_2_4.xsd”

version=”2.4”>

WelcometoTomcat

HelloWorldServlet

HelloWorldServlet

com.iss.test.HelloWorldServet

HelloWorldServlet

/hello

运行

从客户端访问服务器上的应用,比如通过浏览器访问,服务器给客户端返回“Hello,world!

”的信息。

第三节Servlet相关类和接口

HttpServlet类

一个抽象类,可以从该类派生出一个子类来实现一个HttpServlet,接受来自Web站点的请求,并将处理后的响应结果发回Web站点。

在HttpServlet的子类中,必须至少重载下表中所列的其中一种方法。

HttpServlet子类通常重载的方法

方法名

用途

doGet

如果Servlet支持HTTPGET请求,用于HTTPGET请求

doPost

如果Servlet支持HTTPPOST请求,用于HTTPPOST请求

doPut

如果Servlet支持HTTPPUT请求,用于HTTPPUT请求

doDelete

如果Servlet支持HTTPDELETE请求,用于HTTPDELETE请求

init和destroy

如果需要管理Servlet生命周期内所持有资源,可以重载这两个方法

通常,不重载service方法,对于上表中的每一种HTTP请求,service方法通过分派它们到相应的Handle线程(doXXX方法)来处理这些标准的HTTP请求。

通常也不重载doOptions和doTrace方法,service方法通过分派它们到doTrace和doOptions来支持HTTP1.1TRACE和OPTIONS。

Servlet通常运行在多线程的服务器中,因此,所编写的Servlet代码必须能够处理并行请求和对数据资源的同步访问。

doGet

protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)

throwsServletException,IOException

用于获取服务器信息,并将其作为响应返回给客户端。

当经由web浏览器,或者通过HTML、Jsp直接访问Servlet的URL时,一般使用Get调用。

doPost

protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)

throwsServletException,IOException

用于客户端把数据传送到服务器端。

使用它的好处是可以隐藏发送给服务器的任何数据。

适合于发送大量的数据。

doPut

protectedvoiddoPut(HttpServletRequestreq,HttpServletResponseresp)

throwsServletException,IOException

Put的调用和Post相似,它允许客户端把真正的文件存放在服务器上,而不仅仅是传送数据。

doDelete

protectedvoiddoDelete(HttpServletRequestreq,HttpServletResponseresp)

throwsServletException,IOException

它的调用和Post相似,它允许客户端删除服务器端的文件或者web页面。

doTrace

protectedvoiddoTrace(HttpServletRequestreq,HttpServletResponseresp)

throwsServletException,IOException

由容器调用以使此Servlet能够处理Trace请求。

这个方法主要用于测试,它是不可以覆盖的方法。

doHead

protectedvoiddoHead(HttpServletRequestreq,HttpServletResponseresp)

throwsServletException,IOException

它用于处理客户端的Head调用,并且返回一个response。

当客户端只需要知道响应的Header时,它就发出一个Header请求。

doOptions

protectedvoiddoOptions(HttpServletRequestreq,HttpServletResponseresp)

throwsServletException,IOException

它用于处理客户端的Options调用,通过这个调用,客户端可以获得此Servlet支持的方法。

HttpServletRequest接口

该接口扩展了javax.servlet.servletRequest接口,用于提供更多的功能给HttpServlet。

Servlet引擎实现该接口,创建HttpServletRequest对象,将来自客户浏览器的信息传递给HttpServlet的service方法。

getDateHeader

publiclonggetDateHeader(Stringname)

得到一个特定请求的header的、描述Date对象的长整形值。

Header是大小写敏感的。

如果请求中没有该name的header,则方法返回-1,如果方法不能转换日期,则抛IllegalArgumentException异常。

getHeader

publicStringgetHeader(Stringname)

得到有关请求header的值,为一个字符串,如果指定名字的header没有随请求一起发送,该方法返回null,name是大小写敏感的。

getCookies

publicCookie[]getCookies()

得到一个Cookie对象数组,含有所有发送请求的浏览器的Cookie,如果浏览器没有发送任何Cookie,则返回null。

getHeaderNames

publicEnumerationgetHeaderNames()

得到请求中的所有header名。

getRequestURI

publicStringgetRequestURI()

得到HTTP请求的第一行中从协议名到查询字符串之间的URL部分。

getSession

publicHttpSessiongetSession(Booleancreate)

publicHttpSessiongetSession()

得到与请求相联系的当前HttpSession,如果需要,则为请求创建一个新的任务。

HttpServletResponse接口

该接口扩展了OutputStream类,因此,可以使用OutputStream类中声明的方法,例如,getOutputStream()方法。

addCookie

publicvoidaddCookie(Cookiecookie)

增加指定的cookie到响应。

setHeader

publicvoidsetHeader(Stringname,Stringvalue)

使用给定的名字和值设置响应头。

ServletConfig接口

该接口定义了一个Servlet配置对象,Servlet引擎可以用来传递信息给Servlet以便初始化Servlet。

配置信息含有初始化参数,这些参数以“名字/值”的形式成对出现,描述关于服务器的Servlet信息。

getServletContext

publicServletContextgetServletContext()

得到服务器传递给Servlet的一个ServletContext对象。

getInitParameter

publicStringgetInitParameter(Stringname)

得到一个含有参数name指定的初始化参数的值,如果参数不存在则为null。

getInitParameterNames

publicEnumerationgetInitParameterNames()

得到Servlet的初始化参数的名字,返回值是一个Enumeration对象。

ServletContext接口

该接口定义了一套Servlet与Servlet引擎通信的方法,例如:

得到MIME类型的文件、确定运行在服务器上的其他Servlet或写Servlet日志文件。

Servlet引擎通过返回一个ServetContext对象来与Servlet交流,Servlet使用ServletConfig接口的getServletContext方法得到ServletContext对象。

getContext

publicServletContextgetContext(Stringuripath)

得到服务器上特定URL的一个ServletContext对象,该方法允许Servlet访问特定URL上的资源,并得到来自该URL的RequestDispatcher对象。

getMimeType

publicStringgetMimeType(Stringfile)

得到指定文件的MIME类型,如果不知道MIMI类型则为null。

MIMI类型由Servlet引擎的配置决定,MIME类通常为“text/html”和“image/gif”。

getRealPath

publicStringgetRealPath(Stringpath)

得到参数path中对应于虚拟路径的真实路径。

虚拟路径含有一个Servlet名,后跟Servlet文件名。

getServerInfo

publicStringgetServerInfo()

得到正在允许的Servlet引擎的名字和版本。

getAttribute

publicObjectgetAttribute(Stringname)

得到Servlet引擎的参数name所指定的属性。

getAttributeNames

publicEnumerationgetAttributeNames()

得到一个含有属性名的Enumeration对象,这些属性在Servlet上下文中有效。

setAttribute

publicvoidsetAttribute(Stringname,Objectobject)

设置Servlet上下文中属性的名字,如果指定的名字name已使用,该方法将覆盖老的名字,并将名字捆绑到新的属性中。

removeAttribute

publicvoidremoveAttribute(Stringname)

从Servlet上下文中移走给定名字name的属性名。

ServletInputStream类

该类是一个抽象类,它提供了从客户机请求读取二进制数据的一个输入流,对于一些协议,例如HTTPPOST和PUT,可以使用ServletInputStream对象读取和发送数据。

readLine

publicintreadLine(byte[]b,intoff,intlen)throwsIOException

读输入流,一次一行。

如果读到输入流的尾部,则返回-1。

ServletOutputStream类

该类是一个抽象类,它提供了一个输入流,用于向客户机发送数据。

print

publicvoidprint(Strings)throwsIOException

publicvoidprint(booleanb)throwsIOException

publicvoidprint(charc)throwsIOException

publicvoidprint(inti)throwsIOException

publicvoidprint(longl)throwsIOException

publicvoidpr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2