JSP学习笔记之JSP运行原理

在学习Servlet时,我们知道Tomcat能够从客户端的请求URL中提取出Web应用程序目录(/ServletStudy)和Servlet匹配的URL(/firstServlet)。

 

如果我们使用如下URL访问jsp文件,Tomcat会如何处理呢?

http://localhost:8080/JspStudy/JspFile/first.jsp

 Tomcat同样可以从以上URL中提取出Web应用程序目录(/JspStudy)和jsp文件所在的目录(/JspFile/first.jsp),这样Tomcat就能准确定位jsp文件的位置,即

<Tomcat安装目录>\webapps\JspStudy\JspFile\first.jsp

 既然Tomcat找到了即将被访问的jsp文件,那么它会如何处理这个jsp文件呢?

 

先让我们来看下面一段配置片段:

<!--这段代码来自<Tomcat安装目录>\conf\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>
<servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.jspx</url-pattern>
</servlet-mapping>

 

很明显,这是配置了一个Servlet,该Servlet的名字是jsp,对应的Servlet类是JspServlet,匹配的url是“*.jsp、*.jspx”,即所有以“.jsp、*.jspx”结尾的请求全部交给JspServlet。

 

(我们假定这是首次访问first.jsp)

1、把jsp文件编译成Servlet源文件
JspServlet把first.jsp编译成一个名为first_jsp.java的Java源文件。
2、把Servlet源文件编译成class文件
Servlet引擎调用Java编译器把first_jsp.java编译成first_jsp.class文件
3、装载first_jsp.class文件并作出响应
//first_jsp.java和first_jsp.class文件所在的目录
<Tomcat安装目录>/work/Catalina/localhost/JspStudy/org/apache/jsp
 
 (我们假定这是第n次访问first.jsp,n >= 2)
因为不是首次访问,所以 first_jsp.java和first_jsp.class已存在。
1、检查first.jsp是否被修改
如果被修改过,则重新编译、生成 first_jsp.java和first_jsp.class,再执行下一步。
否则,直接执行下一步。
2、装载first_jsp.class,并作出响应。
 
补充:
1、总是检测jsp文件是否被修改而造成性能下降
解决方式:
<!--这段代码来自<Tomcat安装目录>\conf\web.xml-->
<servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <!--添加如下参数-->
        <init-param>
            <param-name>development</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
</servlet>
 
2、Tomcat如何判断jsp文件是否被修改过?
待更新。。。。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JspStudy集成JDK+tomcat+Apache+mysql,JSP环境配置一键启动。无需修改任何配置即可迅速搭建支持JSP的服务器运行环境。 纯绿色解压即可,支持系统服务和非服务两种启动方式,自由切换。控制面板更加有效直观地进行控制程序的启停。 JspStudy将复杂的JSP环境配置简单化。 JspStudy集成以下组件: JDK 1.7_45 Tomcat 7.0.47 MySQL 5.5.35 Apache 2.4.7 PHP 5.4.23&5.2.17 SQL-Front 5.1 Xdebug 2.2.3 mysql-connector-java-5.1.28-bin.jar jstl-1.2.jar MySQL数据库用户名:root,密码root,安装后请重新设置密码。自带mysql驱动mysql-connector-java-5.1.28-bin.jar放在tomcat/lib下。 『特别注意』 1. 为了减少出错安装路径不得有汉字、空格及特殊符号等;注册服务时如有防火墙拦截,请选择全部允许。 2. 端口问题无法启动时,请使用菜单『环境端口检测』进行端口检测。 3. 可通过菜单『卸载相关服务』进行卸载相关服务。 4. 在『启动』、『停止』、『重启』三个启停按钮上右键可以有选择地进行启停,左键将控制全部的启停。 5. 此为JSP环境集成包,需要php集成包的请到www.phpstudy.net下载phpStudy。 6. apache默认端口80,tomcat默认端口8080,mysql默认端口3306。 7. 默认php程序放在WWW/phproot下可解析;也可在高级设置里分开解析,即apche+php和tomcat+jsp。 8. mysql驱动mysql-connector-java无需再找,JspStudy已经集成。 系统服务和非服务启动的区别: 系统服务启动:开机就会启动,适合经常使用或做服务器,无需手工启动,服务会随开机而启动,好处程序运行稳定。 非服务启动:需要手动启动一下,适合偶尔经常使用一下。在不使用的情况不会启动相关进程,从而节省电脑的资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值