如何访问jar包中的jsp页面

java_web_hack3 2012-03-15 09:35:58
jsp页面已经打包成jar了,包括js,css样式,全都打包了。

请问,如何访问。

在线急求啊。。

感谢。。
...全文
2457 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
matrix1984 2014-08-13
  • 打赏
  • 举报
回复
这帖子过去那么久了啊,还是回下吧,最近也才知道:) 资源文件是放在jar/META-INF/resources的话,跟访问webapp里的非java文件一样。 比如,有一个jsp放在:webapp/jsp/A.jsp,发布后假设是这么访问的:http://localhost:8080/myapp/jsp/A.jsp; 同时,webapp/lib下有一个a.jar,里头有一个B.jsp,路径为:a.jar!/META-INF/resources/jsp/B.jsp,那么访问B.jsp是这样的: http://localhost:8080/myapp/jsp/B.jsp
benlaten 2014-08-01
  • 打赏
  • 举报
回复
8楼的想法很新颖,用自定义标签,把资源文件输出通过IO读出来输出到页面,不知道会性能怎么样。大胆创新也是好的。
立心 2014-07-30
  • 打赏
  • 举报
回复
我们现在也在处理类似的问题,有些界面和功能是普遍存在使用的,想要通过jar的形式重复利用,但是怎么打包,怎么重复利用嗯?
zhanshaofu 2014-05-10
  • 打赏
  • 举报
回复
引用 13 楼 s478853630 的回复:
[Quote=引用 12 楼 的回复:] 那你们项目管理也太烂了…… [/Quote] 好吧,我们管理烂,你们都是好的 烂不烂且不管,只要给工资才是硬道理 你觉得没必要,人家觉得有必要,难道你要把你的看法强加给别人! 我认为楼主的这个想法不错,所以支持他
顶你,好像很不错的样子,我也碰到过这个问题,当时不知道怎么解决~
星川君 2014-05-09
  • 打赏
  • 举报
回复
引入的时候<z: contextPath>自定义标签吗?
killson 2012-12-28
  • 打赏
  • 举报
回复
同问,同问!!!
wzn649240 2012-12-28
  • 打赏
  • 举报
回复
引用 13 楼 s478853630 的回复:
引用 12 楼 的回复:那你们项目管理也太烂了…… 好吧,我们管理烂,你们都是好的 烂不烂且不管,只要给工资才是硬道理 你觉得没必要,人家觉得有必要,难道你要把你的看法强加给别人! 我认为楼主的这个想法不错,所以支持他
哥们我默默的挺你,技术再好,管理再强,思想层次上不去,这种人多着呢。
s478853630 2012-10-24
  • 打赏
  • 举报
回复
我说的不容更改是相对的,不是绝对的,如果你强行把jar解压开来,改了再打包,那还能说啥!
比如说,你可以把spring的jar解压开,把里面的class都copy到 WEB-INF\classes\ 目录下,项目照样能跑,但一般没人这么做!
在多人开发同一项目时,会出现有人误删误改公共文件的现象,打成jar正好可以防止这个现象的发生!

至于必要性,就得看情况了,公说公有理,婆说婆有理!

代价太高,未必吧!你想一想,所有文件都是部署在服务器的,都是服务器资源,只要用户访问,就必须有一个下载的过程,不管是jar,还是静态资源。浏览器中的【删除临时文件】的按钮可不是用来看看的!
s478853630 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

那你们项目管理也太烂了……
[/Quote]

好吧,我们管理烂,你们都是好的

烂不烂且不管,只要给工资才是硬道理

你觉得没必要,人家觉得有必要,难道你要把你的看法强加给别人!

我认为楼主的这个想法不错,所以支持他



xuhesheng 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
我说的不容更改是相对的,不是绝对的,如果你强行把jar解压开来,改了再打包,那还能说啥!
比如说,你可以把spring的jar解压开,把里面的class都copy到 WEB-INF\classes\ 目录下,项目照样能跑,但一般没人这么做!
在多人开发同一项目时,会出现有人误删误改公共文件的现象,打成jar正好可以防止这个现象的发生!

