摘要:Servlet技术是我们java后端工程师必须掌握的,这里我们可以把java web技术路线可以大致归纳为如下过程: 因为tomcat实现了Servlet规范,所以我们得掌握什么是Servlet?什么是Servlet规范? 什么是Servlet呢? Servlet是JavaEE规范的一种,主要是为了扩展Java作...
Servlet技术是我们java后端工程师必须掌握的,这里我们可以把java web技术路线可以大致归纳为如下过程:
因为tomcat实现了Servlet规范,所以我们得掌握什么是Servlet?什么是Servlet规范?
什么是Servlet呢?
Servlet是JavaEE规范的一种,主要是为了扩展Java作为Web服务的功能,统一接口。由其他内部厂商如tomcat,jetty内部实现web的功能。如一个http请求到来:容器将请求封装为servlet中的HttpServletRequest对象,调用init(),service()等方法输出response,由容器包装为httpresponse返回给客户端的过程。
什么是Servlet规范?
从 Jar 包上来说,Servlet 规范就是两个 Jar 文件。servlet-api.jar 和 jsp-api.jar,Jsp 也是一种 Servlet。 从package上来说,就是 javax.servlet 和 javax.servlet.http 两个包。 从接口来说,就是规范了 Servlet 接口、Filter 接口、Listener 接口、ServletRequest 接口、ServletResponse 接口等。类图如下:为什么我们将tomcat称为Web容器或者Servlet容器 ?
我们用一张图来表示他们之间的关系:
简单的理解:启动一个ServerSocket,监听8080端口。Servlet容器用来装我们开发的Servlet。
tomcat架构介绍
tomcat架构图
架构图与tomcat中conf下面的server.xml中内容对比:
<?xml version="1.0" encoding="UTF-8"?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <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> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> <Context docBase="F:/workspace/my-web-maven/target" path="/" reloadable="true" /> <Context docBase="F:/workspace/my-web-maven/target" path="/tian" reloadable="true" /> </Host> </Engine> </Service> </Server>版权声明:除特别声明外,本站所有文章皆是来自互联网,转载请以超链接形式注明出处!