WEB-INF下JSP如何访问CSS、js文件

https://www.cnblogs.com/coolhwm/archive/2011/11/27/2265272.html
在有Struts部署的Java EE环境中,我们一般把jsp页面写在WebRoot\WEB-INF\content 目录下,这样使得jsp页面一定需要struts的控制转发才可访问,提高页面安全性。
但是今天在jsp页面中应用WebRoot目录中的css,js文件发现十分困难,先看看我的文件结构:

目标是在index.jsp中访问default.css。
defautl.css是在index.jsp目录的父目录的父目录的CSS目录下。所以我这样写:
ps:空格为故意添加,不知为何会自动变成博客园的网址

在Eclipes中也出现超链接提示,说明目录正确,但是结果失败。 查询资料后,在百度百科中看到: http://baike.baidu.com/view/1745468.htm TomCat 服务器下的WEB-INF文件夹是一个非常安全的文件,在页面中不能直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。 从上面的实验可以看出,不但是直接访问,使用" ../ ../ "之类的间接访问也不能成功。 在此多方查询资料之后,尝试使用如下方法访问: 1 2 <%String path = request.getContextPath(); %> 3 4 原理很简单,变量path值为项目根目录,而css就是此目录的子目录,自然可以访问。 可惜结果还是错,思考之,el表达式的${}是以page,request,session,application的顺序寻找匹配的项,而path并不在这个范围之内,也许在java脚本中直接定义的对象是局部作用域,而不是page作用域?可惜百度之后难以找到相关资料,不过结论应该是没错的。 既然EL表达式无法取出,那么java脚本应该可以达到目的吧?尝试如下: 1 <%String path = request.getContextPath(); %> 2 3 果不其然,页面成功读出了css文件中的样式,达到目的。不过此页面中存在java脚本,不够规范,查询资料后,用以下纯EL表达式实现: 1 2 3 先将ContextPath放如page中,再使用el表达式取出,问题得以解决。

源文档 https://www.cnblogs.com/coolhwm/archive/2011/11/27/2265272.html

<c:set value="${pageContext.request.contextPath}" var=“path” scope=“page”/>

path应用引用一定要放在C:SET下面

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值