Servlet入门(一)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Servlet入门(一)
——传智播客学习笔记
1.什么是动态网页
●如果浏览器在不同时刻或不同条件下访问WEB服务器上的某个页面,浏览器所获得的页面内容可以发生变化,那么这个页面就称之为动页面。

●要想让浏览器访问某一WEB页面时,能够查询出一些动态变化的实时信息,例如,某日某次列车的车票剩余状况,浏览器在不同时刻所得到的WEB页面的内容必须随着车票的剩余状况进行变化,这就必须采用动态网页来实现。

●浏览器只关心如何显示和处理WEB服务器返回的内容,浏览器处理动态网页的方式与它处理静态网页的方式完全相同、并无差异。

●WEB服务器发送的静态内容直接来自于文本或数据文件,而动态内容需要依靠一个程序来临时产生。

2.动态网页程序与引擎
●动态网页内容的创建过程包含两个步骤:
首先使用某种编程语言编写出相应的动态网页程序;
然后由一个专门的WEB服务器程序模块来解释执行该动态网页程序。

●在动态网页程序的代码中可以完成各种程序逻辑控制、获取客户端传递的数据、对数据库进行操作、创建输出内容等功能,WEB程序开发就是使用某种编程语言来编写完成上述功能的动态网页程序。

●动态网页程序需要有一个专门的WEB服务器程序模块来解释执行,专门解释和执行某种动态网页程序的WEB服务器程序模块习惯上被称为引擎,譬如ASP引擎、Servlet引擎、JSP引擎等。

●只有引擎会与浏览器直接进行信息交换,动态网页程序不直接与浏览器进行信息交换,动态网页程序只与引擎进行信息交换,由引擎将浏览器的信息传递给动态网页程序和将动态网页程序生产的结果回送给浏览器。

●引擎提供的API有两个基本的作用:一些API用于将访问请求的相关信息传递给动态网页程序;另一些API将动态网页程序产生的结果传递给引擎。

●客户端向WEB服务器请求的URL资源路径,不仅可以指向服务器的一个静态HTML文件,还可以指向服务器端的某种可被解释运行的运行文件。

●如果客户端请求的URL后缀名符合某种引擎所处理的资源名的特征,WEB服务将把请求转交给相应的引擎去处理,然后由引擎去调用某个程序文件,并将程序动态产生的内容返回给客户端。

●动态网页程序文件中的代码不仅可以创建出用于返回给浏览器的动态变化内容,还可以实现对数据库的插入、修改、删除和查询等操作,从而让网站可实现论坛交流、产品订购、问卷调查、甚至是企业的整个管理信息系统等功能。

●目前有不少公司提供了动态网页的解决方案,称为服务器端的WEB编程技术,常见的技术有CGI、ISAPI、ASP、.NET、Servlet/JSP、PHP等,这些技术分别使用不同的编程语言。

3.Servlet技术简介
●Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的WEB服务器端编程技术。

●Servlet技术也是JSP技术的基础。

●一个Servlet程序就是一个实现了特殊接口的Java类,它由支持Servlet的WEB服务器调用和启动运行。

一个Servlet程序负责处理它所对应的一个或一组URL地址的访问请求,并接受客户端发出的访问请求信息和产生响应内容。

●Applet是用于浏览器的Java小程序,Servlet是用于WEB服务器端的Java小程序。

●Servlet程序可以完成普通Java程序所能完成的大多数任务:
获取客户端通过HTML的FORM表单递交的数据和URL后面的参数信息
创建对客户端的响应消息内容
访问服务器端的文件系统
连接数据库并开发基于数据库的应用
调用其他的JA V A类。

4.B/S系统架构与C/S系统架构
●企业信息管理软件系统的一个重要特点就是:要使用多台计算机作为操作终端,而系统的数据信息集中存放在网络上的数据库服务器中。

●在开发企业信息管理软件时,通常在两种系统架构之间进行选择,即C/S架构和B/S架构。

●C/S架构就是Client/Server的简写,就是客户机/服务器架构,它是早期出现的一种分布式架构。

●B/S架构是Brower/Server的简写,就是浏览器/服务器架构,它是随着Internet技术的兴起,对C/S架构的一种变化和改进的架构。

5.C/S系统架构的特点
●缺点:
数据库系统支持的并发连接数有限,限制了同时运行的客户端程序的数目。

业务逻辑处理和界面显示都是由客户端程序负责处理,一旦业务逻辑或者显示界面要发生变化,则需要对整个客户端程序进行修改,不利于软件的维护和功能扩展。

每个客户机上都要安装客户端程序,对于大一点的企业来说,如果客户端程序发生了修改,则需要系统管理人员到多台客户机上重新安装客户端程序。

●优点:
客户端程序就是计算机上的一个桌面程序,功能可以做得非常强大。

例如,在数据库服务器不可用时仍可以独立运行,可以将事务记录保存在本地桌面数据库中后再集中向数据库服务器提交,很容易对数据库中的数据进行实时监控和实现报警功能。

6.B/S系统架构的优点
●B/S架构将程序中的界面显示和业务逻辑处理都移动到了WEB服务器中来实现,其应用全部集中到了WEB服务器端,客户端只需要具有浏览器就可以作为B/S架构的操作终端,而不用安装和部署任何程序。

