手动模拟Tomcat编译jsp文件
Tomcat编译jsp文件的配置路径是在%tomcat_home%/conf/web.xml中,有这样一段代码
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <!--强制编译 --> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping>
此段代码表示以.jsp结尾的文件都交给org.apache.jasper.servlet.JspServlet这个类执行。
JspServlet这个类的功能是将.jsp文件编译为.java文件。
下面就来手动编译jsp文件
1.导入jar包:jasper.jar;servlet-api.jar;el-api.jar;catalina-ant.jar;jasper-el.jar;jasper-jdt.jar;tomcat-juli.jar;jsp-api.jar;ant.jar 这些jar包在%tomcat_home%/lib/和%tomcat_home%/bin/中。
2.编译类是在jasper.jar中的org.apache.jasper.JspC这个类。
执行:java -cp jasper.jar;servlet-api.jar;el-api.jar;catalina-ant.jar;jasper-el.jar;jasper-jdt.jar;tomcat-juli.jar;jsp-api.jar org.apache.jasper.JspC > result.txt
实例:编译webapp目录下的所有.jsp文件。
java -cp jasper.jar;servlet-api.jar;el-api.jar;catalina-ant.jar;jasper-el.jar;jasper-jdt.jar;tomcat-juli.jar;jsp-api.jar;ant.jar org.apache.jasper.JspC -webapp webapp -uriroot webapp -compile -webxml web.xml -d classes -javaEncoding GBK -p com.miatc