tomcat(2)Jasper和服务器配置

一 Jasper引擎

简介

对于基于JSP的web应用来说,我们可以直接在Jsp页面中编写Java代码 ,添加第三方的标签库,以及使用EI表达式。但是无论经过何种形式的处理,最终输出到客户端的都是标准的HTMI页面(包含js , css… ) , 并不包含任何的java相关的语法。也就是说 ,我们可以把jsp看做是一-种运行在服务端的脚本。

那么服务器是如何将Jsp页面转换为HTML页面的呢?
Jasper模块是Tomcat的JSP核心引擎,我们知道JSP本质上是一一个servlet。 Tomcat使用Jasper对Jsp语法进行解析,生成servlet并生成Class字节码,用户在进行访问jsp时,会访问servlet ,最终将访问的结果直接响应在浏览器端。另外,在运行的时候, Jasper还会检测JSp文件是否修改,如果修改,则会重新编译Jsp文件

在这里插入图片描述

编译方式

运行时编译

Tomcat并不会在启动web应用的时候自动编译JSp文件,而是在客户端第一 次请求时 ,才编译需要访问的JSp文件。

Tomcat在默认的web .xml中配置了一个org.apache. jasper.servlet. Jspservlet。用于处理所有的.jsp或.jspx结尾的请。该servlet实现即是运行时编译入口



    <!-- The mappings for the JSP servlet -->
    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.jspx</url-pattern>
    </servlet-mapping>
    
    <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>

流程图
在这里插入图片描述

编译结果

有3种情况
在这里插入图片描述

预编译

在这里插入图片描述

二 服务器配置

Tomcat服务器的配置主要集中于tomcat/conf下的catalina .policy.、catalina.properties、context.xml、server. xml、tomcat-users.xml、web.xml文件。

server.xml是tomcat服务器的核心配置文件,包含了Tomcat的Servlet容器( Catalina )的所有配置。由于配置的属性特别多,我们在这里主要讲解其中的一部分重要配置。

Server

Server是server.xml的根元素,用于创建一个server实例 ,默认使用的实现类是org. apache.catalina. core. standardserver.
在这里插入图片描述

Servex内嵌的子元素为Listener、GlobalNamingResources.、Service.
默认配置的5个Listener的含义(了解):
在这里插入图片描述

service

该元素用于创建Service实例,默认使用org.apache. catalina.core.Standardservice.默认情况下 , Tomcat仅指定了
Service的名称,值为"Catalina"。 Service 可以内嵌的元素为: Listener、 Executor、 Connector、 Engine ,其中:Listener用于为servi ce添加生命周期监听器,Executor 用于配置service共享线程池. Connector用于配置service 包含的连接器,Engine用于配置service中链接器对应的servlet容器引擎。

Executor

在这里插入图片描述
默认未开启注释,即每个连接器都有自己的线程池。开启了,则配置的是所有connectork的共享线程池,需要在connector种显示指定,才可以将connector的线程池换掉。
在这里插入图片描述

Connector

在这里插入图片描述

如果想指定IO模型

在这里插入图片描述

完整配置

在这里插入图片描述

Engine

在这里插入图片描述

Host

因为一个服务器可能被多个不同的域名映射,所以hostname可以匹配
在这里插入图片描述

Context

在这里插入图片描述
在这里插入图片描述

tomcat-user.xml

在这里插入图片描述

小结:具体各个组件之前的关系可以看前一篇文章

参考

  1. java进阶教程Tomcat核心原理解析
发布了107 篇原创文章 · 获赞 1 · 访问量 3952

猜你喜欢

转载自blog.csdn.net/m0_38060977/article/details/104110153