`

手工编译jsp

    博客分类:
  • java
阅读更多

A java-classpath jasper.jar;servlet-api.jar;catalina.jar;F:\server\tomcat.6\bin\tomcat-juli.jar;ant.jar;jsp-

 

api.jar;jasper-el.jar;el-api.jar;jstl.jar;standard.jar;jasper-el.jar;jasper-jdt.jar org.apache.jasper.JspC  -

 

uriroot ./temp -d temp temp.jsp

JspC类在jasper.jar

运行上边的命令 因为用到jstl标签。所以有jstl.jar standard.jar.上边那些jar都是tomcat中的jar,另外需要个antjar

 

下边是tomcat源码TldLocationsCache.java中看到的,看不明白。估计需要这些jar,我只用了上边的A处的。

noTldJars = new HashSet<String>();

        // Bootstrap JARs

        noTldJars.add("bootstrap.jar");

        noTldJars.add("commons-daemon.jar");

        noTldJars.add("tomcat-juli.jar");

        // Main JARs

        noTldJars.add("annotations-api.jar");

        noTldJars.add("catalina.jar");

        noTldJars.add("catalina-ant.jar");

        noTldJars.add("catalina-ha.jar");

        noTldJars.add("catalina-tribes.jar");

        noTldJars.add("el-api.jar");

        noTldJars.add("jasper.jar");

        noTldJars.add("jasper-el.jar");

        noTldJars.add("jasper-jdt.jar");

        noTldJars.add("jsp-api.jar");

        noTldJars.add("servlet-api.jar");

        noTldJars.add("tomcat-coyote.jar");

        noTldJars.add("tomcat-dbcp.jar");

        // i18n JARs

        noTldJars.add("tomcat-i18n-en.jar");

        noTldJars.add("tomcat-i18n-es.jar");

        noTldJars.add("tomcat-i18n-fr.jar");

        noTldJars.add("tomcat-i18n-ja.jar");

        // Misc JARs not included with Tomcat

        noTldJars.add("ant.jar");

        noTldJars.add("commons-dbcp.jar");

        noTldJars.add("commons-beanutils.jar");

        noTldJars.add("commons-fileupload-1.0.jar");

        noTldJars.add("commons-pool.jar");

        noTldJars.add("commons-digester.jar");

        noTldJars.add("commons-logging.jar");

        noTldJars.add("commons-collections.jar");

        noTldJars.add("jmx.jar");

        noTldJars.add("jmx-tools.jar");

        noTldJars.add("xercesImpl.jar");

        noTldJars.add("xmlParserAPIs.jar");

        noTldJars.add("xml-apis.jar");

        // JARs from J2SE runtime

        noTldJars.add("sunjce_provider.jar");

        noTldJars.add("ldapsec.jar");

        noTldJars.add("localedata.jar");

        noTldJars.add("dnsns.jar");

        noTldJars.add("tools.jar"); j2eelib下的jar

        noTldJars.add("sunpkcs11.jar");

我的目录结构F:/server/tomcat.6/lib

F:/server/tomcat.6/lib/jspC.bat

F:/server/tomcat.6/lib/temp/temp.jsp

F:/server/tomcat.6/lib/temp/WEB-INF/web.xml 编译jstl的话需要用到web.xml.

F:/server/tomcat.6/lib/temp/c.tld 编译jstl的话需要用到c.tld,standard.jarMETA-INF目录中解压出来。

 

 

jspC.bat 就是上边A 的编译命令。

我在tomcat/lib 目录下编译

不用jstl的话。在temp目录中建立temp.jsp如下,运行上边命令。在temp目录下就生成了org.apache.jsp.temp_jsp.javaservlet原文件。

 

<%@page pageEncoding="utf-8"%>

<html>

    <head>hello</head>

    <body>

    </body>

</html>

 

需要编译包含jstljsp的话,需要用到web.xml

Temp.jsp改为如下

<%@page pageEncoding="utf-8"%>

<%@ taglib prefix="c" uri="c.tld"%>

<html>

    <head>hello</head>

    <body>

   

       <c:out value="helloWorld"></c:out>

    </body>

</html>

 

Web.xml中定义如下:刚发现dtdj2ee/lib/dtds中可以找到。

<!DOCTYPE web-app PUBLIC

    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

    "http://java.sun.com/dtd/web-app_2_3.dtd"> 

<web-app>

    <jsp-config>

   <taglib>

        <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>//uri就是c.tld中声明的uri

       <taglib-location>c.tld</taglib-location>就是temp目录下的c.tld

    如果是stardard.jar

     </taglib>

     </jsp-config>

</web-app>

如果是stardard.jar就是找jar包中就找下边这个路径。

"META-INF/taglib.tld";

运行上边A处命令可以编译。同样在temp.jsp中生成一个org.apache.jsp.temp_jsp.java文件.

如果运行出错:没有堆栈信息。或者提供信息不多。因为代码中没有e.printstacktract().我的办法是把tomcat源码下载下来 。手动加上e.printstacktract()

运行jspC.java文件。

jspC编译参数如下:可以运行改下上边A JspC –help列出编译应该是运行参数

protected static Log log = LogFactory.getLog(JspC.class);

 

    protected static final String SWITCH_VERBOSE = "-v";

    protected static final String SWITCH_HELP = "-help";

    protected static final String SWITCH_OUTPUT_DIR = "-d";

    protected static final String SWITCH_PACKAGE_NAME = "-p";

    protected static final String SWITCH_CACHE = "-cache";

    protected static final String SWITCH_CLASS_NAME = "-c";

    protected static final String SWITCH_FULL_STOP = "--";

    protected static final String SWITCH_COMPILE = "-compile";

    protected static final String SWITCH_SOURCE = "-source";

    protected static final String SWITCH_TARGET = "-target";

    protected static final String SWITCH_URI_BASE = "-uribase";

    protected static final String <span styl

分享到:
评论

相关推荐

    svn增量包工具

    但是有时候开发一个功能模块所涉及到的文件HTML,jsp,js,web,controller,service,mapper,mpper.xml等等很多文件,加入需要编译之后手工拷贝到一个文件夹下再一个一个的找到对应目录上传到服务器,(...这个过程即...

    JSP 汽车配件管理 论文 设计 开题报告 使用说明书 ppt

    今天我们使用计算机对汽车配件管理信息进行管理,具有手工管理所无法比拟的优点。通过这样的系统,可以做到信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量,有效地提高管理的工作效率。 本汽车配件...

    Java学习题答案

    知识很简单, 但从面试的角度看,被试者不仅要能知道它们的区别,而且要能比较准确地表达出来(以 后写文档要能让别人看得懂,不产生歧义),回答"jsp编译后就是servlet"视为错误,回答 "jsp用于视图,servlet用于...

    Java项目设计与开发范例

    在Windows 2000/xp中,单击“控制面板”→“添加硬件”,然后手工 安装“网络适配器”;厂商选择Microsoft,网卡选择Microsoft Loopback Adapter。其详细步 骤如8.5.2节所述。 &lt;br&gt; chapter9:第9章的编译...

    《MyEclipse 6 Java 开发中文教程》前10章

    3.2.13手工和自动编译 61 3.2.14直接粘贴Java源码为类文件 61 3.2.15复制项目中的文件 61 3.2.16断点和调试器 62 3.2.17快速加入、删除jar包到Build Path 63 3.2.18查看当前类被哪些类引用 63 3.2.19设置编辑器字体...

    java 面试题 总结

    (可以正确编译) 26、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回与参数最接近的长整数,参数加1/2后求其floor. 27、String s = new ...

    无垠式代码生成器最新功能与文档增强版0.7.22

    1)新增手工代码生成技术视频 2)新增登录示例 3)新增代码生成原理杂项文档 ===============0.7.18=========================== 本版是无垠式Java通用代码生成器官方中文版0.7.18 1)中文界面 2)中文提示信息 3)...

    超级有影响力霸气的Java面试题大全文档

    (可以正确编译) 29、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回与参数最接近的长整数,参数加1/2后求其floor. 30、String s = new ...

    PHP教程 初级教程

    解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。 - 更多特点 PHP的...

    VC++写的软件在线升级程序示例

    内容索引:VC/C++源码,网络相关,自动更新,在线升级 VC++写的软件在线升级(自动更新)程序示例,主程序是由VC++完成,为了使程序有...此动态页支持自动升级及手工升级,主程序代码可以自己修改,VC++部分编译顺利。

    phpStudy 2016.10.31 再次更新,支持自定义php版本

    系统服务启动:开机就会启动,适合经常使用或做服务器,无需手工启动,服务会随开机而启动,好处程序运行稳定。 非服务启动:需要手动启动一下,适合偶尔经常使用一下。在不使用的情况不会启动相关进程,从而节省...

    phpstudy-x64.zip

    系统服务启动:开机就会启动,适合经常使用或做服务器,无需手工启动,服务会随开机而启动,好处程序运行稳定。 非服务启动:需要手动启动一下,适合偶尔经常使用一下。在不使用的情况不会启动相关进程,从而节省...

    t淘淘商城项目 商城项目 视频和源码教程 详细

    Eclipse 4.5.0(Mars),自带maven插件,需要手工安装svn插件。 Maven 3.3.3(开发工具自带) Tomcat 7.0.53(Maven Tomcat Plugin) JDK 1.7 Mysql 5.6 Nginx 1.8.0 Redis 3.0.0 Win7 操作系统 SVN(版本...

    Web安全深度剖析(张柄帅)

    5.5.3 使用预编译语句 102 5.5.4 框架技术 103 5.5.5 存储过程 104 5.6 小结 105 第6章 上传漏洞 106 6.1 解析漏洞 106 6.1.1 IIS解析漏洞 106 6.1.2 Apache解析漏洞 109 6.1.3 PHP CGI解析漏洞 110 6.2 绕过上传...

    iuhyiuhkjh908u0980

    用Ant 来编译打包您的Anroid应用 ... 通过 activityCreator.py --out myproject your.package.name.ActivityName 命令可以生成一个project ,生成project下面有个bulid.xml 文件,那个东西就可以帮你打包生成了。 来...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。 - 更多特点 PHP的...

    网管教程 从入门到精通软件篇.txt

    网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令...JSP:HTML网页,其中包含有对一个Java servlet...

    软件工程-理论与实践(许家珆)习题答案

     ● 软件产品的成本非常昂贵,其开发方式目前尚未完全摆脱手工生产方式; ● 软件具有“复杂性”,其开发和运行常受到计算机系统的限制。 2. 软件发展有几个阶段?各有何特征? 答: ① 程序设计阶段。  硬件...

Global site tag (gtag.js) - Google Analytics