實戰jsp預編譯,充分享受jsp預編譯的好處!

jsp預編譯有如下好處:html

1.省去第一次運行jsp時的編譯所花費的時間,實現servlet同樣,一步到位的運行。java

2.有效的保護源代碼,在產品發佈的時候只須要提供依據編譯好的class文件,不須要提供jsp源文件,對保護jsp源代碼有好處,雖然class文件沒有混淆,可是不多人願意手工去把預編譯jsp產生的class文件還原爲jsp(目前還沒發現有自動還原爲jsp的工具)。web

可是,也注意,若是爲了享受第二個好處,那麼也就注意,你須要爲不一樣的servlet容器進行不一樣的預編譯。apache

好比tomcat的是org.apache.jasper.JspC,而Weblogic的是weblogic.jspctomcat

用Tomcat進行預編譯的ant腳本以下:app

build.properties的內容爲:webapp

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

build.xml的內容爲:工具

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

    <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

相關文章
相關標籤/搜索