Chinaunix

标题: 怪,extjs引用问题。 [打印本页]

作者: snow888    时间: 2012-11-06 16:19
标题: 怪,extjs引用问题。
代码如下:
index.jsp
  1. <%
  2. String path = request.getContextPath();
  3. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  4. %>
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  6. <html>
  7. <head>
  8. <title>Hello Ext</title>
  9. <link rel="stylesheet" type="text/css" href="<%=basePath%>WEB-INF/resources/css/ext-all.css">
  10. <script type="text/javascript" src="<%=basePath%>WEB-INF/extjs/ext-all.js"></script>
  11. <script type="text/javascript" src="<%=basePath%>WEB-INF/extjs/HelloExt.js"></script>
  12. </head>
  13. <body></body>
  14. </html>
复制代码
文件目录结构

WebRoot
      |-------META-INF
      |-------WEB-INF
      |                 |---------extjs
      |                 |                |--------ext-all.js
      |                 |                |--------HelloExt.js
      |                 |---------resources
      |                                  |--------css
      |                                                |-------ext-all.css
      |-------index.jsp

如果将 extjs、resources目录从 WEB-INF 目录下移动到 WebRoot 目录下,同时修改 index.jsp 文件中的引用路径为
                        <%=basePath%>extjs/ext-all.js
                        <%=basePath%>extjs/HelloExt.js
                        <%=basePath%>resources/css/ext-all.css

则一切正常。

是啥子原因啊?
作者: nan_jia    时间: 2012-11-27 17:13
WEB-INF下的文件在WEB访问时是禁止的。
                  
      <%=basePath%>extjs/ext-all.js

你确定要将JS 放到WEB-INF下,需要写个过滤器,对于CSS 和 JS ,在过滤器里面重新定位一下实际位置。
作者: snow888    时间: 2012-11-28 08:47
@nan_jia问题是如何写啊?

这就是我不知道啊。
作者: nan_jia    时间: 2012-11-28 09:26
CSS 和 JS 放到WEB-INF 下其实没有任何意义。 这样就很好,
  1. src
  2.     - main
  3.         - webapp
  4.             - scripts
  5.             - styles
  6.             - images
  7.             - WEB-INF
  8.                 - views
  9.                     - jsp
  10.                     - etc.
复制代码

作者: snow888    时间: 2012-11-28 09:48
@nan_jia我的jsp 放到 WEB-INF 下面也访问不到。

现在不知道是啥子原因了。
作者: nan_jia    时间: 2012-11-28 17:20
JSP 也是客户端直接访问不到的。如果用STRUTS2 的话可以配置一下。其它的你就要想办法了,比如写个过滤器或是写个SERVLET转一下。
作者: snow888    时间: 2012-11-30 10:35
@nan_jia这个过滤器咋写啊?

能给个例子不?
作者: tong0245    时间: 2012-12-13 13:15
本帖最后由 tong0245 于 2012-12-13 13:16 编辑

已经给回答了。
web-inf下的资源 ,只能被 应用程序(java servelt,jsp) 访问。
如果确实需要隐藏。还要客户端能访问 。
(感觉有点矛盾,如果jsp隐藏还有些意义,静态资源看到的应该都一样。隐藏意义大吗)
写专门的 action ,contrller。 配置个路径。去加载 对应的文件 写到浏览器就ok了
作者: tong0245    时间: 2012-12-13 13:28
本帖最后由 tong0245 于 2012-12-13 13:51 编辑

@RequestMapping("/resources")
public class ResourcesController {

    @RequestMapping("/{path}")
    public void home(@PathVariable("path") String path,
            HttpServletRequest request,
            HttpServletResponse response) throws FileNotFoundException, IOException {

        FileReader read = null;
        BufferedReader br = null;
        try {
            String fileName = request.getSession().getServletContext().getRealPath(
                    "/")
                    + "WEB-INF/"+path;
            read = new FileReader(fileName);
            br = new BufferedReader(read);
            String line = null;
            while ((line = br.readLine()) != null) {
                response.getWriter().write(line);
            }
        } finally {
            if (br != null) {
                br.close();
            }
            if (read != null) {
                read.close();
            }
        }


    }
}

作者: tong0245    时间: 2012-12-13 13:29
如要访问 WEB-inf/a.js
<script src=/resouces/a.js"/>
以上代码不保障无bug。 路径自己修改
作者: hansion3406    时间: 2012-12-21 02:19
谢谢您的辛苦发帖




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2