当前页面: 开发资料首页 → J2SE 专题 → 关于在jar包中的js文件
关于在jar包中的js文件
摘要: 关于在jar包中的js文件
我把一些class文件打成jar包
包层次为:
package aw.org.struts.taglib.html;
所有的class文件都在html包下,现在我想在html包里放一个js文件
那么在画面怎么能够访问到这个js文件?
这样
<script Language="JavaScript" src="./aw/org/struts/taglib/html/xxx.js"></script>
写根本就找不到,该如何是好哈?
做一个servlet,拦截所有的.js请求,把js读出来,当成文件返回给response
同意楼上
1楼厉害,这都想的出来
这样的性能呢?
难道你这个包里还有html文件?如果有的话,就跟使用那些html文件一样去使用js文件吧。
js是展现层的东西,总归放在webmodel下的某个目录比较好,有什么理由要把他放在java类的包里面,愿闻其详
做一个servlet,拦截所有的.js请求,把js读出来,当成文件返回给response
???
servlet 能拦截所有的js请求吗? 难道所有的js请求都是ajax吗?
servlet能拦截到 document.write吗?
所有的class文件都在html包下,现在我想在html包里放一个js文件???
这个不知道lz怎么想
你把js放在web的目录下面,然后用你的web引用不行么
<script Language="JavaScript" src="./aw/org/struts/taglib/html/xxx.js"></script>
==>
<script Language="JavaScript" src="/aw/org/struts/taglib/html/xxx.js"></script>
up
为什么JS也打进包里,怕别人窃取你的JS里的代码吗?
参考一下DWR的源代码吧
DWR中,engine.js util.js也打在jar中
不知道LZ出于什么目的。。。关注
html文件放在一个文件夹下,然后在此文件夹下建立一个js文件夹,把js文件放进去就ok了。不过这样的话可能要修改html文件
是这样的,我的目的是把一些组件封装到一个jar包中
例如:只能输入日期的文本框 等
这样在每个项目中只需要引用这个jar包,其他的什么都不用管了
不必再写那些js了。
TO hbwhwang(catmiw的ID已经停用,现在用这个)
这个方法我也想过,但是正如nationally(自由鸟) 所说的
怕影响性能,如果画面组件很多的话那么在打开的时候会出现很多问题
所以想来想去还是感觉只有把js也放到jar包中是最可取的
再次感谢大家的关心
楼主你没明白我的意思吧。
我再说一次,然后把代码给你写出来:
1、做一个servlet,可以处理所有以 .js结尾的请求。在web.xml中我们这样定义它:
javascriptservlet
com.unnamed.training.spring.util.JavaScriptServlet
javascriptservlet
*.js
比如你向服务器请求:"http://www.xxx.com/aw/org/struts/taglib/html/xxx.js",服务器不是真的到root/aw目录中去找这个js文件了,而是把这个请求交给这个servlet处理了。
2、这个servlet可以这样写:
package com.unnamed.training.spring.util;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class JavaScriptServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String fileUri = request.getRequestURI();
String contextPath = request.getContextPath();
if (!contextPath.endsWith("/")) {
contextPath = contextPath + "/";
}
fileUri = fileUri.substring(contextPath.length(), fileUri.length());
//注意:此处未考虑并发访问异常
BufferedReader in = new BufferedReader(new InputStreamReader(getClass().
getClassLoader().getResourceAsStream(fileUri)));
PrintWriter out = response.getWriter();
response.setContentType("text/javascript; charset=GBK");
String line = null;
while ((line = in.readLine()) != null) {
out.println(line);
}
in.close();
out.close();
}
}
它的功能就是到jar包中去找 *.js文件,把它以文件的形式发回给客户端浏览器。
3、在页面,我们可以这样调用:
<script language="javascript" src="aw/org/struts/taglib/html/xxx.js">
</script>
注意:地址是包名。
To:hbwhwang(catmiw的ID已经停用,现在用这个)
我试过了,但还是不行啊,找不到js文件哈
另外这个JavaScriptServlet 类放到什么位置?
他不放到jar包里吧?
有点晕了
JavaScriptServlet 放到classes或者一起打包jar放到lib都可以啊
To:hbwhwang(catmiw的ID已经停用,现在用这个)
但是从哪里调用这个servlet呢?
<script language="javascript" src="aw/org/struts/taglib/html/xxx.js">
</script>
src="aw/org/struts/taglib/html/xxx.js"
这句等于向服务器发了一个请求,这个请求就交给这个servlet了啊。不是你人工调用的,呵呵
To:hbwhwang(catmiw的ID已经停用,现在用这个)
但是我在web.xml中加上
javascriptservlet
com.unnamed.training.spring.util.JavaScriptServlet
javascriptservlet
*.js
这段的时候启动tomcat 就会出错哈
在web.xml文件中已经存在了一个
action
org.apache.struts.action.ActionServlet
config
/WEB-INF/struts-config.xml
debug
2
detail
2
2
action
*.do
这个,我把你给我的那段放到它下面这样是不是不可以哈?
该怎么配置这个servlet?
js应该放到web目录去,不要和class文件混在一起
To:hbwhwang(catmiw的ID已经停用,现在用这个)
我用javascriptservlet继承ActionServlet 就可以了吧?
== 我试一下哈
xinshou1979330(Success.java):
你好像不懂servlet?
To:hbwhwang(catmiw的ID已经停用,现在用这个)
恩,做的web项目太少了,不是很了解
刚才说的那个依然不好用哈
干脆把你QQ留下,我打个例子包给你看哈
我的msn:jzlpy@hotmail.com
上不了qq哈
谢谢了
good servlet! good job!
学习
不用那么麻烦,用war文件来部署WEB应用
自定義標簽庫到是干過,但是如此有創意還真沒試過....
學習了~~
To:hbwhwang(catmiw的ID已经停用,现在用这个)
要不把你的例子粘贴到这里吧,如果有时间的话
谢谢先了。
兄弟啊,我前面已经把例子贴在这里了。我想看这个帖子的大部分兄弟都理解了我的例子和做法。
你不能理解的原因并不是我的问题,而是你不懂SERVLET,不知道SERVLET的运行原理。这样我没办法帮你啊,你得自己去学SERVLET
但我现在是这么做的哈
不知道为什么没有调用那个servlet
晕得很!
自己也要差不多,别人才能帮你么!
现在都敢新潮,却不知道把基础的东西掌握,无奈哦!
同意hbwhwang(catmiw的ID已经停用,现在用这个) ( ) 的想法
其实就是自定义标签而以。
serlvet不会用?晕死,难道都是一开始学什么struts,hibernate的??
从这个意义上还真是框架害人啊,汗
JSP,servlet,jdbc,jndi,jta,这些基础J2EE技术都应该深入了解才对
恩,感谢大家了哈
我在朝这个方向努力一下
呵呵
把javascript语句和html一起在标签里输出
学习!