Tomcat杂谈

来源:互联网 发布:电脑挂机赚钱软件2016 编辑:程序博客网 时间:2024/05/18 06:25
早期,在没有CGI的时候,java就已经可以运行在web中使用,不过,它的动态代码是在客户端运行。它的使用方式就是再heml文本文件中,嵌入一段java代码,当用户拿到该heml文件的时候,发现有java代码(Applet,小程序),就会运行浏览器中的插件(JRE)来解释,运行。这样存在很大的风险,例如,有人在网页中植入一段java的木马,用户只要访问该网站,便会运行该代码,虽然破坏的是JRE,但总会出现一些问题。
CGI技术诞生后,便出现了让动态代码在服务端运行。这样就要求服务端,java代码可以处理http协议,并且能够响应heep请求。这就需要一个CGI接口;基于这种要求,java开发出了servlet(服务端小程序)。
Servlet容器:能够运行Servlet代码的程序,称为Serverlet容器、Servlet类库、Servlet引擎。
在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变。 如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态内容也需要程序员用Java程序代码产生,整个Servlet程序的代码将非常臃肿,编写和维护都将非常困难。对大量静态内容的美工设计和相关HTML语句的编写,并不是程序员所要做的工作,程序员对此也不一定在行。网页美工设计和制作人员不懂Java编程,更是无法来完成这样的工作。
为了弥补Servlet的缺陷,SUN公司在Servlet的基础上推出了JSP(Java Server Pages)技术。
JSP页面是由HTML语句和嵌套在其中的Java代码组成的一个普通文本文件,JSP 页面的文件扩展名必须为.jsp。在JSP页面中编写的Java代码需要嵌套在<%和%>中,嵌套在<%和%>之间的Java代码被称之为脚本片段(Scriptlets),没有嵌套在<%和%>之间的内容被称之为JSP的模版元素。
.jsp ---> jasper --->.java ---> javac ---> .class ---> jvm
注意:servlet就是一个运行在服务器上的程序,一个java类,用于接收客户端的请求,然后访问服务器上的数据库或者是应用程序,它是一个中间层;
注意:Servlet Container:JDK+Servlet就可以让java来支持web应用,但这种实现方式就是将动态内容和静态内容糅合在一起,不方便使用。
注意:JSP Container:JSP+JDK+Servlet,将动态内容和静态内容分离开;
注意:基于jasper将静态输出的数据转为java代码进行输出,结果为servlet规范的代码。并且还可以将前端和后端分离开,大大提高了开发的效率。
所以,要在web中使用java代码,需要jasper和Servlet,java官方开发了JWS,但是并不能在生产环境中使用。有很多商业版的解决方案。ASF给出的开源的方案JServ,java官方将自己的JWS捐赠给了ASF,让后就产生了开源界的解决最好的方案,就是Tomcat。
tomcat是一个完整的web server,不仅支持http,还支持https;
tomcat的连接器支持三种http、https、ajp。不过ajp不能和nginx混合使用,只能与httpd来搭配使用。一个连接器仅能将请求发送给一个引擎,但一个引擎可以和多个连接器链接起来。service就是将连接器和引擎链接起来。一个service只能有一个引擎,而引擎就是真正处理jsp代码的组件,他是tomcat的最核心的组件,也叫catalina。引擎内部有一个重要的组件,叫做host,类似于nginx中的“server”,每一个host用来表示一个虚拟主机,即用来实现多主机的要求。每一个host也可以部署多个应用程序,java代码有一个特点,就是都是类文件,类文件又依赖着其他的类文件,为了将不同的应用程序分开,就引入了“context”,配置context可以通过url来实现,类似于nginx中的location。为了完成其他的要求,还有一些别的组件。
注意:单个tomcat实例所能使用的最大的内存空间是32G,如果你的服务器的内存是128G的,那么剩余的空间,就浪费了。解决的方法就是多起几个Tomcat进程,所以需要使用不同的端口(单实例的tomcat使用的8080端口。)由于web使用的是80端口,所以tomcat天生就是一个被代理的命。
为了满足多虚拟主机的部署,不影响到其他的服务,就需要使用热部署技术host-manager。有两个接口可以实现,命令行接口,图形接口。
部署:让类加载器加载整个应用程序和应用程序所依赖的web类;
原创粉丝点击