`

Tomcat中JSP预编译处理Jasper 2 JSP Engine

阅读更多

参考:

The Apache Jakarta Tomcat 5.5 Servlet/JSP Container Jasper 2 JSP Engine How To

http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jasper-howto.html

jspc

http://ant.apache.org/manual/OptionalTasks/jspc.html

用Tomcat进行预编译的ant脚本如下:

build.properties的内容为:

tomcat.home=E:/OpenSource/Tomcat
webapp.name=webappname
webapp.path=E:/JavaProject/webappname

build.xml的内容为:

<!----><!----><?xml version="1.0" encoding="GBK"?>
<project name="WebApp Precompilation JSP to Java to Class to Jar" basedir="." default="help">
 <property file="build.properties"/>
 <target name="all" depends="jsp2java,java2class,class2jar,clear"/>
 <target name="help">
  <echo message="显示功能列表"/>
  <echo message="jsp2java  通过JspC将JSP转换成Java源代码"/>
  <echo message="java2class 将转换后的Java源代码进行编译成class文件"/>
  <echo message="class2jar 将编译后的class文件打包"/>
  <echo message="clear  清理现场"/>
 </target>
 <target name="jsp2java">
  <taskdef classname="org.apache.jasper.JspC" name="jsp2java">
   <classpath id="jsp2java.classpath">
    <fileset dir="${tomcat.home}/bin">
     <include name="*.jar"/>
    </fileset>
    <fileset dir="${tomcat.home}/server/lib">
     <include name="*.jar"/>
    </fileset>
    <fileset dir="${tomcat.home}/common/lib">
     <include name="*.jar"/>
    </fileset>
   </classpath>
  </taskdef>
  <!-- 注意JSP文件要设置为UTF-8编码 -->
  <jsp2java classpath="jsp2java.classpath" javaEncoding="UTF-8" validateXml="false" uriroot="${webapp.path}" webXmlFragment="${webapp.path}/WEB-INF/webJSP.xml" outputDir="${webapp.path}/WEB-INF/JspC/src"/>
 </target>
 <target name="java2class">
  <mkdir dir="${webapp.path}/WEB-INF/JspC/classes"/>
  <!-- 同样Java文件要设置为UTF-8编码 -->
  <javac srcdir="${webapp.path}/WEB-INF/JspC/src" destdir="${webapp.path}/WEB-INF/JspC/classes" encoding="UTF-8" optimize="off" debug="on" failonerror="false" excludes="**/*.smap">
   <classpath id="java2class.classpath">
    <pathelement location="${webapp.path}/WEB-INF/classes"/>
    <fileset dir="${webapp.path}/WEB-INF/lib">
     <include name="*.jar"/>
    </fileset>
    <pathelement location="${tomcat.home}/common/classes"/>
    <fileset dir="${tomcat.home}/common/lib">
     <include name="*.jar"/>
    </fileset>
    <pathelement location="${tomcat.home}/shared/classes"/>
    <fileset dir="${tomcat.home}/shared/lib">
     <include name="*.jar"/>
    </fileset>
    <fileset dir="${tomcat.home}/bin">
     <include name="*.jar"/>
    </fileset>
   </classpath>
   <include name="**"/>
   <exclude name="tags/**" />
  </javac>
 </target>
 <target name="class2jar">
  <mkdir dir="${webapp.path}/WEB-INF/lib"/>
  <jar basedir="${webapp.path}/WEB-INF/JspC/classes" jarfile="${webapp.path}/WEB-INF/lib/${webapp.name}JSP.jar"/>
 </target>
 <target name="clear">
  <delete dir="${webapp.path}/WEB-INF/JspC/classes"/>
  <delete dir="${webapp.path}/WEB-INF/JspC/src"/>
  <delete dir="${webapp.path}/WEB-INF/JspC"/>
 </target>
</project>

只需要设置好Ant的path环境变量,然后修改build.properties。执行ant all命令即可。
生成好的jar文件是{$webappname}JSP.jar。
在做为产品发布的时候,只需要你的类jar包和JSP预编译的包放到WEB-INF\lib\目录下即可,如${webappname}.jar和JSP预编译的包${webappname}JSP.jar;
然后删除掉你的所有的预编过的JSP源文件;
并且${webapp.path}/WEB-INF/webJSP.xml里的servlet映射,添加到${webapp.path}/WEB-INF/web.xml中。

这里有个问题,不知道有没有办法帮我们直接添加到我们已经存在的web.xml里,想偷个懒啊。。。

分享到:
评论
1 楼 deepthink 2008-04-13  

我已经能够使用JspC进行编译了,但是我还想对JSP的编译过程进行更加细微的控制,就只能自己写代码实现了吗?难道tomcat使用的编译器不属于一个独立的项目吗?

相关推荐

    apache-tomcat5 jsp web服务器

    3. **Jasper**:Jasper是Tomcat中的JSP编译器,它将JSP页面转换为Java源代码,然后编译成Servlet。JSP的动态内容通过这些Servlet来生成。 4. **Connector**:连接器组件,用于接收和发送网络通信。Tomcat可以配置多...

    jasper-runtime.jar

    **JSP编译过程**: 1. **解析阶段**:当JSP页面被请求时,服务器会将JSP页面转换为一个Java源代码文件(默认扩展名为`.java`)。这个过程是由JSP引擎完成的,jasper-runtime.jar就提供了这个功能。 2. **编译阶段**...

    jsp 自动编译机制详细介绍

    Jasper是Tomcat服务器中用于处理JSP的引擎,它负责JSP文件的编译和运行。自动检测机制主要依赖于后台线程定期检查JSP文件和对应的编译后class文件的最后修改时间(last modified)。如果两者时间相同,说明JSP文件未...

    tomcat源码基于6.0

    2. **Jasper**:Jasper是Tomcat中的JSP引擎,用于将JSP页面转换为Servlet源码,并编译成可执行的Java类。 3. ** Coyote**:Coyote是Tomcat的HTTP/HTTPS连接器,负责接收和响应HTTP请求。它处理网络I/O,与Catalina...

    tomcat源码

    5. **JSP编译与执行** Jasper组件将JSP文件编译为Java类,这个过程发生在第一次请求JSP时。然后,Tomcat会像对待普通Servlet一样加载和执行这个类。 6. **连接器(Connector)与协议处理** Tomcat支持多种连接器...

    tomcat7源代码

    3. **Jasper**:Jasper是Tomcat处理JSP的组件,它将JSP文件转换为Java源代码,再编译成字节码执行。Jasper的工作流程包括预编译、编译、加载和执行四个阶段,对于理解JSP的生命周期和执行过程具有重要意义。 4. **...

    tomcat8源码

    Catalina负责管理Web应用程序,Jasper处理JSP文件的编译和执行,Coyote处理网络通信,而Juli则提供详细的日志记录。 2. **Catalina组件** - **Container**:Tomcat中的每个组件都是一个Container,负责处理请求并...

    tomcat6.0的源代码

    8. **JSP编译和优化**:Jasper引擎的工作流程,包括JSP的预编译、错误处理和动态类生成。 9. **配置解析**:解析server.xml等配置文件的过程,以及如何通过源码扩展和自定义配置。 10. **内存管理和垃圾回收**:...

    tomcat7源码

    Tomcat7是一款广泛使用的开源Java Servlet容器,它实现了Java EE中的Servlet和JSP规范。源码分析是提升开发者对服务器内部运作机制理解的重要途径,尤其对于Tomcat这样的核心组件,源码的学习能够帮助我们更深入地...

    tomcat源码+文档pdf+源码解析

    Jasper处理JSP的生命周期,包括预编译、加载和执行。 4. **JNDI**:Java Naming and Directory Interface,提供了一个统一的方式来访问各种命名和目录服务,如数据库连接池。 5. **Cluster**:如果需要在多个...

    Tomcat-4.1.31.rar

    Catalina负责处理Servlet和JSP的生命周期,Coyote处理网络通信,Jasper负责JSP的编译和执行,而Commons则包含一系列可重用的非特定于Servlet API的组件。 三、Catalina组件 Catalina是Tomcat的核心,它通过Context...

    HowTomcatWork 源代码

    4. **JSP编译与执行** Jasper是Tomcat内置的JSP引擎,负责将JSP文件编译成Java源码,再编译成字节码,最后由Java虚拟机执行。JSP的生命周期与Servlet相似,但JSP的代码生成和编译过程在运行时完成。 5. **连接器...

    Tomcat源码apache-tomcat-8.5.47-src.zip

    `org.apache.jasper`包下的类主要处理JSP的解析、编译和执行过程。 4. ** Juli**:Tomcat的日志系统,允许自定义日志记录策略。`org.apache.juli`包下的类提供了灵活的日志记录功能。 5. ** Cluster**:如果需要在...

    tomcat-7.0.90-src-源码

    4. **JSP编译过程**:Jasper如何读取JSP文件,生成Java源代码,编译并加载到内存,以及错误处理机制。 5. **安全管理**:Tomcat如何配置和应用角色、权限,实现基于角色的访问控制(RBAC)。 6. **Session管理**:...

    apache tomcat6.0 源代码

    Catalina处理Servlet和JSP的生命周期管理,Jasper负责JSP编译,Coyote处理HTTP连接,而Commons提供了通用工具类。 2. **目录结构**: - `bin`:包含了启动和停止Tomcat的脚本。 - `conf`:配置文件,如server.xml...

    tomcat7 源码

    Catalina处理Servlet容器的核心功能,Jasper负责JSP编译,Juli是日志系统,Coyote处理HTTP连接,Commons提供通用工具类。 2. **生命周期管理** Tomcat中的每个组件都有一个生命周期,包括初始化、启动、暂停、重新...

    Tomcat服务器开发源码

    6. **JSP编译与执行**:研究Jasper引擎如何将JSP页面转换为Servlet,并执行生成的Java代码。 7. **安全性**:学习Tomcat的安全配置,包括角色、权限和认证机制,以及如何配置SSL/TLS来保护通信。 8. **部署与热...

    HowTomcatWorks-master.zip

    4. **JSP编译与执行** Jasper负责JSP的编译过程,将JSP文件转换为Java源代码,再编译成字节码,最后生成Servlet。当JSP首次被请求或者JSP文件修改后,Jasper会执行这个过程。 5. **线程模型** Tomcat使用线程池来...

    apache-tomcat-7.0.59,apache-tomcat-7.0.69 源码

    2. **Jasper**:Tomcat使用Jasper来解析和编译JSP文件。在源码的`jasper`目录下,`org.apache.jasper`包包含JSP引擎的实现。JSP文件被转换为Servlet源码,然后通过Java编译器编译为.class文件,最后由Catalina执行。...

Global site tag (gtag.js) - Google Analytics