欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

350.tomcat认知

程序员文章站 2022-03-22 16:55:27
...

tomcat历史

  • 编程语言
    • 系统级:C,C++,rust(兼具系统及特性,修补C语言固有的缺陷),…开发周期长,维护苦难,性能高
    • 应用级:Java,C#,go,Python,ruby…

java或C#开发一个网站,响应用户请求,不仅要写业务逻辑层,还要实现web服务协议的细节处理,封装响应报文,处理与客户端连接的保持连接,web界面输出格式等,多了一个前端,工作量较大。后来web应用层协议的交互被编写为一个框架(库和相关工具等)。web服务器的功能(处理客户端响应报文,处理web界面的输出格式如html,与客户端交互等),做成框架,独立成一个服务,可以把客户端的请求接入服务器并路由到业务逻辑层,如tomcat,是一个独立的项目,后续程序员只要开发业务逻辑层就可以了,而不用操心与web界面的交互实现等

  • CGI:Common Gateway Interface

    客户端要与反代服务器或web服务器交互,如与反代服务器交互,但业务逻辑层的web服务器代码可能是C#,shell,java等,与反代服务器交互的协议没有统一的规范,CGI就是此种规范,能使服务器代码与反代服务器交互,只要支持CGI协议的客户端前端,都能拿来当网关使用。而如果web服务器直接使用http协议编写,则可以直接和客户端交互

    ⑴:通过Internet把用户请求送到web服务器

    ⑵:web服务器接收用户请求并交给CGI程序处理。

    ⑶:CGI程序把处理结果传送给web服务器。

    ⑷:web服务器把结果送回到用户。

    cgi百科

程序:指令+数据
  过程式编程:以指令为中心,数据服务于代码;
  对象式编程:以数据为中心,指令服务于数据;
    对象,方法(method)

  • Java
    • web服务器流行起来,Oak也去写web服务器代码
  • Oak

    • 1991年开始美国的机顶盒(iptv)比较多,Oak是写在机顶盒上运行的程序,名为橡树,只因编程人员办公室外有一个橡树。但此项目失败了
  • 前端开发:JavaScript

  • 后端开发:java,C

  • JVM

    • 一次编译,到处执行的优点,在90年代时,http协议流行时,而java尝试去编写web应用程序,使其迅速流行起来。所谓有心栽花花不开,无心栽柳柳成荫

jws是sun提供的,但asf(Apache Software Foundation)提供的jserv比jws完善,sun把jws捐给了asf,asf对比两个版本,发现各有优点,于是从头做起,此项目名为catalina。世界上有个出版社(O’Reilly)的书都极为著名,基本出版的书封面都是一个动物,而catalina的编写者受邀出版书,封面是个公猫(tomcat),由于此书后来出名了,catalina就把项目名改为了tomcat。tomcat是在jdk的基础上添加了两个企业级类库和web服务器前端的实现,把业务交给程序员完成

类似tomcat的产品如Jetty,Resin,JBoss(完善了tomcat)

tomcat:Servet,jsp两个类型

tomcat+JDK=Java SE (不是太精准)

Java:
  Sun, Green Project, Oak, James Gosling;  
  1995:Java 1.0, Write once, Run Anywhere;
  1996:JDK(Java Development Kit),包含类库(API)、开发工具(javac)、JVM(SUN Classic VM)
  JDK 1.0, Applet, AWT
  1997:JDK 1.1
  1998: JDK 1.2
  
  Sun分拆Java技术为三个方向:
  J2SE:Standard Edition
  J2EE:Enterprise Edition
  J2ME:Mobile Edition

    代表性技术:EJB,java plugin, Swing, JIT(Just In Time,即时编译)
  2000:JDK 1.3
      HotSpot VM
  2002:JDK 1.4
  2006:Sun开源了Java技术,GPL,建立一个称为OpenJDK组织;
      Java 2 SE, Java 2 EE, Java 2 ME
  2011:JDK 1.7
  2014:JDK 1.8
  2016:JDK 1.9
oracle收购了sun,百度oracle jdk下载


Servlet和JSP的区别和联系

