分享

Tomcat 6

 Baruch 2017-10-05

熟悉JAVA web开发的朋友都知道JSP会被转换成java文件(预编译),然后编译成class使用,即按照JSP-->java-->class的过程进行编译。

由于JVM只认识class文件,它不知道什么是JSP,因此在tomcat中 如何把JSP解析成java文件 就是本文所要描述的问题。

其他翻译内容参考:Tomcat官方文档翻译 

如有错误,请予指正。

什么是Jasper

Jasper是tomcat中使用的JSP引擎,在Tomcat 6中使用的是Jasper 2,相对于原来的版本作了不少的改进,比如:JSP的标签缓冲池、后台编译、页面改变时自动重新编译、Eclipse中JDT编译等等。

那么Jasper到底是做什么的呢?

简单的说,就是把JVM不认识的JSP文件解析成java文件,然后编译成class文件提供使用。目前有很多的JSP解析引擎,Tomcat中使用的是Jasper。

在Tomcat中可以通过配置 CATALINA_HOME/conf/web.xml 中的内容,配置Jasper的选项(web.xml中的内容很长,截取其中的一部分):

复制代码

jsporg.apache.jasper.servlet.JspServletforkfalsexpoweredByfalse3

复制代码

具体的参数,上面都有解释,这里就不多赘述了。

都是些调节JSP编译的参数,比如多长时间检测一次,debug的调试信息相关配置,编译信息等等。

如何利用Japser.Jspc自定义预编译JSP

1 jasper相关jar包

在tomcat6中提供了几个jasper的jar包,相对于之前版本,去掉了jasper-compiler.jar以及jasper-runtime.jar,合并为jasper.jar

另外如果开发者自己想要编译JSP,还需要使用ant以及tomcat-juli.jar。

2 ant相关jar包

其中ant相关的jar包可以去官网下载ant.zip,然后解压提取其中lib内的jar包。

3 tomcat-juli相关jar包

tomcat-juli.jar位于CATALINA_HOME/bin/目录下。

在Eclipse的构建路径下添加上述相关的jar包即可,然后创建测试类:

添加JAR包步骤:右键工程-->Properties-->Java Build Path-->Libraries-->Add External JARs-->选择添加的JAR包-->OK

复制代码

package com.test;import org.apache.jasper.JspC;public class testCompiler{public String jspcTest(){           String error="";  try {               JspC jspc = new JspC();  //第一种方式String[] arg0 = {"-uriroot", "F:/apache-tomcat-6.0.43/webapps/ROOT", "-d", "F:/test",                      "index.jsp" };              jspc.setArgs(arg0);              //第二种方式/*jspc.setUriroot("F:/apache-tomcat-6.0.43/webapps/ROOT");//web应用的root目录               jspc.setOutputDir("F:/test");//.java文件和.class文件的输出目录               jspc.setJspFiles("index.jsp");//要编译的jsp  */             jspc.setCompile(true);//是否编译 false或不指定的话只生成.java文件  jspc.execute();          }catch(Exception e){             error=e.toString();         }return error;       }public static void main(String args[]){           testCompiler t=new testCompiler();           System.out.println(t.jspcTest());       }   }

复制代码

可以使用两种方式进行自定义的JSP编译。

测试后,可以在 F:/test 目录下发现编译出的index.jsp的java文件以及class文件。

参考

【1】Jasper2 JSP引擎:http://tomcat./tomcat-6.0-doc/jasper-howto.html

【2】解读JSP解析过程:http://www.cnblogs.com/zollty/p/3309310.html

【3】使用Jspc编译JSP文件:http://kjah./blog/625588

【4】 tomcat官方文档翻译:http://www.cnblogs.com/xing901022/p/4412469.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约