博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实战jsp预编译,充分享受jsp预编译的好处!
阅读量:6606 次
发布时间:2019-06-24

本文共 2652 字,大约阅读时间需要 8 分钟。

  hot3.png

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" failοnerrοr="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预编译。

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

Jasper 2 JSP Engine How To

Web Application Compilation:

jspc Task:

weblogic中使用ant预编译jsp文件

转载于:https://my.oschina.net/jsan/blog/39885

你可能感兴趣的文章
ElasticSearch+Solr几个案例笔记
查看>>
程序中的@Override是什么意思?
查看>>
CentOS 编译安装Apache2.4 PHP5.6.30 Mysql5.6.16
查看>>
Visual SourceSafe 入门教学
查看>>
express 4.0以上的版本 express找不到的问题
查看>>
commons-lang中常用方法
查看>>
spring 定时任务
查看>>
thinkphp 路由规则终极详解(附伪静态)
查看>>
网络安全-加密算法
查看>>
This tag and its children can be replaced by ~~~
查看>>
XCode快捷键
查看>>
struts2 修改action的后缀
查看>>
php保存canvas生成的图片
查看>>
HTML5 定位
查看>>
禁止http 缓存的方法
查看>>
python windows下安装pip(三)
查看>>
Android图像处理(二)--Paint,Canvas,ColorMatrix详细
查看>>
Android 百度地图
查看>>
常见设计模式之【模板模式】
查看>>
Kolla - 使用docker安装部署openstack
查看>>