tomcat官网:https://tomcat.apache.org
The Apache Tomcat® software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies.
Tomcat 是使用了Java WebSocket技术和serlet技术,tomcat使用java实现
为什么tomcat具备web服务的能力呢 先看看网络结构图webstocket进行端口的监听,当然tomcat运行是一个进程,包含很多的线程。 在服务端用HTTP来监听,协议不好写,不妨用Java封装好的Socket作为监听。 比如:
class MyTomcat{
ServerSocket server=new ServerSocket(8080);
// 等待客户端的连接请求
Socket socket=server.accept();
}
servlet容器
定义: Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。 狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。servlet实现了什么,过程
最早支持 Servlet 技术的是 JavaSoft 的 Java Web Server。此后,一些其它的基于 Java 的 Web Server 开始支持标准的 Servlet API。Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。这个过程为: 1. 客户端发送请求至服务器端; 2. 服务器将请求信息发送至 Servlet; 3. Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求; 4. 服务器将响应返回给客户端。看看servlet
public interface Servlet {
void init(ServletConfig config) throws ServletException;
ServletConfig getServletConfig();
void service(ServletRequest req, ServletResponse res)throws ServletException,
IOException;
String getServletInfo();
void destroy();
}
class LoginServlet extends HttpServlet{
doGet(request,response){}
doPost(request,response){}
}
LoginServlet
com.demo.web.servlet.LoginServlet
LoginServlet
/login
简化版tomcat
class MyTomcat{
List list=new ArrayList();
ServerSocket server=new ServerSocket(8080);
Socket socket=server.accept();
// 把请求和响应都封装在业务代码中的servlet
// 只要把业务代码中一个个servlets添加到tomcat中即可
list.add(servlets);
}
1、tomcat需要支持servlet规范
tomcat/lib/servlet-api.jar
2、web容器
希望tomcat源码中也有new ServerSocket(8080)的代码
3、servlet容器
希望tomcat源码中也有list.add(servlets)的代码
源码包下载:
官网下载源码:https://tomcat.apache.org/download-10.cgi
Source code distributions
用idea作为项目导入,在我们直接在项目的根目录增加pom.xml文件,
结构介绍
(1)bin:主要用来存放命令,.bat是windows下,.sh是Linux下
(2)conf:主要用来存放tomcat的一些配置文件
(3)lib:存放tomcat依赖的一些jar包 以前有现有没有了
(4)logs:存放tomcat在运行时产生的日志文件
(5)modules: jdbc-pool jdbc线程池,存储数据使用
(6)webapps:存放应用程序
(7)work:存放tomcat运行时编译后的文件,比如JSP编译后的文件 编译启动后会有
(8)Java:存放源码
(9)res:存放资源文件
(10)test:存放测试的源码
Pom.xml文件
4.0.0 org.apache.tomcat Tomcat9.0 Tomcat9.0 9.0 Tomcat9.0 java java org.apache.maven.plugins maven-compiler-plugin 2.3 UTF-8 1.11 1.11 junit junit 4.12 test org.easymock easymock 3.4 ant ant 1.7.0 wsdl4j wsdl4j 1.6.2 javax.xml jaxrpc 1.1 org.eclipse.jdt.core.compiler ecj 4.5.1 biz.aQute.bnd biz.aQute.bndlib 5.2.0 provided com.unboundid unboundid-ldapsdk 6.0.2 test