至于必要性,就得看情况了,公说公有理,婆说婆有理!
……
[/Quote]
那你们项目管理也太烂了
公共资源都是会放在指定的目录下的
使用和调用都是使用公共的模板路径的
公共资源不会被随意删除和新增,甚至修改,除非PM批准
你放到jar里也一样
还不如放到svn中去....


在项目中访问css和图片等资源的时候
我个人觉得没必要进行打包
可以部署一个资源服务器,然后所有的资源文件都按照指定的格式和路径进行访问
ldq67123 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

页面调用:
<script type="text/javascript" src="<z:contextPath/>/zl/framework/res/js/public.js.php"></script>

这里就是引用了jar的js文件,.php只是访问servlet的一个后缀,
public.js才是jar中真正的js文件,
这种方式在我们公司已经广泛使用,因为打成jar包的文件……
[/Quote]
“打成jar包的文件是不容更改的”这个说法有待考证,jar也是使用zip格式打包
使用servlet访问jar中的css、js资源是否真的必要?首先在server端的文件访问缓存就需要自己实现了,代价太高
相应的,似乎也不过提高一点点静态资源被篡改的门槛,
s478853630 2012-10-23
  • 打赏
  • 举报
回复
页面调用:
<script type="text/javascript" src="<z:contextPath/>/zl/framework/res/js/public.js.php"></script>

这里就是引用了jar的js文件,.php只是访问servlet的一个后缀,
public.js才是jar中真正的js文件,
这种方式在我们公司已经广泛使用,因为打成jar包的文件是不容更改的!

<img src="<z:contextPath/>/zl/framework/res/images/tree/info.gif.php"/>
这样写了,页面就能显示jar包中的图片,

举一反三,任何文件都是这个道理!
s478853630 2012-10-23
  • 打赏
  • 举报
回复
写个servlet,通过url来访问,
用过dwr没,dwr就是把核心js文件打在jar包中,然后你页面引用(实际上是通过url访问到了servlet)就OK了!
其实任何文件都可以打成jar包,任然都是可用的,看代码:

// 访问js文件的操作
private void jsAction(String url, HttpServletRequest request, HttpServletResponse response) throws Exception {
String fileUri = url.substring(0, url.lastIndexOf("."));
InputStream input = this.getClass().getResourceAsStream(fileUri);
if (null == input) {
throw new FrameworkException("找不到[" + fileUri + "]这个js文件");
}
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
PrintWriter out = response.getWriter();
response.setContentType("text/javascript;charset=UTF-8");
String line = null;
while ((line = reader.readLine()) != null) {
if (line.indexOf("getV(\"hdfPath\")") != -1) {
line = line.replace("getV(\"hdfPath\")", "\"" + request.getContextPath() + "\"");
}
if (line.indexOf("getV('hdfPath')") != -1) {
line = line.replace("getV('hdfPath')", "'" + request.getContextPath() + "'");
}
if (line.indexOf("${suffix}") != -1) {
line = line.replace("${suffix}", url.substring(url.lastIndexOf(".") + 1, url.length()));
}
out.println(line);
}
reader.close();
out.close();
out.flush();
input.close();
}

