我把一些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>
写根本就找不到,该如何是好哈?
包层次为:
package aw.org.struts.taglib.html;
所有的class文件都在html包下,现在我想在html包里放一个js文件
那么在画面怎么能够访问到这个js文件?
这样
<script Language="JavaScript" src="./aw/org/struts/taglib/html/xxx.js"></script>
写根本就找不到,该如何是好哈?
这个不知道lz怎么想
你把js放在web的目录下面,然后用你的web引用不行么
==>
<script Language="JavaScript" src="/aw/org/struts/taglib/html/xxx.js"></script>
DWR中,engine.js util.js也打在jar中
例如:只能输入日期的文本框 等
这样在每个项目中只需要引用这个jar包,其他的什么都不用管了
不必再写那些js了。
TO hbwhwang(catmiw的ID已经停用,现在用这个)
这个方法我也想过,但是正如nationally(自由鸟) 所说的
怕影响性能,如果画面组件很多的话那么在打开的时候会出现很多问题
所以想来想去还是感觉只有把js也放到jar包中是最可取的
再次感谢大家的关心
我再说一次,然后把代码给你写出来:
1、做一个servlet,可以处理所有以 .js结尾的请求。在web.xml中我们这样定义它:
<servlet>
<servlet-name>javascriptservlet</servlet-name>
<servlet-class>com.unnamed.training.spring.util.JavaScriptServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>javascriptservlet</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
比如你向服务器请求:"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>
注意:地址是包名。
他不放到jar包里吧?
有点晕了
但是从哪里调用这个servlet呢?
</script>src="aw/org/struts/taglib/html/xxx.js"
这句等于向服务器发了一个请求,这个请求就交给这个servlet了啊。不是你人工调用的,呵呵
<servlet>
<servlet-name>javascriptservlet</servlet-name>
<servlet-class>com.unnamed.training.spring.util.JavaScriptServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>javascriptservlet</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>这段的时候启动tomcat 就会出错哈
在web.xml文件中已经存在了一个
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
这个,我把你给我的那段放到它下面这样是不是不可以哈?
该怎么配置这个servlet?
我用javascriptservlet继承ActionServlet 就可以了吧?
== 我试一下哈
你好像不懂servlet?
恩,做的web项目太少了,不是很了解
刚才说的那个依然不好用哈
谢谢了
要不把你的例子粘贴到这里吧,如果有时间的话
谢谢先了。
你不能理解的原因并不是我的问题,而是你不懂SERVLET,不知道SERVLET的运行原理。这样我没办法帮你啊,你得自己去学SERVLET
不知道为什么没有调用那个servlet
其实就是自定义标签而以。
从这个意义上还真是框架害人啊,汗
JSP,servlet,jdbc,jndi,jta,这些基础J2EE技术都应该深入了解才对
另外一个是dwr那样的,一个servlet来管理js请求,这样做的好处是,不仅可以管理现有的“静态的”js文件,还可以动态生成js;