博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
阅读量:4681 次
发布时间:2019-06-09

本文共 1191 字,大约阅读时间需要 3 分钟。

在有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中也出现超链接提示,说明目录正确,但是结果失败。

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

 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表达式取出,问题得以解决。

 

在查询资料的过程中,发现如下问题:

WEB-INF目录下加载CSS和JS问题?????

 

此问题中,CSS和JS也在WEB-INF下,多方试验后我还是没能解决,望高手解答。

 

参考资料:

百度百科

ITEYE问答

百度知道

转载于:https://www.cnblogs.com/xsht/p/5275081.html

你可能感兴趣的文章
gitlab-ce 安装、汉化与阿里邮箱配置(注意是CE)
查看>>
zabbix3.4 监控ESXI6.7
查看>>
c++继承赋值兼容
查看>>
Bias vs. Variance(4)---根据是high bias还是high variance问题来判断接下来做些什么
查看>>
Reactjs+BootStrap开发自制编程语言Monkey的编译器:词法解析1
查看>>
python爬虫:找房助手V1.0-爬取58同城租房信息
查看>>
c++中小项堆声明和使用
查看>>
coolpad 5879logcat不能输入日志解决办法
查看>>
在VMware ESXi 5.5上搭建server 2012 建立Hyper-V虚拟环境
查看>>
[wp7游戏]wp7经典好玩游戏~~~集合帖~~~
查看>>
java猜数字游戏
查看>>
[eclipse]添加python默认模板,在首行添加编码方式(# -*- coding: utf-8 -*-)
查看>>
dom4j(XML解析)私人学习笔记
查看>>
C#开发中碰到的问题------input file change 事件只执行一次
查看>>
OL2中设置鼠标的样式
查看>>
有货前端 Web-APM 实践
查看>>
JDBC 学习笔记(四)—— 自定义JDBC框架+Apache—DBUtils框架+事务管理+操作多表...
查看>>
【原创】数据库优化的几个阶段
查看>>
第二次作业
查看>>
Redis
查看>>