// 访问图片或flash的操作
private void imgAction(String url, HttpServletResponse response) throws Exception {
InputStream input =null;
OutputStream output = null;
try {
String fileUri = url.substring(0, url.lastIndexOf("."));
input = this.getClass().getResourceAsStream(fileUri);
if (null == input) {
throw new FrameworkException("找不到[" + fileUri + "]这个图片或flash");
}
output = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = 0;
while ((i = input.read(buffer)) != -1) {
output.write(buffer, 0, i);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(null !=output) {
//output.flush();
output.close();
}
if(null !=input) {
input.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}


楼主有这个想法,将来说不准也能写个框架玩玩呢,加油!我挺你!
flexstruts 2012-10-22
  • 打赏
  • 举报
回复
胡扯。
头一回听说jsp css 打成包还可以 new的。
copaer 2012-10-21
  • 打赏
  • 举报
回复
楼主有什么理由把jsp打成jar包呢?
java_web_hack3 2012-10-20
  • 打赏
  • 举报
回复
4楼不是坑爹吗,我说的是jar包里面的JavaScript文件,css样式文件,如何访问
jsp页面中如何引用。
dryZeng 2012-03-15
  • 打赏
  • 举报
回复
不好意思,我错了。WEB-INF里面的内容不能直接访问的,要通过程序才能访问。
比如a.jar里有个cn.xxx.A的类,你把a.jar放入lib下面,你在程序里就可以引用它。cn.xxx.A a = new cn.xxx.A();
java_web_hack3 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dryzeng 的回复:]
把jar包放在新工程的lib下,然后根据目录访问就行了。jar包所在目录为新工程的根目录。
[/Quote]

不行啊,我试过了。

不知道 你试过没。。
dryZeng 2012-03-15
  • 打赏
  • 举报
回复
把jar包放在新工程的lib下,然后根据目录访问就行了。jar包所在目录为新工程的根目录。
充电中 2012-03-15
  • 打赏
  • 举报
回复
这个真没遇到过。你就当成2个项目。写个webservice 试试吧、看看可以不。。。关注中
commons-beanutils.jar Apache Commons包的一个,包含了一些Bean工具类类。必须使用的jar包。 commons-collections.jar Apache Commons包的一个,包含了一些Apache开发的集合类,功能比java.util.*强大 commons-lang.jar Apache Commons包的一个,包含了一些数据类型工具类,是java.lang.*的扩展。必须使用的jar包。 commons-logging.jar: Apache Commons包的一个,包含日志功能 commons-io.jar Apache Commons包的一个,java.io.*的扩展,输入输出,支持文件上传 commons-fileupload.jar Apache Commons包的一个,是一个通过Http接收上传的文件并处理结果文件的库 dom4j-1.4.jar 和 jaxen-1.1.1.jar 是一个Java的XML API,类似于jdom,用来读写XML文件的。Hibernate使用dom4j解析XML配置文件和XML映射元文件。必需的。 ehcache-1.2.jar Hibernate可以使用不同cache缓存工具作为二级缓存。EHCache是缺省的cache缓存工具。如果没有其它的可选缓存工具,则为必需的。 hibernate3.jar hibernate3的核心类库。 itext.jar 是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iTextAsian.jar itext关于亚洲编码的类库,在这里用于文字体的输入。 junit.jar Junit包,当你运行Hibernate自带的测试代码的时候需要,否则就不用。 commons-digester.jar Apache Commons包的一个,通过它可以很方便的解析xml文件生成java对象 aspectjrt.jar 和aspectjweaver.jar Annotation 方式实现 AOP commons-dbcp.jar commons-pool-1.2.jar DBCP数据库连接池 cglib-nodep-2.1_3.jar CGLIB是一个强大的高质量高性能的代码生成库,在运行时可以用它来扩展Java类 jfreechart-1.0.12.jar 使用java生成图表的工具 log4j-1.2.15.jar 通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器 jxl-2.6.jar 通过java操作excel表格的工具类库 jta-1.1.jar Java事务API,为J2EE平台提供了分布式事务服务 lucene-core.jar 、lucene-highlighter.jar 、compass-index-patch.jar、 compass-2.1.0.jar 是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎 json-lib-2.2.3-jdk15.jar json和java转化的辅助工具 flexjson.jar java到json串的转换 gson-1.3.jar java到json串的转换 ognl-2.6.11.jar OGNL表达式所需要的包,支持EL htmlparser.jar 强大的html解析器 jcommon-1.0.15.jar 使用java生成图表的工具 freemarker-2.3.8.jar 模板相关操作需要包 struts2-core-2.0.14.jar struts2核心包 struts2-spring-plugin-2.0.14.jar struts2整合spring所需要的包 xwork-2.0.7.jar xwork核心包 antlr-2.7.6.jar 一个语言转换工具, Hibernate利用它实现 HQL 到 SQL 的转换模板相关操作需要包 javassist-3.9.0.GA.jar 代码生成工具 Hibernate用它在运行时扩展 Java类和实现,同cglib包 slf4j-api-1.5.8.jar和slf4j-log4j12-1.5.0.jar hibernate使用的一个日志系统 spring.jar spring核心包 spring-security-core-2.0.4.jar 和 spring-security-taglibs-2.0.4.jar

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