Tomcat的一些定义

关于Tomcat为web应用服务器

百度:Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

Nginx同样也是一款开源的HTTP服务器软件(当然它也可以作为邮件代理服务器、通用的TCP代理服务器)。

HTTP服务器本质上也是一种应用程序——它通常运行在服务器之上,绑定服务器的IP地址并监听某一个tcp端口来接收并处理HTTP请求,这样客户端(一般来说是IE, Firefox,Chrome这样的浏览器)就能够通过HTTP协议来获取服务器上的网页(HTML格式)、文档(PDF格式)、音频(MP4格式)、视频(MOV格式)等等资源。下图描述的就是这一过程:

这里写图片描述

Apache Tomcat则是Apache基金会下的另外一个项目,与Apache HTTP Server相比,Tomcat能够动态的生成资源并返回到客户端。Apache HTTP Server和Nginx都能够将某一个文本文件的内容通过HTTP协议返回到客户端,但是这个文本文件的内容是固定的——也就是说无论何时、任何人访问它得到的内容都是完全相同的,这样的资源我们称之为静态资源。动态资源则与之相反,在不同的时间、不同的客户端访问得到的内容是不同的,例如:
包含显示当前时间的页面
显示当前IP地址的页面
Apache HTTP Server和Nginx本身不支持生成动态页面,但它们可以通过其他模块来支持(例如通过Shell、PHP、Python脚本程序来动态生成内容)。如果想要使用Java程序来动态生成资源内容,使用这一类HTTP服务器很难做到。Java Servlet技术以及衍生的Java Server Pages技术可以让Java程序也具有处理HTTP请求并且返回内容(由程序动态控制)的能力,Tomcat正是支持运行Servlet/JSP应用程序的容器(Container):

这里写图片描述

Tomcat运行在JVM之上,它和HTTP服务器一样,绑定IP地址并监听TCP端口,同时还包含以下指责:
管理Servlet程序的生命周期
将URL映射到指定的Servlet进行处理
与Servlet程序合作处理HTTP请求——根据HTTP请求生成HttpServletResponse对象并传递给Servlet进行处理,将Servlet中的HttpServletResponse对象生成的内容返回给浏览器
虽然Tomcat也可以认为是HTTP服务器,但通常它仍然会和Nginx配合在一起使用:
动静态资源分离——运用Nginx的反向代理功能分发请求:所有动态资源的请求交给Tomcat,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器,这样能大大减轻Tomcat的压力。
负载均衡,当业务压力增大时,可能一个Tomcat的实例不足以处理,那么这时可以启动多个Tomcat实例进行水平扩展,而Nginx的负载均衡功能可以把请求通过算法分发到各个不同的实例进行处理

虚拟一个Tomcat:

public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        ServerSocket ss = new ServerSocket(8080);

        Socket s = ss.accept();

        InputStream in = s.getInputStream();

        byte[] burf = new byte[1024];
        int len =in.read(burf);
        String str = new String(burf,0,len);
        System.out.println(str);

        //给客户一个反馈信息
        PrintWriter out = new PrintWriter(s.getOutputStream(),true);

        out.println("欢迎光临!");

        s.close();
        ss.close();
    }

之后在浏览器上输入ip地址和端口号,mytomcat即可做出反应
这里写图片描述

搜狗,百度浏览器都是在IE的基础上进行装饰和修正的,正在的Tomcat在IE上。
我的浏览器:

public static void main(String[] args) throws UnknownHostException, IOException {
        // TODO Auto-generated method stub
        //模拟浏览器,给Tomcat服务端发送符合http协议的请求消息

        Socket s = new Socket("192.168.1.104",8080);

        PrintWriter out = new PrintWriter(s.getOutputStream(),true);
        out.println("GET / HTTP/1.1");
        out.println("Host: 192.168.1.104:8080");
        out.println("Connection: keep-alive");
        out.println("Cache-Control: max-age=0");
        out.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
        out.println("Upgrade-Insecure-Requests: 1");
        out.println("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0");
        out.println("Accept-Encoding: gzip, deflate, sdch");
        out.println("Accept-Language: zh-CN,zh;q=0.8");

        InputStream in = s.getInputStream();
        byte[] burf = new byte[1024];
        int len = in.read(burf);
        String str = new String(burf,0,len);
        System.out.println(str);

        out.close();
        s.close();
    }

以上信息:
GET / HTTP/1.1 //请求行 请求方式 请求的资源路径 http协议版本
请求消息头 属性名:属性值
Host: 192.168.1.104:8080 //IP地址和端口号
Connection: keep-alive//保持存活
Cache-Control: max-age=0
Accept: text/html,application/xhtml +xml,application/xml;q=0.9,image/webp,/;q=0.8 //支持什么格式
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0 //用户的信息
Accept-Encoding: gzip, deflate, sdch //压缩方式,服务器端,将网页数据压缩,客户端再解压缩,提高效率。
Accept-Language: zh-CN,zh;q=0.8 //用户支持的语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值