使用Tomcat搭建一个Servlet项目

Tomcat

Tomcat是一个HTTP服务器,在TCP服务器的基础上加了一些额外的功能,能够解析请求中的HTTP报文,把请求转换成结构化数据(对象),也能很方便的构造HTTP响应。HTTP服务器提供了一组API,方便程序员直接调用来操作HTTP协议,从而简化程序员的开发工程。servlet程序是一个war后缀的文件,tomcat会自动把war解压缩得到一个目录,每个war其实就对应了一个webapp,一个Tomcat可以部署多个servlet程序,所以可以把Tomcat称为“servlet的容器”。

maven

maven是java世界中非常知名的“工程管理工具”/“构建工具”,核心功能:管理依赖,构建/编译,打包。maven存在的意义就是能够直接把这些操作串起来,一气呵成。

  • 依赖:进行A操作前,先执行B操作
  • 构建/编译:调用jdk
  • 打包:把java代码构造成jar或者war

使用

创建maven项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

管理依赖

在这里插入图片描述
在这里插入图片描述

实践

完成一个servlet的hello world
1.创建一个maven项目
2.引入依赖
需要在代码中引入servlet api,这个api不是jdk内住的,而是第三方tomcat提供的,借助Maven直接引入。
在这里插入图片描述

3.创建目录结构
在这里插入图片描述
在这里插入图片描述

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

4.编写servlet代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.打包和部署
使用smart tomcat插件

6.验证程序
在这里插入图片描述

可以这样认为:
一个Tomcat上可以同时部署多个网站,一个网站上又有多个页面,一个请求中的第一级路径用于告诉tomcat要访问的网站是哪个,第二级路径告诉tomcat要访问的页面是这个网站的那个页面。

使用总结

在这里插入图片描述

GET,POST请求应用场景

啥时候浏览器发的是GET请求?

  1. 直接在地址栏里输入URL
  2. 通过a标签跳转
  3. 通过img/link/script
  4. 通过form表单,method指定为GET
  5. 通过ajax,type指定为GET

啥时候浏览器发送的是POST请求?

  1. 通过form表单,method指定为POST
  2. 通过ajax,type类型为POST

Servlet运行原理

在这里插入图片描述

Tomcat伪代码

Tomcat初始化

1)让Tomcat先从指定的目录中找到所有要加载的Servlet类
前面部署的时候是把Servlet代码编译成了.class,然后打包成了war包。然后拷贝到了webapps里面。Tomcat就会从webapps里来找到哪些.class对应的Servlet类,并进行加载。
2)根据刚才类加载的结果,给这些类创建Servlet实例
在这里插入图片描述

3)实例创建好之后,就可以调用当前Servlet实例的init方法了
在这里插入图片描述

4)创建TCP socket,监听8080端口,等待有客户端来连接
在这里插入图片描述

5)如果循环退出了,Tomcat也要结束了就会一次循环调用每个Servlet的destroy方法
在这里插入图片描述

