SERVLETJSP.docx
- 文档编号:8700767
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:51
- 大小:360.17KB
SERVLETJSP.docx
《SERVLETJSP.docx》由会员分享,可在线阅读,更多相关《SERVLETJSP.docx(51页珍藏版)》请在冰豆网上搜索。
SERVLETJSP
SERVLET_JSP学习笔记
一servlet简介
1web服务器和动态网页技术
2tomcat安装和文件解释
tomcat启动与停止
startupshutdown
catalinastartcatalinastop
catalinadebug调试错误的时候
runexithelp
设置环境变量JAVA_HOME
shutdown.bat小心使用
tomcat目录结构
bin:
存放各种平台下启动和关闭Tomcat的脚本文件。
startup.bat是windows下启动tomcat的文件,
shutdown.bat是关闭tomcat的文件。
common:
在common目录下的lib目录,存放Tomcat服务器和所有web应用都能访问的JAR。
shared:
在shared目录下的lib目录,存放所有web应用能访问的,但Tomcat不能访问的JAR。
server:
在server/webapps目录中,存放Tomcat自带的两个APP-admin和manager应用,来管理Tomcat-web服务用的。
work:
Tomcat把各种由jsp生成的servlet文件放在这个目录下。
temp:
临时活页夹,Tomcat运行时候存放临时文件用的。
logs:
存放Tomcat的日志文件
webapps:
web应用的发布目录,把java开发的web站点或war文件放入这个目录下就可以通过tomcat服务器访问了。
conf:
Tomcat的各种配置文件,最重要的是server.xml.
Tomcat配置文件
conf/server.xml服务器的主配置文件
conf/web.xml定义所有Web应用的配置(缺省的Servlet定义和MIME类型定义)
conf/tomcat-user.xml定义了tomcat用户的信息(用于权限与安全)
conf/server.xml
顶层类元素:
位于整个配置文件的顶层,
连接器类元素[Connectors]:
客户和服务(容器类元素)间的通讯接口。
接受客户请求,返回响应结果;
容器类元素[Containers]:
处理客户请求并且生成响应结果,包含3个:
嵌套类元素[NestedComponents]:
可以加入到容器中的元素,包括:
一个
Pleasenotethatfortomcat5.x,unliketomcat4.x,itisNOTrecommendedtoplace
server.xml的层次结构
补充资料:
1Server
1.1IntheTomcatworld,aServerrepresentsthewholecontainer.TomcatprovidesadefaultimplementationoftheServerinterface.,andthisisrarelycustomizedbyusers.
1.2在tomcat的世界里,一个server代表整个容器.Tomcat提供了一个默认的org.apache.catalina接口的实现.用户很少修改这个默认的实现
2Service
1.3AServiceisanintermediatecomponentwhichlivesinsideaServerandtiesoneormoreConnectorstoexactlyoneEngine.TheServiceelementisrarelycustomizedbyusers,asthedefaultimplementationissimpleandsufficient:
Serviceinterface.
1.4一个Service是一个中间件,存在在一个Server的内部,将一个或者多个Connectors绑定到一个特定的Engine上.默认的实现已经足够用了.是org.apache.catalina.Service接口的一个实现.
A"Service"isacollectionofoneormore"Connectors"thatshareasingle"Container"
一个Service是一个或者多个Connectors的集合,这些个Connectors共享一个容器。
3Engine
1.5AnEnginerepresentsrequestprocessingpipelineforaspecificService.AsaServicemayhavemultipleConnectors,theEnginereceivedandprocessesallrequestsfromtheseconnectors,handingtheresponsebacktotheappropriateconnectorfortransmissiontotheclient.TheEngineinterfacemaybeimplementedtosupplycustomEngines,thoughthisisuncommon.
1.6一个Engine代表一个特定的Service的请求处理的管道.因为一个Service可以有多个Connectors,Engine接收并且处理从这些Connectors过来的所有的请求.并且将结果送回合适的connector并发送给客户端.
1.7可以实现org.apache.catalina.InterfaceEngine接口来提供定制的Engines,虽然一般不需要这样做.
1.8NotethattheEnginemaybeusedforTomcatserverclusteringviathejvmRouteparameter.ReadtheClusteringdocumentationformoreinformation.
4Host
1.9AHostisanassociationofanetworkname,e.g.,totheTomcatserver.AnEnginemaycontainmultiplehosts,andtheHostelementalsosupportsnetworkaliasessuchasand.UsersrarelycreatecustomHostsbecausetheStandardHostimplementationprovidessignificantadditionalfunctionality.
1.10一个Host将一个域名和tomcat联系起来.一个Engine可以包含多个hosts,并且一个Host还支持网络别名(例如或者).用户很少去实现一个org.apache.catalina.InterfaceHost接口,因为org.apache.catalina.core.StandardHost这个默认的实现已经提供了丰富的扩展功能了
5Connector
1.11AConnectorhandlescommunicationswiththeclient.TherearemultipleconnectorsavailablewithTomcat,allofwhichimplementtheConnectorinterface.TheseincludetheCoyoteconnectorwhichisusedformostHTTPtraffic,especiallywhenrunningTomcatasastandaloneserver,andtheJK2connectorwhichimplementstheAJPprocotolusedwhenconnectingTomcattoanApacheHTTPDserver.Creatingacustomizedconnectorisasignificanteffort.
1.12一个Connector处理和客户端的通信.tomcat有多个connectors.这些个connectors都实现了Connector接口.
1.13创建一个定制的connector是非常复杂的.
1.14AJP是为Tomcat与HTTP服务器之间通信而定制的协议,能提供较高的通信速度和效率。
在配置Tomcat与HTTP服务器集成中,读者可以不必关心AJP协议的细节。
关于AJP的知识也可以参考网址:
1.15Tomcat最主要的功能是提供Servlet/JSP容器,尽管它也可以作为独立的JavaWeb服务器,它在对静态资源(如HTML文件或图像文件)的处理速度,以及提供的Web服务器管理功能方面都不如其他专业的HTTP服务器,如IIS和Apache服务器。
1.16因此在实际应用中,常常把Tomcat与其他HTTP服务器集成。
对于不支持Servlet/JSP的HTTP服务器,可以通过Tomcat服务器来运行Servlet/JSP组件。
1.17当Tomcat与其他HTTP服务器集成时,Tomcat服务器的工作模式通常为进程外的Servlet容器,Tomcat服务器与其他HTTP服务器之间通过专门的插件来通信。
1.18Tomcat与HTTP服务器集成的原理:
Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户。
默认情况下,Tomcat在server.xml中配置了两种连接器:
●
●
1.19第一个连接器监听8080端口,负责建立HTTP连接。
在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。
1.20第二个连接器监听8009端口,负责和其他的HTTP服务器建立连接。
在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。
1.21Tomcat提供了专门的JK插件来负责Tomcat和HTTP服务器的通信。
应该把JK插件安置在对方的HTTP服务器上。
1.22对于不同的HTTP服务器,Tomcat提供了不同的JK插件的实现模块
●与Windows下的ApacheHTTP服务器集成:
mod_jk_2.0.46.dll
●与Linux(RedHet)下的ApacheHTTP服务器集成:
mod_jk.so-ap2.0.46-rh72..46-rh72
●与IIS服务器集成:
isapi_redirect.dll
1.23AJP是为Tomcat与HTTP服务器之间通信而定制的协议,能提供较高的通信速度和效率。
1.24关于AJP的知识也可以参考网址:
http:
//jakarta.apache.org/builds/jakarta-tomcat-connectors/jk2/doc/common/AJPv13.html
1.25如果两个Tomcat服务器都在同一台机器上运行,则至少应该对其中一个Tomcat服务器的以上3个端口号都进行修改。
6Context
1.26AContextrepresentsawebapplication.AHostmaycontainmultiplecontexts,eachwithauniquepath.TheContextinterfacemaybeimplementedtocreatecustomContexts,butthisisrarelythecasebecausetheStandardContextprovidessignificantadditionalfunctionality.
1.27一个Context代表一个web应用程序。
一个Host可以包含多个contexts。
每一个有不同的访问地址。
1.28可以实现Context接口来创建自己的Contexts。
但很少这样用,因为StandardContext已经提供了丰富的额外的功能
二HTTP协议
补充资料:
HTTP1.1与HTTP1.0的比较
一个WEB站点每天可能要接收到上百万的用户请求,为了提高系统的效率,HTTP1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。
但是,这也造成了一些性能上的缺陷,例如,一个包含有许多图像的网页文件中并没有包含真正的图像数据内容,而只是指明了这些图像的URL地址,当WEB浏览器访问这个网页文件时,浏览器首先要发出针对该网页文件的请求,当浏览器解析WEB服务器返回的该网页文档中的HTML内容时,发现其中的图像标签后,浏览器将根据标签中的src属性所指定的URL地址再次向服务器发出下载图像数据的请求,如图3.3所示。
图3.3
显然,访问一个包含有许多图像的网页文件的整个过程包含了多次请求和响应,每次请求和响应都需要建立一个单独的连接,每次连接只是传输一个文档和图像,上一次和下一次请求完全分离。
即使图像文件都很小,但是客户端和服务器端每次建立和关闭连接却是一个相对比较费时的过程,并且会严重影响客户机和服务器的性能。
当一个网页文件中包含Applet,JavaScript文件,CSS文件等内容时,也会出现类似上述的情况。
为了克服HTTP1.0的这个缺陷,HTTP1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。
HTTP1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。
基于HTTP1.1协议的客户机与服务器的信息交换过程,如图3.4所示。
图3.4
可见,HTTP1.1在继承了HTTP1.0优点的基础上,也克服了HTTP1.0的性能问题。
不仅如此,HTTP1.1还通过增加更多的请求头和响应头来改进和扩充HTTP1.0的功能。
例如,由于HTTP1.0不支持Host请求头字段,WEB浏览器无法使用主机头名来明确表示要访问服务器上的哪个WEB站点,这样就无法使用WEB服务器在同一个IP地址和端口号上配置多个虚拟WEB站点。
在HTTP1.1中增加Host请求头字段后,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,这才实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。
HTTP1.1的持续连接,也需要增加新的请求头来帮助实现,例如,Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。
HTTP1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。
《深入体验JavaWeb开发内幕——核心基础》
HTTP协议老的标准是HTTP/1.0,目前最通用的标准是HTTP/1.1。
HTTP/1.1是在HTTP/1.0基础上的升级,增加了一些功能,全面兼容HTTP/1.0。
HTTP/1.0不支持文件断点续传,目前的Web服务器绝大多数都采用了HTTP/1.1。
RANGE:
bytes是HTTP/1.1新增内容,HTTP/1.0每次传送文件都是从文件头开始,即0字节处开始。
RANGE:
bytes=XXXX表示要求服务器从文件XXXX字节处开始传送,这就是我们平时所说的断点续传!
原文英文版
RFC1945-HypertextTransferProtocol--HTTP/1.0
http:
//www.w3.org/Protocols/rfc1945/rfc1945
http:
//www.faqs.org/rfcs/rfc1945.html
RFC2616-HypertextTransferProtocol--HTTP/1.1
http:
//www.w3.org/Protocols/rfc2616/rfc2616
http:
//www.w3.org/Protocols/rfc2616/rfc2616.html
http:
//www.faqs.org/rfcs/rfc2616.html
(Proposed)HTTP-NGWorkingGroup
http:
//www.w3.org/Protocols/HTTP-NG/
下一代超文本传输协议(HTTP-NG),为了克服当前HTTP协议的缺点,W3C(WorldWideWebconsortium)开始研究制定下一代HTTP协议?
TTP-NG。
它分三个层次:
应用层、消息层、传输层。
现有WEB上应用将转换到HTTP-NG平台上,最后整个平台都会更新为HTTP-NG。
RFC1945-HypertextTransferProtocol--HTTP/1.0中文版
RFC2616-HypertextTransferProtocol--HTTP/1.1中文版
1.0与1.1的区别,英文版
KeyDifferencesbetweenHTTP/1.0andHTTP/1.1
中文翻译版没有看到,有看到的告诉我:
)
附上:
HTTP1.1状态代码及其含义
状态代码 状态信息 含义
100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。
(HTTP1.1新)
101 SwitchingProtocols 服务器将遵从客户的请求转换到另外一种协议(HTTP1.1新)
200 OK 一切正常,对GET和POST请求的应答文档跟在后面。
201 Created 服务器已经创建了文档,Location头给出了它的URL。
202 Accepted 已经接受请求,但处理尚未完成。
203 Non-AuthoritativeInformation 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝(HTTP1.1新)。
204 NoContent 没有新文档,浏览器应该继续显示原来的文档。
如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
205 ResetContent 没有新的内容,但浏览器应该重置它所显示的内容。
用来强制浏览器清除表单输入内容(HTTP1.1新)。
206 PartialContent 客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP1.1新)。
300 MultipleChoices 客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。
如果服务器要提出优先选择,则应该在Location应答头指明。
301 MovedPermanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
302 Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。
注意,在HTTP1.0中对应的状态信息是“MovedTemporatily”。
出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。
注意这个状态代码有时候可以和301替换使用。
例如,如果浏览器错误地请求http:
//host/~user(缺少了后面的斜杠),有的服务器返回301,有的则返回302。
严格地说,我们只能假定只有当原来的请求是GET时浏览器才会自动重定向。
请参见307。
303 SeeOther 类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取(HTTP1.1新)。
304 NotModified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。
服务器告诉客户,原来缓冲的文档还可以继续使用。
305 UseProxy 客户请求的文档应该通过Location头所指明的代理服务器提取(HTTP1.1新)。
307 TemporaryRedirect 和302(Found)相同。
许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时才能重定向。
由于这个原因,HTTP1.1新增了307,以便更加清除地区分几个状态代码:
当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SERVLETJSP