网站怎么在百度搜到,四方坪网站建设,做爰午夜福利全过程视频网站,顺德定制网站设计tomcat基本流程 tomcat在启动时将webapps下的每个项目中的web.xml读取#xff0c;获取相关信息。tomcat只关心Servlet 程序、Filter 过滤器、Listener 监听器#xff0c;不关心其他类。 tomcat接收到请求后会将请求报文转换成一个httpServletRequest对象#xff0c;包含请求…tomcat基本流程 tomcat在启动时将webapps下的每个项目中的web.xml读取获取相关信息。tomcat只关心Servlet 程序、Filter 过滤器、Listener 监听器不关心其他类。 tomcat接收到请求后会将请求报文转换成一个httpServletRequest对象包含请求所有信息 tomcat同时创建了一个httpServletResponse对象用于承装要响应给客户端的信息后面该对象会被转换成响应报文 tomcat根据请求资源路径找到对应的servlet将servlet实例化调用service方法同时将HttpServletRequest和HttpServletResponse对象传入
手写tomcat大致步骤 建立一个接收TCP请求的服务端ServerSocket。 如何处理连接处理阻塞 processSocket 如何处理多个请求while() 如何处理串行问题? 线程池 ExecutorService 如何处理连接 通过具体的连接socket对象获取数据 socket.getInputStream() 输出成字节可以看到获取的字节 解析字节流 了解HTTP协议的格式 按照格式去解析http协议、请求行、头、体 根据解析的内容构造得到request对象 request属性method构造方法、url、protocal协议版本 按servlet规范实现request和response 实现HttpServletRequest、HttpServletReponse接口 新建Servlet类继承HttpServlet socket.getOutputStream().write() tomcat结构和配置 结构图 配置文件解析 Server顶层元素是整个配置文件的根元素即服务器每个 tomcat 程序启动后就是一个 server。 className 使用的 java 类名 address服务器等待接收 shutdown 命令的地址默认 localhost port: 接收 shutdown 命令的端口设置为 - 1 为禁用关闭端口也就是你不能通过这种方式来关闭了这样就会影响你使用脚本 (catalina.sh 或者是 shutdown.sh) 来 stop 了默认绑定 8005 端口 shutdown: 指定 shutdown 命令的别名默认值 SHUTDOWN Listener 监听器不允许内嵌其他组件listener中定义的组件可以在某事件发生时执行相应的操作监听器可以在Server、Engine、Host或Context中如下代码定义的5个监听器都是在Server中。 VersionLoggerListener当Tomcat启动时该监听器记录Tomcat、Java和操作系统的信息。该监听器必须是配置的第一个监听器。 AprLifecycleListenerTomcat启动时检查APR库如果存在则加载。APR即Apache Portable Runtime是Apache可移植运行库可以实现高可扩展性、高性能以及与本地服务器技术更好的集成。 JreMemoryLeakPreventionListener与类加载器导致的内存泄露有关。 GlobalResourcesLifecycleListener通过该监听器初始化 GlobalNamingResources标签中定义的全局JNDI资源如果没有该监听器任何全局资源都不能使用。 ThreadLocalLeakPreventionListener当Web应用因thread-local导致的内存泄露而要停止时该监听器会触发线程池中线程的更新。当线程执行完任务被收回线程池时活跃线程会一个一个的更新。只有当Web应用(即Context元素)的renewThreadsWhenStoppingContext属性设置为true时该监听器才有效。 GlobalNamingResources 元素定义了全局资源如下配置可以看出该配置是通过读取$TOMCAT_HOME/ conf/tomcat-users.xml实现的。 ServiceTomcat服务器提供的服务通常包含一个或多个Connector连接器但只能有一个引擎engine。默认是 className: 要使用的 java 类名未指定的话就使用标准的实现 name: 显示的名称 tomcat默认的一个服务是Catalina Connector是Tomcat服务器与外部应用程序或客户端之间的连接常见的Connector类型包括HTTP、HTTPS、AJP等。 port指定Connector监听的端口号用于监听来自客户端的请求。 protocol连接器使用的协议指定Connector要使用的协议类型常见的有HTTP/1.1、HTTP/2、AJP/1.3等。 connectionTimeout指定超时的时间数以毫秒为单位即在指定时间内未收到客户端请求则连接被关闭。 redirectPort指定重定向端口即在使用HTTPS时自动将HTTP请求重定向到HTTPS。 maxParameterCount最大可以创建的处理请求的线程数。 Engine核心容器组件,catalina引擎负责通过connector接收用户请求并处理请求将请求转至对应的虚拟主机host。 defaultHost 指定缺省的处理请求的主机名它至少与其中的一个host元素的name属性值一样。 host在Tomcat中一个物理服务器可以部署多个虚拟主机每个虚拟主机拥有自己的域名和独立的配置这些虚拟主机通过Host元素来实现。 name虚拟主机的名称可以是域名和ip appBase指定该虚拟主机的Web应用程序的基础目录Web应用程序在该目录下部署。 unpackWARs是否在部署Web应用程序时解压WAR文件可以提高Web应用程序的访问速度。 autoDeploy是否自动部署新的Web应用程序如果设置为true则Tomcat会自动检测appBase目录下的新的Web应用程序并进行自动部署。 Context一个Context就是一个应用。 Context表示一个web应用程序通过为war文件。 docBase表示Web应用程序的根目录即Web应用程序的发布目录。应用程序的路径或者是WAR文件存放的路径,也可以使用相对路径起始路径为此Context所属Host中appBase定义的路径。 path表示Web应用程序的上下文路径即访问该Web应用程序的URL路径。 reloadable这个属性非常重要如果为true则tomcat会自动检测应用程序的/WEB-INF/lib和/WEB-INF/classes目录的变化自动装载新的应用程序可以在不重启tomcat的情况下改变应用程序。 crossContext用于指定不同的Web应用程序之间是否可以共享ServletContext对象。如果crossContext被设置为true则表示允许跨上下文共享ServletContext对象否则不允许。 Valve通过提供不同类型的阀门拦截请求并在将其转至对应的webapp前进行某种处理操作可以用于任何容器中比如记录日志(access log valve)、基于IP做访问控制(remote address filter valve)实现对Tomcat服务器的访问控制、流量控制、日志记录等功能。 ?xml version1.0 encodingUTF-8?
Server port8005 shutdownSHUTDOWNListener classNameorg.apache.catalina.startup.VersionLoggerListener /Listener classNameorg.apache.catalina.core.AprLifecycleListener SSLEngineon /Listener classNameorg.apache.catalina.core.JreMemoryLeakPreventionListener /Listener classNameorg.apache.catalina.mbeans.GlobalResourcesLifecycleListener /Listener classNameorg.apache.catalina.core.ThreadLocalLeakPreventionListener /GlobalNamingResourcesResource nameUserDatabase authContainer typeorg.apache.catalina.UserDatabasedescriptionUser database that can be updated and savedfactoryorg.apache.catalina.users.MemoryUserDatabaseFactorypathnameconf/tomcat-users.xml //GlobalNamingResourcesService nameCatalinaConnector port8080 protocolHTTP/1.1 connectionTimeout20000redirectPort8443 maxParameterCount1000 /Engine nameCatalina defaultHostlocalhostRealm classNameorg.apache.catalina.realm.LockOutRealmRealm classNameorg.apache.catalina.realm.UserDatabaseRealmresourceNameUserDatabase//RealmHost namelocalhost appBasewebappsunpackWARstrue autoDeploytrueValve classNameorg.apache.catalina.valves.AccessLogValve directorylogsprefixlocalhost_access_log suffix.txtpattern%h %l %u %t quot;%rquot; %s %b //Host/Engine/Service
/Server