tomcat也是一个web server,客户端浏览器可以通过http协议直接和tomcat通信,称为standlone,但这不是tomcat的强项。可以通过在tomcat前加一个反代服务器,如nginx,haproxy等(可以并发多连接),把客户端请求调度给tomcat所在后端服务器,而tomcat所在的服务器安装nginx服务器处理静态页面,同时由nginx反代功能把动态页面反代给tomcat处理动态页面。tomcat是servlet和jsp的结合产物

用Java开发Web应用程序时用到的技术主要有两种,即Servlet和JSP。 Servlet是在服务器端执行的Java程序,一个被称为Servlet容器的程序(其实就是服务器)负责执行Java程序。而JSP(Java Server Page)则是一个页面, 由JSP容器负责执行。

Servlet和JSP两者最大的区别就是,Servlet以Java程序为主,输出HTML代码时需要使用out.println函数,也就是说Java中内嵌HTML,动态输出html内容。
而JSP则以HTML页面为主,需要写Java代码时则在页面中直接插入Java代码,即HTML中内嵌Java,Java代码被动态执行后生成HTML内容

jsp和servlet的区别和联系
1.jsp经编译后就变成了Servlet.
(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)

2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.
3.Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到.
Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。
而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。

联系:
JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。
区别:
Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来,而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于视图,Servlet主要用于控制逻辑,Servlet更多的是类似于一个Controller,用来做控制。
350.tomcat认知
Servlet能够很好地组织业务逻辑代码,但是在Java源文件中通过字符串拼接的方式生成动态HTML内容会导致代码维护困难、可读性差
JSP虽然规避了Servlet在生成HTML内容方面的劣势,但是在HTML中混入大量、复杂的业务逻辑同样也是不可取的

典型的例子如下:
JSP文件
代码如下:

<html>  
   <body>  
     <h1>  
     <% out.println("JSP"); %>  
     </h1>  
   </body>  
 </html> 

Servlet

代码如下:
public class MyServlet ... {  
   ...  
   out.println("<html>");  
   out.println("<body>");  
   out.println("<h1>");  

   out.println("Servlet);  

   out.println("</h1>");  
   out.println("</body>");  
   out.println("</html>");  
 } 

可见,JSP便于输出,而Servlet便于进行逻辑处理。因此实际应用中两者常常结合使用,各司其职。
而Tomcat就是上面提到的Servlet容器和JSP容器。 各个版本对Servlet/JSP协议支持的情况如下:

Tomcat版本 支持Servlet 支持JSP
6.0.x 2.5 2.1
5.5.x 2.4 2.0
4.1.x 2.3 1.2
3.3.x 2.2 1.1

Web应用程序的结构

Tomcat安装好以后, 可以去看看tomcat目录下的webapps目录。这个目录就是用来保存Web应用程序的。

上图的根目录就是应当放置在 webapps 目录下的目录。WEB-INF目录无法从浏览器中访问。 WEB-INF/classes下保存的是编译后的Java程序(主要是Servlet),WEB-INF/lib 下保存的是 运行时使用的库文件(.jar文件),web.xml则是整个应用程序的配置信息。

其他文件例如 .jsp、图片、Javascript脚本等,都可以直接放到Web应用程序的根目录下。

tomcat的思想
MVC模型

所谓MVC模型就是将数据、逻辑处理、用户界面分离的一种方法。

M(Model, 模型):用于数据处理、逻辑处理。
V(View,视图):用于显示用户界面。
C(Controller,控制器):根据客户端的请求控制逻辑走向和画面。
而在Java中,MVC这三个部分则分别对应于 JavaBeans、JSP和Servlet。

M = JavaBeans:用于传递数据,拥有与数据相关的逻辑处理。
V = JSP:从Model接收数据并生成HTML
C = Servlet:接收HTTP请求并控制Model和View

350.tomcat认知
1.Web浏览器发送HTTP请求到服务端,被Controller(Servlet)获取并进行处理(例如参数解析、请求转发)
2.Controller(Servlet)调用核心业务逻辑——Model部分,有需要时获取数据,得出结果
3.Controller(Servlet)将逻辑处理结果交给View(JSP),JSP运行在model上,动态输出HTML内容
4.动态生成的HTML内容返回到浏览器显示

java编程思想(thinking in java),java疯狂讲义

相关标签: tomcat