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="http://zhhzhh-43.blog.163.com/blog/aw/org/struts/taglib/html/xxx.js ">
</script>
注意:地址是包名。
注:原来我一直当我使用dwr框架时,使用<%=request.getContextPath()%>/dwr/engine.js 时需要把改js文件,放入需要导入的目录中
后来发现,原来js文件在dwr.jar包中就有,而且dwr的部署在web.xml中的设置就是为了,让在网页上的引用能够找到该js文件,如下
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
当网页侦测到/dwr/*的请求时会调用 org.directwebremoting.servlet.DwrServlet 这个类
这个类的源代码不得而知,但是应该如上面缩写,通过寻找js的路径,将js文件传回
<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="http://zhhzhh-43.blog.163.com/blog/aw/org/struts/taglib/html/xxx.js ">
</script>
注意:地址是包名。
注:原来我一直当我使用dwr框架时,使用<%=request.getContextPath()%>/dwr/engine.js 时需要把改js文件,放入需要导入的目录中
后来发现,原来js文件在dwr.jar包中就有,而且dwr的部署在web.xml中的设置就是为了,让在网页上的引用能够找到该js文件,如下
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
当网页侦测到/dwr/*的请求时会调用 org.directwebremoting.servlet.DwrServlet 这个类
这个类的源代码不得而知,但是应该如上面缩写,通过寻找js的路径,将js文件传回