参考:
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里,想偷个懒啊。。。
分享到:
相关推荐
3. **Jasper**:Jasper是Tomcat中的JSP编译器,它将JSP页面转换为Java源代码,然后编译成Servlet。JSP的动态内容通过这些Servlet来生成。 4. **Connector**:连接器组件,用于接收和发送网络通信。Tomcat可以配置多...
**JSP编译过程**: 1. **解析阶段**:当JSP页面被请求时,服务器会将JSP页面转换为一个Java源代码文件(默认扩展名为`.java`)。这个过程是由JSP引擎完成的,jasper-runtime.jar就提供了这个功能。 2. **编译阶段**...
Jasper是Tomcat服务器中用于处理JSP的引擎,它负责JSP文件的编译和运行。自动检测机制主要依赖于后台线程定期检查JSP文件和对应的编译后class文件的最后修改时间(last modified)。如果两者时间相同,说明JSP文件未...
2. **Jasper**:Jasper是Tomcat中的JSP引擎,用于将JSP页面转换为Servlet源码,并编译成可执行的Java类。 3. ** Coyote**:Coyote是Tomcat的HTTP/HTTPS连接器,负责接收和响应HTTP请求。它处理网络I/O,与Catalina...
5. **JSP编译与执行** Jasper组件将JSP文件编译为Java类,这个过程发生在第一次请求JSP时。然后,Tomcat会像对待普通Servlet一样加载和执行这个类。 6. **连接器(Connector)与协议处理** Tomcat支持多种连接器...
3. **Jasper**:Jasper是Tomcat处理JSP的组件,它将JSP文件转换为Java源代码,再编译成字节码执行。Jasper的工作流程包括预编译、编译、加载和执行四个阶段,对于理解JSP的生命周期和执行过程具有重要意义。 4. **...
Catalina负责管理Web应用程序,Jasper处理JSP文件的编译和执行,Coyote处理网络通信,而Juli则提供详细的日志记录。 2. **Catalina组件** - **Container**:Tomcat中的每个组件都是一个Container,负责处理请求并...
8. **JSP编译和优化**:Jasper引擎的工作流程,包括JSP的预编译、错误处理和动态类生成。 9. **配置解析**:解析server.xml等配置文件的过程,以及如何通过源码扩展和自定义配置。 10. **内存管理和垃圾回收**:...
Tomcat7是一款广泛使用的开源Java Servlet容器,它实现了Java EE中的Servlet和JSP规范。源码分析是提升开发者对服务器内部运作机制理解的重要途径,尤其对于Tomcat这样的核心组件,源码的学习能够帮助我们更深入地...
Jasper处理JSP的生命周期,包括预编译、加载和执行。 4. **JNDI**:Java Naming and Directory Interface,提供了一个统一的方式来访问各种命名和目录服务,如数据库连接池。 5. **Cluster**:如果需要在多个...
Catalina负责处理Servlet和JSP的生命周期,Coyote处理网络通信,Jasper负责JSP的编译和执行,而Commons则包含一系列可重用的非特定于Servlet API的组件。 三、Catalina组件 Catalina是Tomcat的核心,它通过Context...
4. **JSP编译与执行** Jasper是Tomcat内置的JSP引擎,负责将JSP文件编译成Java源码,再编译成字节码,最后由Java虚拟机执行。JSP的生命周期与Servlet相似,但JSP的代码生成和编译过程在运行时完成。 5. **连接器...
`org.apache.jasper`包下的类主要处理JSP的解析、编译和执行过程。 4. ** Juli**:Tomcat的日志系统,允许自定义日志记录策略。`org.apache.juli`包下的类提供了灵活的日志记录功能。 5. ** Cluster**:如果需要在...
4. **JSP编译过程**:Jasper如何读取JSP文件,生成Java源代码,编译并加载到内存,以及错误处理机制。 5. **安全管理**:Tomcat如何配置和应用角色、权限,实现基于角色的访问控制(RBAC)。 6. **Session管理**:...
Catalina处理Servlet和JSP的生命周期管理,Jasper负责JSP编译,Coyote处理HTTP连接,而Commons提供了通用工具类。 2. **目录结构**: - `bin`:包含了启动和停止Tomcat的脚本。 - `conf`:配置文件,如server.xml...
Catalina处理Servlet容器的核心功能,Jasper负责JSP编译,Juli是日志系统,Coyote处理HTTP连接,Commons提供通用工具类。 2. **生命周期管理** Tomcat中的每个组件都有一个生命周期,包括初始化、启动、暂停、重新...
6. **JSP编译与执行**:研究Jasper引擎如何将JSP页面转换为Servlet,并执行生成的Java代码。 7. **安全性**:学习Tomcat的安全配置,包括角色、权限和认证机制,以及如何配置SSL/TLS来保护通信。 8. **部署与热...
4. **JSP编译与执行** Jasper负责JSP的编译过程,将JSP文件转换为Java源代码,再编译成字节码,最后生成Servlet。当JSP首次被请求或者JSP文件修改后,Jasper会执行这个过程。 5. **线程模型** Tomcat使用线程池来...
2. **Jasper**:Tomcat使用Jasper来解析和编译JSP文件。在源码的`jasper`目录下,`org.apache.jasper`包包含JSP引擎的实现。JSP文件被转换为Servlet源码,然后通过Java编译器编译为.class文件,最后由Catalina执行。...