Servlet是什么
为了能让Web服务器与Web应用这两个不同的软件系统协作,需要一套标准接口,Servlet就是其中最主要的一个接口。
规定:
Web服务器可以访问任意一个Web应用中实现Servlet接口的类。
Web应用中用于被Web服务器动态调用的程序代码位于Servlet接口的实现类中。
SUN公司(现在被Oracle收购了……)制定了Web应用于Web服务器进行协作的一系列标准Java接口(统称为Java Servlet API)。
SUN公司还对Web服务器发布及运行Web应用的一些细节做了规约。SUN公司把这一系列标准Java接口和规约统称为Servlet规范。
Servlet是一种运行在服务器上的小插件。
Servlet容器是什么
在Servlet规范中,把能够发布和运行JavaWeb应用的Web服务器称为Servlet容器,他的最主要特称是动态执行JavaWeb应用中的Servlet实现类中的程序代码。
Tomcat是什么
Tomcat是Servlet容器,同时也是轻量级的Web服务器。
Apache Server、Microsoft IIS、Apache Tomcat都是Web服务器。
Tomcat作为Web服务器时,主要负责实现HTTP传输等工作。
Tomcat作为Servlet容器时,主要负责解析Request,生成ServletRequest、ServletResponse,将其传给相应的Servlet(调用service( )方法),再将Servlet的相应结果返回。
Tomcat组成结构
Server,代表整个Servlet容器组件,是Tomcat的顶层元素。其中可以包含一到多个Service;
Service,包含一个Engine,以及一到多个Connector;
Connector,代表和客户端程序实际交互的组件,负责接收客户请求,以及向客户返回响应结果;
Engine,处理同一个Service中所有Connector接收到的客户请求;
Host,在Engine中可以包含多个Host,每个Host定义了一个虚拟主机,它可以包含一个到多个Web应用;
Context,一个Host中可以包含多个Context,每个Context代表了运行在虚拟主机上的单个Web应用。
这些字段都在conf/server.xml中配置,下面是一段apache tomcat 6.0.36默认的server.xml:
<?xml version='1.0' encoding='utf-8'?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- Note: A "Server" is not itself a "Container", so you may not define subcomponents such as "Valves" at this level. Documentation at /docs/config/server.html --> <Server port="8005" shutdown="SHUTDOWN"> <!--APR library loader. Documentation at /docs/apr.html --> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html --> <Listener className="org.apache.catalina.core.JasperListener" /> <!-- Prevent memory leaks due to use of particular java/javax APIs--> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html --> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <!-- Global JNDI resources Documentation at /docs/jndi-resources-howtohtml --> <GlobalNamingResources> <!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users --> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <!-- A "Service" is a collection of one or more "Connectors" that share a single "Container" Note: A "Service" is not itself a "Container", so you may not define subcomponents such as "Valves" at this level. Documentation at /docs/config/service.html --> <Service name="Catalina"> <!--The connectors can use a shared executor, you can define one or more named thread pools--> <!-- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/> --> <!-- A "Connector" represents an endpoint by which requests are received and responses are returned. Documentation at : Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) Java AJP Connector: /docs/config/ajp.html APR (HTTP/AJP) Connector: /docs/apr.html Define a non-SSL HTTP/1 Connector on port 8080 --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <!-- A "Connector" using the shared thread pool--> <!-- <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --> <!-- Define a SSL HTTP/1.1 Connector on port 8443 This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration described in the APR documentation --> <!-- <Connector port="8443" protocol="HTTP/1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> --> <!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <!-- An Engine represents the entry point (within Catalina) that processes every request The Engine implementation for Tomcat stand alone analyzes the HTTP headers included with the request, and passes them on to the appropriate Host (virtual host). Documentation at /docs/config/engine.html --> <!-- You should set jvmRoute to support load-balancing via AJP ie : <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> --> <Engine name="Catalina" defaultHost="localhost"> <!--For clustering, please take a look at documentation at: /docs/cluster-howto.html (simple how to) /docs/config/cluster.html (reference documentation) --> <!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> --> <!-- The request dumper valve dumps useful debugging information about the request and response data received and sent by Tomcat. Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.valves.RequestDumperValve"/> --> <!-- This Realm uses the UserDatabase configured in the global JNDI resources under the key "UserDatabase". Any edits that are performed against this UserDatabase are immediately available for use by the Realm. --> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> <!-- Define the default virtual host Note: XML Schema validation will not work with Xerces 2.2. --> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> --> </Host> </Engine> </Service> </Server>
本文向大家介绍Myeclipse部署Tomcat_动力节点Java学院整理,包括了Myeclipse部署Tomcat_动力节点Java学院整理的使用技巧和注意事项,需要的朋友参考一下 在MyEclipse中,新建“Web Project”,会看到: 我们需要注意的有以下几点: 【Project Name】:工程名,代表了这个web应用所在目录名,当在服务器中发布这个web应用时,在To
本文向大家介绍servlet简介_动力节点Java学院整理,包括了servlet简介_动力节点Java学院整理的使用技巧和注意事项,需要的朋友参考一下 Servlet是一种服务器端的编程语言,是J2EE中比较关键的组成部分(其实学到现在J2EE里面的13个标准才接触了3个,他们分别是EJB,Servlet,JSP),Servlet技术的推出扩展了Java语言在服务器端开发的功能,巩固了Java语言
本文向大家介绍servlet之session简介_动力节点Java学院整理,包括了servlet之session简介_动力节点Java学院整理的使用技巧和注意事项,需要的朋友参考一下 Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,注意是默认情况下,一个浏览器独占一个session,由于session为用户浏览器独享,所以用户在
本文向大家介绍servlet生命周期_动力节点Java学院整理,包括了servlet生命周期_动力节点Java学院整理的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了servlet生命周期的相关资料,供大家参考,具体内容如下 1.Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。 2.init():在Servlet的生命周期中,仅执行一次init()方
本文向大家介绍servlet之cookie简介_动力节点Java学院整理,包括了servlet之cookie简介_动力节点Java学院整理的使用技巧和注意事项,需要的朋友参考一下 首先来了解什么是“会话”。会话是web技术中的一个术语,可以简单的理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,这个过程称为一个会话。 如果在打开一个浏览器访问一个页面后,
本文向大家介绍Java死锁_动力节点Java学院整理,包括了Java死锁_动力节点Java学院整理的使用技巧和注意事项,需要的朋友参考一下 死锁是两个甚至多个线程被永久阻塞时的一种运行局面,这种局面的生成伴随着至少两个线程和两个或者多个资源。在这里我已写好一个简单的程序,它将会引起死锁方案然后我们就会明白如何分析它。 Java死锁范例 ThreadDeadlock.java 在上面的程序中同步线程