Study《JavaScript中访问jar包中的js》

来源:互联网 发布:淘宝买家累计信用提升 编辑:程序博客网 时间:2024/04/30 03:40

在用DWR时常看到/dwr/engine.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>
之后想想原理也简单,说白了就是:
通过定义servlet把js当成文件发给浏览器。
下面我们模拟一个例子
一、配置web.xml文件
    <servlet>
        <servlet-name> javascriptservlet </servlet-name>
        <servlet-class> JavaScriptServlet </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name> javascriptservlet </servlet-name>
        <url-pattern> *.js </url-pattern>
    </servlet-mapping>
这样请求js文件时,就不是找工程下的js,而是请求交给servlet。
二、实现servlet
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文件,把它以文件的形式发回给客户端浏览器。
三、在页面中调用
<script language= "javascript " src="xxx.js ">
</script>

注:思想来源于网络(部分代码也来源于网络)

原创粉丝点击