Tomcat跑程序的本质

Tomcat跑程序的本质

web容器就是Java web程序跑起来的一个运行环境,就像我们平时运行一个Java代码的时候要先为它创造好JDK环境。同样的道理,要想运行一个web项目也需要一个环境,我们平常大部分用的都是Tomcat服务器。Tomcat服务器就是一个web容器,它是一种单一的服务器,上面只能跑web项目,还有其他混合容器不仅可以运行web项目也可以跑其他项目,有兴趣的可以Google一下。

以上的解释是通俗的说法。实际上Tomcat服务器就是管理servlet组件的容器,它通过调用自身的方法来实现servlet的运行,具体过程如下:

1.当客户点击一个URL地址时,该URL指向的是一个servlet而不是一个静态页面。

2.首先接收到请求的是容器而不是servlet,容器根据该请求判断请求所需要的是servlet,于是就创建httpservletrequest和httpservletresponse两个对象。

3.容器再根据请求判断所需要的是哪一个servlet,然后在线程池中调派线程,并把第2步中创建的两个对象放入线程中。

4.容器调用servlet的service()方法,service()方法会调用doGet()或者doPost()方法。

5.doGet()方法生成动态页面,然后把页面填入response对象中,此时容器任然拥有response对象。

6.线程结束,容器把response对象转换成http响应,传回客户端,并销毁httpservletrequest和httpservletresponse两个对象。

了解了Tomcat容器之后,有些人就会对servlet产生了疑问。它是什么?用来干什么的?它其实就是一个Java的接口,一种规范,它的作用很单一,因为大部分任务都是容器来完成的,它的主要功能在于交互式地浏览和修改数据,生成动态web内容,它只要实现自身的5个方法就好了。接下来简单介绍一下这5个方法,以后还会详细介绍servlet的:

  • 1.init(servletConfig config)或者不带参数(核心):对实例进行初始化,由方法2得到的参数作为对象,以便进行servlet的正确初始化。使用该方法可以在处理请求前做好准备,比如连接数据库等。整个周期该方法执行一次。

  • 2.getServletConfig():获得一个含有servlet配置信息的对象。服务器启动的时候,系统会自动把整个web.xml配置文件中的配置信息封装成一个对象,该对象实现了servletConfig接口。

  • 3.service()(核心)服务方法:在该方法被容器调用之前要确保init方法的正确,客户端每次发送一次请求该方法就执行一次,整个周期执行n次。

  • 4.getServletInfo():获得servlet的一个描述。

  • 5.destroy()(核心):服务器暂停或者程序运行结束,释放暂用的内存。整个周期执行一次。

javaWeb应用为啥必须部署在tomcat等服务器上

javaWeb应用为何必须部署在tomcat等服务器上
如题,这类服务器还有weblogic,websphere,但我不明白为什么必须地部署上去才能访问这些web应用?
------解决思路----------------------

因为这些服务器软件能监听http请求,解析http头信息,头信息里写有用户想看你的哪个页面,然后这些软件再打开你的程序对应的页面跑一下得出结果再返回给用户。
要是你写的web程序把这个监听啥的也写上,可以不用依赖tomcat等软件的,只要符合http协议的过程。

------解决思路----------------------

1.首先要使用http访问到你的web应用你服务器需要开一个端口来监听请求吧?
2.既然使用的是http协议,那么需要解析来自网络的http请求吧?
3.解析了之后要访问到对应的应用系统吧?
4.系统处理了请求之后返回的结果集你需要返回给用户让用户能在浏览器中展示吧? 中间件就是帮你完成了这些事情而已 开启监听端口监听用户的请求,解析用户发来的http请求然后访问到你指定的应用系统,然后你返回的页面经过tomcat返回给用户。如果不乐意非要自己处理也是可以的

------解决思路----------------------

普通的html,浏览器可以直接搞定。 但是如servlet这些,浏览器没法直接将里面的内容解析出来吧。这些就需要一个工具进行处理。
让浏览器能够在访问主机的时候,将这些信息正确的识别出来。

普通的web,犹如你去外面烧烤。你只要拿着肉去,自己烤着吃就行了。
动态web,如同你去吃饭店吃宴席,即使你带些猪肉,牛肉,青菜,油盐过去,你根本就无法达到自己目的。 宴席,肯定比比一般的烧烤更加让人羡慕。
但是,宴席必须需要一个厨师团队在里面进行工作,方能够保证客人能够享用。

猜你喜欢

转载自blog.csdn.net/weixin_42118981/article/details/115273549