`

实战jsp预编译,充分享受jsp预编译的好处!

阅读更多

jsp预编译有以下好处:

1.省去第一次运行jsp时的编译所花费的时间,实现servlet一样,一步到位的运行。

2.有效的保护源代码,在产品发布的时候只需要提供依据编译好的class文件,不需要提供jsp源文件,对保护jsp源代码有好处,虽然class文件没有混淆,但是很少人愿意手工去把预编译jsp产生的class文件还原为jsp(目前还没发现有自动还原为jsp的工具)。

但是,也注意,如果为了享受第二个好处,那么也就注意,你需要为不同的servlet容器进行不同的预编译。

比如tomcat的是org.apache.jasper.JspC,而Weblogic的是weblogic.jspc

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

build.properties的内容为:

tomcat.home=D:/jakarta-tomcat-5.5.9
webapp.path=E:/lizongbo/mywebapp

build.xml的内容为:

<project name="Webapp Precompilation" default="all" basedir="."> 
<property file="build.properties"/>
  <target name="jspc">

    <taskdef classname="org.apache.jasper.JspC" name="jasper2" > 
      <classpath id="jspc.classpath"> 
        <pathelement location="${java.home}/../lib/tools.jar"/> 
        <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>

    <jasper2 javaEncoding="UTF-8"
             validateXml="false" 
             uriroot="${webapp.path}" 
             webXmlFragment="${webapp.path}/WEB-INF/generated_web.xml" 
             outputDir="${webapp.path}/WEB-INF/src" />

  </target>

  <target name="compile">

    <mkdir dir="${webapp.path}/WEB-INF/classes"/>
    <mkdir dir="${webapp.path}/WEB-INF/lib"/>

    <javac destdir="${webapp.path}/WEB-INF/classes"
           optimize="of"
           encoding="UTF-8"
           debug="on" failonerror="false"
           srcdir="${webapp.path}/WEB-INF/src" 
    excludes="**/*.smap">
      <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>
<jar jarfile="${webapp.path}/WEB-INF/lib/lizongbo.jar" basedir="${webapp.path}/WEB-INF/classes"/>
  </target>
  <target name="all" depends="jspc,compile">
  </target>

</project>

 

只需要设置好ant的path环境变量,然后修改build.properties。执行ant命令即可。

生成好的jar文件是lizongbo.jar。

在做为产品发布的时候,还需要清除掉${webapp.path}/WEB-INF/classes下的class文件,并且把

${webapp.path}/WEB-INF/generated_web.xml里的servlet映射,添加到${webapp.path}/WEB-INF/web.xml中。

然后就可以删除所有预编过的jsp了。

Tomcat 5.5.9中的admin 模块就是通过jsp预编译打包为catalina-admin.jar的。

D:\jakarta-tomcat-5.5.9\server\webapps\下的几个web应用,都是使用了jsp预编译。

http://www.apache.org/dist/jakarta/tomcat-5/v5.5.9/bin/jakarta-tomcat-5.5.9-admin.zip

 

参考以下连接,将对你可能遇到的问题有帮助:

遇到 "unmappable character for encoding GBK" 的解决。


http://www.donews.net/lizongbo/archive/2005/05/14/379810.aspx

Jasper 2 JSP Engine How To

Web Application Compilation:

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

jspc Task:

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

weblogic中使用ant预编译jsp文件

http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=17465&messageID=136608

http://www.knowsky.com/2881.html

分享到:
评论

相关推荐

    基于weblogic的jsp预编译代码示例

    在部署配置中,确保WebLogic知道已经预编译过的JSP文件,这样服务器在启动时就会直接加载预编译的Servlet,而不会尝试重新编译JSP。 五、优化与注意事项 - 预编译可能会增加磁盘空间的占用,因为每个JSP都会生成一...

    JSP预编译和打包成jar

    预编译JSP可以减少应用程序启动时的解析时间,而将JSP打包成JAR文件则有利于资源的集中管理和部署。 首先,让我们了解**JSP预编译**的概念。JSP在第一次被请求时会被Web容器转换为Servlet(Java类),然后编译为...

    服务器启动后的jsp预编译和验证

    不是当预编译jsp时等待WLS启动,而是在服务器启动后运行此实用程序。它还检查jsp并告知哪些不能通过编译。 您可以在编辑jsp时不断运行此程序。本程序还关注受限制的页面 (路径),允许为其指定密码。目前针对基于...

    将jsp生成java然后反编译为class然后打入jar

    当我们在服务器上运行一个JSP文件时,服务器会将其转换成一个Servlet(Java类),然后编译为.class文件,这个过程被称为JSP编译。下面我们将详细探讨这一过程以及如何将生成的Java类反编译为.class文件并打包到.jar...

    手工编译jsp

    【手工编译jsp】是一个关于Java Web开发中的特殊主题,主要涉及如何在没有使用Web容器(如Tomcat、Jetty等)的情况下,直接对JSP(JavaServer Pages)页面进行预编译为Java类的过程。这个过程对于理解JSP的工作原理...

    把jsp编译打包成jar

    标题“把jsp编译打包成jar”涉及的主要知识点包括: 1. **JSP到Servlet的转换**:JSP在运行时会被Web容器(如Tomcat)自动转换为Servlet。这个过程称为JSP的编译阶段。JSP页面的每行代码都会被转换为Servlet的相应...

    Tomcat的jsp编译参数

    【标题】"Tomcat的JSP编译参数" 在Java Web开发中,Tomcat服务器扮演着重要的角色,尤其是对于处理JSP(JavaServer Pages)页面。JSP是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,从而实现动态...

    通过JSP的预编译消除性能瓶颈

    欢迎来到“管理角”这个... JSP预编译的必要性 本月的文章着眼于移除潜在的系统性能瓶颈,它通过解决一个最普通的问题――在服务器运行时间中的JSP (JavaServer Page)编译的系统开销问题,这个问题困扰着几乎所有的J2E

    jsp批量编译为class文件

    将jsp批量转换为class文件. 运行命令 java -jar jspcp.jar "路径1" "路径2" 路径1:webapp路径,一定是WEB-INF目录的父目录 路径2:编译后的java和class文件存储路径 路径如果有空格,一定用""包裹

    jsp与Servlet的编译原理、过程、区别及使用

    这将导致编译错误,因为字符串中的`%&gt;`被视为未关闭的字符常量。为了避免这种情况,开发人员需要在字符串中转义 `%` 字符,如 `"%&gt;`。 Servlet,另一方面,是一种服务器端的Java程序,它被设计用来扩展Web服务器的...

    jsp页面加载时提示loading

    10. **JSP预编译**:默认情况下,JSP页面在首次请求时会被编译成Servlet。如果项目中有很多JSP页面,这可能导致首次访问时加载较慢。开启JSP的预编译功能可以提前处理这个过程,提升首次加载速度。 综上所述,解决...

    让webshere(was)发布程序编译jsp为java文件,java文件位置

    标题 "让WebSphere (WAS) 发布程序编译JSP为Java文件,Java文件位置" 暗示了在IBM WebSphere Application Server (WAS) 中如何配置以查看或控制JSP编译过程,以及生成的Java源文件的位置。在Web应用程序的开发和调试...

    JSP中小型案例开发实战

    《JSP中小型案例开发实战》是一本专注于使用JavaServer Pages(JSP)技术进行实际项目开发的指南。这本书旨在帮助读者掌握如何运用JSP解决实际的业务问题,从而实现高效、经济的软件开发。JSP作为Java平台上的动态...

    韩顺平j2ee视频实战教程jsp源码时尚购物网站 全文源码

    《韩顺平j2EE视频实战教程:JSP源码时尚购物网站》是一套全面讲解J2EE技术在实际开发中的应用的教程。本教程由知名讲师韩顺平主讲,旨在通过实战案例帮助学员深入理解和掌握J2EE平台的核心技术,特别是JSP在构建动态...

    JSP网站建设实例教程

    JSP最终会被编译成Servlet,Servlet是JSP的后台处理引擎,负责处理请求和生成响应。 **十、实战项目** 《使用JSP建设动态网站教程》中的实例将覆盖以上知识点,通过实际操作教你如何利用JSP搭建功能完善的网站,...

    java动态编译 ,写了一个jsp在页面上编辑java代码,然后servlet动态编译并执行main方法

    在给定的场景中,用户通过一个网页上的JSP(Java Server Pages)来编辑Java源代码,然后这个代码被发送到服务器端,由Servlet处理动态编译和执行的过程。 首先,我们需要了解JSP的作用。JSP是Java Web开发的一种...

    JSP编译后的JAVA文件index_jsp.java

    JSP编译后的JAVA文件

    jsp+servlet+mysql体育场预约系统

    数据库连接通常在Servlet中建立,通过预编译的PreparedStatement对象执行SQL命令,以防止SQL注入攻击。 4. **开发环境**: 开发者使用Eclipse作为集成开发环境(IDE),它提供了编写、调试和运行Java Web应用的...

    JSP项目JSP项目JSP项目

    5. **安全性**: 防止SQL注入、XSS攻击等,通过验证用户输入、使用预编译的SQL语句等手段确保应用安全。 6. **性能优化**: 通过缓存、减少不必要的数据库查询、优化JSP代码等手段提升系统性能。 7. **版本控制与...

    JSP编译过程.vsdx

    JSP编译过程.vsdx

Global site tag (gtag.js) - Google Analytics