Tomcat处理请求

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
说明:10分虽然有点高 但东西值 重点是 我也只想搞点分数下东西 谢谢支持 目录 I 简介 1 概览 1 适合读者 1 servlet容器是如何工作的 1 catalina结构图 1 tomcat的版本4和版本5 2 章节简介 2 第1章 一个简单的Web服务器 3 1.1 The Hypertext Transfer Protocol (HTTP) 3 1.2 HTTP Request 3 1.3 HTTP Response 4 1.4 Socket类 4 1.5 ServerSocket类 5 1.6 应用举例 5 第2章 一个简单的servlet容器 7 2.1 简述 7 2.2 javax.servlet.Servlet接口 7 2.3 Application 1 7 2.3.1 HttpServer1类 8 2.3.2 Request类 8 2.3.3 Response类 9 2.3.4 StaticResourceProcessor类 9 2.3.5 ServletProcessor1类 9 2.4 Application 2 9 第3章 连接器(Connector) 11 3.1 概述 11 3.2 StringManager类 11 3.3 Application 12 3.3.1 启动 13 3.3.2 connector 13 3.3.3 创建HttpRequest对象 13 3.3.3.1 SocketInputStream类 14 3.3.3.2 解析请求行(request line) 14 3.3.3.3 解析请求头(request header) 14 3.3.3.4 解析cookie 15 3.3.3.5 获取参数 16 3.3.3.6 创建HttpResponse对象 16 3.3.3.7 静态资源处理器和servlet处理器 17 第4章 tomcat的默认连接器 18 4.1 简介 18 4.2 HTTP1.1的新特性 18 4.2.1 持久化连接 18 4.2.2 编码 18 4.2.3 状态码100的使用 19 4.3 Connector接口 19 4.4 HttpConnector类 20 4.4.1 创建ServerSocket 20 4.4.2 维护HttpProcessor对象池 20 4.4.3 提供Http请求服务 21 4.5 HttpProcessor类 21 4.6 request对象 24 4.7 response对象 24 4.8 处理request对象 25 4.8.1 解析连接 28 4.8.2 解析request 28 4.8.3 解析请求头 28 4.9 简单的container程序 30 第5章 container 31 5.1 Container接口 31 5.2 流水线(pipeline)任务 32 5.2.1 Pipeline 34 5.2.2 Valve接口 35 5.2.3 ValveContext接口 35 5.2.4 Contained接口 36 5.3 Wrapper应用程序 36 5.4 Context接口 36 5.5 Wrapper程序实例 36 5.5.1 ex05.pyrmont.core.SimpleLoader 37 5.5.2 ex05.pyrmont.core.SimplePipeline 37 5.5.3 ex05.pyrmont.core.SimpleWrapper 38 5.5.4 ex05.pyrmont.core.SimpleWrapperValve 38 5.5.5 ex05.pyrmont.valves.ClientIPLoggerValve 39 5.5.6 ex05.pyrmont.valves.HeaderLoggerValve 39 5.5.7 ex05.pyrmont.startup.Bootstrap1 39 5.6 Context程序实例 39 5.6.1 ex05.pyrmont.core.SimpleContextValve 40 5.6.2 ex05.pyrmont.core.SimpleContextMapper 41 5.6.3 ex05.pyrmont.core.SimpleContext 42 5.6.4 ex05.pyrmont.startup.Bootstrap2 42 第6章 生命周期(Lifecycle) 43 6.1 概述 43 6.2 Lifecycle接口 43 6.3 LifecycleEvent类 44 6.4 LifecycleListener接口 44 6.5 LifecycleSupport类 44 6.6 应用程序 45 6.6.1 ex06.pyrmont.core.SimpleContext 45 6.6.2 ex06.pyrmont.core.SimpleContextLifecycleListener 45 6.6.3 ex06.pyrmont.core.SimpleLoader 46 6.6.4 ex06.pyrmont.core.SimplePipeline 46 6.6.5 ex06.pyrmont.core.SimpleWrapper 46 第7章 Logger 47 7.1 概述 47 7.2 Logger 47 7.3 Tomcat's Loggers 47 7.3.1 LoggerBase类 48 7.3.2 SystemOutLogger类 48 7.3.3 SystemErrLogger类 48 7.3.4 FileLogger类 49 7.3.4.1 open方法 50 7.3.4.2 close方法 50 7.3.4.3 log方法 51 7.4 应用程序 51 第8章 Loader 52 8.1 概述 52 8.2 java本身的loader 52 8.3 Loader接口 53 8.4 Reloader接口 54 8.5 WebappLoader类 54 8.5.1 创建类载入器 55 8.5.2 设置repository 55 8.5.3 设置类路径 56 8.5.4 设置访问权限 56 8.5.5 开启新线程执行类的重新载入 56 8.6 WebappClassLoader类 57 8.6.1 类缓存 58 8.6.2 载入类 59 8.6.3 应用程序 59 第9章 session管理 62 9.1 概述 62 9.2 Sessions 62 9.2.1 Session接口 62 9.2.2 StandardSession类 63 9.2.3 StandardSessionFacade类 65 9.3 Manager 65 9.3.1 Manager接口 66 9.3.2 ManagerBase类 66 9.3.3 StandardManager类 67 9.3.4 PersistentManagerBase类 68 9.3.4.1 swap out(换出) 69 9.3.4.2 back up(备份) 69 9.3.5 PersistentManager类 70 9.3.6 DistributedManager类 70 9.4 Stores 71 9.4.1 StoreBase类 72 9.4.2 FileStore类 73 9.4.3 JDBCStore类 73 9.5 应用程序 73 9.5.1 Bootstrap类 73 9.5.2 SimpleWrapperValve类 74 第10章 安全性 76 10.1 概述 76 10.2 Realm(领域) 76 10.3 GenericPrincipal 77 10.4 LoginConfig 78 10.5 Authenticator 78 10.6 安装Authenticator 79 10.7 应用程序 79 10.7.1 ex10.pyrmont.core.SimpleContextConfig类 80 10.7.2 ex10.pyrmont.realm.SimpleRealm类 80 10.7.3 ex10.pyrmont.realm.SimpleUserDatabaseRealm 81 10.7.4 ex10.pyrmont.startup.Bootstrap1类 81 10.7.5 ex10.pyrmont.startup.Bootstrap2类 81 第11章 StandardWrapper 82 11.1 方法调用序列 82 11.2 SingleThreadModel 83 11.3 StandardWrapper 83 11.3.1 生成servlet 84 11.3.2 载入servlet 86 11.3.3 ServletConfig对象 90 11.3.3.1 getServletContext方法 90 11.3.3.2 getServletName方法 91 11.3.3.3 getInitParameter方法 91 11.3.3.4 getInitParameterNames方法 92 11.3.4 container的父子关系 92 11.4 StandardWrapperFacade类 93 11.5 StandardWrapperValve类 94 11.6 FilterDef类 95 11.7 ApplicationFilterConfig类 96 11.8 ApplicationFilterChain类 96 11.9 应用程序 97 第12章 StandardContext类 98 12.1 概述 98 12.2 StandardContext的配置 98 12.2.1 StandardContext类的构造函数 98 12.2.2 启动StandardContext 99 12.2.3 invoke方法 99 12.3 StandardContextMapper类 100 12.4 对重载的支持 104 12.5 backgroundProcess方法 105 第13章 Host和Engine 107 13.1 概述 107 13.2 Host接口 107 13.3 StandardHost类 107 13.4 StandardHostMapper类 109 13.5 StandardHostValve类 110 13.6 为什么必须要有一个host 111 13.7 应用程序1 111 13.8 Engine接口 112 13.9 StandardEngine类 112 13.10 StandardEngineValve类 112 13.11 应用程序2 113 第14章 Server与Service 114 14.1 概述 114 14.2 server 114 14.3 StandardServer 114 14.3.1 initialize方法 114 14.3.2 start方法 115 14.3.3 stop方法 115 14.3.4 await方法 116 14.4 Service接口 116 14.5 StandardService类 116 14.5.1 connector和container 117 14.5.2 与生命周期有关的方法 118 14.6 应用程序 120 14.6.1 Bootstrap类 120 14.6.2 Stopper类 121 第15章 Digester 122 15.1 概述 122 15.2 Digester 122 15.2.1 Digester类 123 15.2.1.1 创建对象 123 15.2.1.2 设置属性 124 15.2.1.3 调用方法 124 15.2.1.4 创建对象之间的关系 124 15.2.1.5 验证xml文档 125 15.2.2 Digester示例1 125 15.2.3 Digester示例2 125 15.2.4 Rule类 126 15.2.5 Digester示例3:使用UsingSet 127 15.3 ContextConfig 127 15.3.1 defaultConfig方法 129 15.3.2 applicationConfig方法 129 15.3.3 创建digester 130 15.4 应用程序 130 第16章 Shutdown Hook 131 16.1 概述 131 16.2 tomcat中的shutdown hook 131 第17章 启动tomcat 133 17.1 概述 133 17.2 Catalina类 133 17.2.1 start方法 134 17.2.2 stop方法 135 17.2.3 启动Digester 135 17.2.4 关闭Digester 135 17.3 Bootstrap类 136 第18章 部署器 137 18.1 概述 137 18.2 部署一个web应用 137 18.2.1 部署一个描述符 140 18.2.2 部署一个war 141 18.2.3 部署一个目录 142 18.2.4 动态部署 143 18.3 Deploy接口 145 18.4 StandardHostDeployer类 145 18.4.1 安装一个描述符文件 146 18.4.2 安装一个war文件或目录 147 18.4.3 启动context 148 18.4.4 停止一个context 149 第19章 Manager Servlet 150 19.1 概述 150 19.2 使用Manager应用 150 19.3 ContainerServlet接口 151 19.4 初始化ManagerServlet 152 19.5 列出已经部署的web应用 153 19.6 启动web应用 154 19.7 关闭web应用 155 第20章 基于JMX的管理 156 20.1 jmx简介 156 20.2 jmx api 157 20.2.1 MBeanServer 157 20.2.2 ObjectName 157 20.3 Standard MBeans 158 20.4 Model MBeans 159 20.4.1 MBeanInfo与ModelMBeanInfo 160 20.4.2 ModelMBean实例 161 20.5 Commons Modeler 161 20.5.1 MBean描述符 162 20.5.1.1 mbean 162 20.5.1.2 attribute 163 20.5.1.3 operation 163 20.5.1.4 parameter 163 20.5.2 mbean标签实例 164 20.5.3 自己编写一个model MBean 164 20.5.4 注册 164 20.5.5 ManagedBean 165 20.5.6 BaseModelMBean 165 20.5.7 使用Modeler API 165 20.6 Catalian中的MBean 165 20.6.1 ClassNameMBean 165 20.6.2 StandardServerMBean 166 20.6.3 MBeanFactory 167 20.6.4 MBeanUtil 167 20.7 创建Catalian的MBean 168 20.8 应用程序 172

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值