tomcat,apache

来源:互联网 发布:交易猫软件下载 编辑:程序博客网 时间:2024/05/28 01:35

PHP:

我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的;

PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);

1 用户在Web浏览器(客户端)中键入网址以访问网站。此连接还含有HTML表单的HTML页面。

2 浏览器连接到Apache服务器上,服务器中存放有组成该网站的HTML和PHP文件。Apache为客户端的请求提供服务(通过遵守其配置文件中的规则来查找相关的页面并发送回去)并发给客户端仅含有HTML表单的网页。

3 用户在Web服务器填写表单并提交表单给服务器。

4 Apache服务器收到提交的表单后,加载相关的文件来处理表单中提交的内容。文件中含有用语链接到数据库的PHP代码。PHP代码由Apache传给PHP解释程序(interpreter) 并由解释程序加以运行。PHP连接到MySQL数据库(可能位于同一台计算机计算机上,也可以位于其他的计算机上,都一样)上。连上MySQL数据库之后,使用SQL对信息进行查询。SQL是为了与数据库进行通信而专门设计的一种语言。

5 MySQL数据库接受SQL请求并查找信息。找到信息后,将结果发回给提出请求的PHP脚本。

6 PHP脚本从MySQL数据库接收结果并用收到的结果构造HTML页面,然后讲页面发送回Web浏览器客户端。

7 Web浏览器接收查询的HTML结果并将其显示给用户。

Tomcat:

项目放在webapps目录下,启动tomcat时,加载该目录下的项目,首先找到web.xml文件,加载其中定义的Filter,Listenner等,如果是springboot开发的项目,web.xml为空,找到main方法,继续执行,加载其中的东西。一个请求过来后,判断是哪个应用,再继续解析处理,最后返回。

找到tomcat,lib目录先的jsper.jar,其中有一个Service方法:1.该方法将JSP文件变成HttpJspBase的子类。2.子类重写_jspService()方法。为什么会加一个"_",其它的方法有jspInit(),jspDestory().3.一个页面就对应一个Servlet。看到是HTTP代码就是加上out.println(),如果是<%%>就原封不动的放到Java代码中,其他若干功能,比如调用组件库等等。其实这个过程比较复杂。

Tomcat的访问分为两种:1.动态访问,.jsp是动态访问。2.静态访问,直接将请求的内容通过HTTP返回。

jsp文件解析成class文件过程需要利用tomcat的jasper组件。
  Jasper是tomcat中使用的JSP引擎,在Tomcat 6中使用的是Jasper 2,相对于原来的版本作了不少的改进,比如:JSP的标签缓冲池、后台编译、页面改变时自动重新编译、Eclipse中JDT编译等等。
  简单的说,就是把JVM不认识的JSP文件解析成java文件,然后编译成class文件提供使用。目前有很多的JSP解析引擎,Tomcat中使用的是Jasper。搜索
  在Tomcat中可以通过配置 CATALINA_HOME/conf/web.xml 中的内容,配置Jasper的选项(web.xml中的内容很长,截取其中的一部分):
<servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

0 0
原创粉丝点击