zoukankan      html  css  js  c++  java
  • 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件

    找了这么久资料,总算解决了

    感谢博客园:http://www.cnblogs.com/xsht/p/5275081.html

    感谢百度:http://zhidao.baidu.com/link?url=Vz4TlygvnMyYVj105bCuzkusjF0G5rM6opHvEzhcCaJK5s1gFUZ3PBgAWCNsfY1RmtPf4ZEo8EV_Gd7SYKV4S_

    在有Struts部署的Java EE环境中,我们一般把jsp页面写在WebRootWEB-INFcontent 目录下,这样使得jsp页面一定需要struts的控制转发才可访问,提高页面安全性。

    但是今天在jsp页面中应用WebRoot目录中的css,js文件发现十分困难,先看看我的文件结构:

    目标是在index.jsp中访问default.css。

    defautl.css是在index.jsp目录的父目录的父目录的CSS目录下。所以我这样写:

    ps:空格为故意添加

            <link href="../ ../css/default.css" rel="stylesheet" type="text/css"/>
            <link href="../ ../css/uploadify.css" rel="stylesheet" type="text/css"/>

    在Eclipes中也出现超链接提示,说明目录正确,但是结果失败。

    查询资料后,在百度百科中看到:

    http://baike.baidu.com/view/1745468.htm
    
    TomCat 服务器下的WEB-INF文件夹是一个非常安全的文件,在页面中不能直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

    从上面的实验可以看出,不但是直接访问,使用" ../ ../ "之类的间接访问也不能成功。

    在此多方查询资料之后,尝试使用如下方法访问:

             <!-- 输出为项目根目录,即WebRoot -->
             <%String path = request.getContextPath(); %>
             <link href="${path}/css/default.css" rel="stylesheet" type="text/css"/>
             <link href="${path}/css/uploadify.css" rel="stylesheet" type="text/css"/>

    果不其然,页面成功读出了css文件中的样式,达到目的。

    不过此页面中存在java脚本,不够规范,查询资料后,用以下纯EL表达式实现:

          <c:set value="${pageContext.request.contextPath}" var="path" scope="page"/>
             <link href="${path}/css/default.css" rel="stylesheet" type="text/css"/>
             <link href="${path}/css/uploadify.css" rel="stylesheet" type="text/css"/>

    先将ContextPath放如page中,再使用el表达式取出,问题得以解决。

    但是,也有不少程序猿是在用Struts_2的标签,要做到上面的效果,就有区别了

    Struts_2的标签要访问到 pageContext.request.contextPath,写法上就与jstl的有区别

        <s:set value="#request.get('javax.servlet.forward.context_path')" var="cssPath" scope="page"/>
        <link rel="stylesheet" href="${cssPath}/css/index.css" />

    Struts_2标签set的value属性要进行访问对象,语法就是 value="#对象" 或者 value="%{对象}"两种写法

    ----------------------------------------------------------------------

    (over)

  • 相关阅读:
    证明三个简单数学问题~(≧▽≦)/~啦啦啦
    计算时间复杂度
    字符三角形(循环做法)
    luogu Peter的烟
    c++一本通1000
    luogu最长连号
    luogu子数整数
    luogu三角函数
    (因更改文件夹造成)anaconda prompt 提示系统找不到指定的路径
    echarts之树形图改变节点之间连线颜色以及结点的颜色
  • 原文地址:https://www.cnblogs.com/LiJinfu/p/5982492.html
Copyright © 2011-2022 走看看