●B/S架构中的用户操作界面是由WEB服务器创建的,当要修改系统提供的用户操作界面时,只需要在WEB服务器端修改相应的网页文档,整个系统的更新部署不需要在客户机上进行任何操作和设置,在用户的不知不觉中就迅速完成,可以做到快速服务响应。

●客户端不直接与数据库建立连接,而是只有WEB服务器端的程序需要与数据库建立连接,所以数据库并发连接数量有限的问题也得到了解决。

●B/S架构应作为各类信息管理系统的首选体系架构,它基本上已全面取得了C/S架构。

7.Servlet API介绍
●Servlet API(Servlet Application Programming Interface)是SUN公司定义的一套专门用于开发Servlet 程序的Java类和接口。

●早期包装Servlet API的jar包被称之为JSDK(Java Servlet Development Kit),最新版本的Java Sevlet 开发工具包已经被集成到了SUN公司的Java EE(J2EE升级后的名称)开发工具包中。

●应结合Servlet API帮助文档来学习和应用Servlet API,边学边查。

必须了解HTTP协议和WEB服务器的内部运行方式,以及Servlet引擎的一些实现机制后,才能够在看懂
8.编写Servlet程序
●一个Servlet程序就是一个实现了javax.servlet.Servlet接口的Java类,Servlet接口定义了Servlet引擎与Servlet程序之间通信的协议约定。

●javax.servlet.GenericServlet类实现了Servlet接口,它实现了Servlet程序的基本特征和功能。

●javax.servlet.http.HttpServlet类是GenericServlet的子类,它在GenericServlet类的基础上进行了一些针对HTTP特点的扩充。

●客户端每次访问一个支持HTTP的Servlet程序时,Servlet引擎都将调用Servlet的service方法来进行处理。

service方法接受两个参数,一个是用于封装HTTP请求消息的对象,其类型为HttpServletRequest,是代表HTTP响应消息的对象,其类型为HttpServletResponse。

●调用HttpServletResponse对象的getWriter方法可以获得一个文本输出流对象,向这个流对象中写入的数据将作为HTTP响应消息的实体内容部分发送给客户端。

9.Servlet的注册与运行
●Servlet程序必须通过Servlet引擎来启动运行,并且储存目录有特殊要求,通常需要存储在<WEB应
用程序目录>\WEB-INF\classes\目录中。

●Servlet程序必须在WEB应用程序的web.xml文件中进行注册和映射其访问路径,才可以被Servlet 引擎加载和被外界访问。

●一个<servlet>元素用于注册一个Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。

●一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:<servlet-name>和<url-pattern>,分别用于指定Servlet的注册名和Servlet的对外访问路径。

10.Servlet映射的细节
●同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。

●在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是“*.扩展名”,另一种格式是以正斜杠( / )开头并以“/*”结尾。

11.Servlet映射的最具体匹配原则
对于如下的一些映射关系:
●/abc/* 映射到Servlet1
●/* 映射到Servlet2
●/abc 映射到Servlet3
●*.do 映射到Servlet4 (优先级最低)
将发生如下一些行为:
●当请求URL为“/abc/a.html”,“/abc/*”和“/*”都可以匹配这个URL,Servlet引擎将调用Servlet1。

●当请求URL为“/abc”时,“/abc/*”和“/abc”都可以匹配这个URL,Servlet引擎将调用Servlet3。

●当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都可以匹配这个URL,Servlet引擎将调用Servlet1。

●当请求URL为“/a.do”时,“/*”和“*.do”都可以匹配这个URL,Servlet引擎将调用Servlet2。

●当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都可以匹配这个URL,Servlet引擎将调用Servlet2。

12.注册和访问Servlet程序—>实践
●url地址是严格区分大小写的!!!
●映射url不能设置为“/action/*.xx”
●Servlet程序不能被设置为Web应用程序的目录默认网页文档。

13.Servlet激活器
●Tomcat的examples应用程序中的例子Servlet的访问路径:
http://localhost:8080/examples/servlet/<Servlet名称> (对于Tomcat 4.x版本)
●应用程序的web.xml文件中的设置:
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlets/* </url-pattern>
</servlet-mapping>
●conf\web.xml文件中的设置:
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
14.缺省Servlet
●如果某个Servlet的映射路径仅仅为一个正斜杠( / ),那么这个Servlet就成为当前Web应用程序的缺省Servlet。

●凡是在web.xml文件中找不到匹配的<servlet-mapping>元素的URL,它们的访问请求都将交给缺省Servlet处理,也就是说,缺省Servlet用于处理所有其他Servlet都不处理的访问请求。

●在<tomcat安装目录>\conf\web.xml文件中,注册了一个名为org.apache.catalina.servlets.DefaultServlet 的Servlet,并将这个Servlet设置为了缺省Servlet。

●当访问Tomcat服务器中某个静态HTML文件和图片时,实际上是在访问这个缺省Servlet。

而该缺省Servlet就是将原静态HTML文件和图片以字节原样读取并传送到客户端。

相关文档
最新文档