关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
找了这么久资料,总算解决了
感谢博客园:http://www.cnblogs.com/xsht/p/5275081.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:空格为故意添加
<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)
关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件的更多相关文章
- WEB-INF目录下的jsp页面如何访问?
只能在sevlet(或者spring的control,struts的action,本质都是sevlet)中访问也就是只能通过java后台访问,这里web-inf下的内容是不对外开放的/安全的,不能通过 ...
- IDEA编译项目后,target目录下的jsp文件不更新
tomcat目录说明 先来看一下tomcat的目录: |-bin |-conf |-lib |-logs |-temp |-webapps |-work tomcat 的核心是servlet容器,叫 ...
- 解决/WEB-INF目录下的jsp页面引入webRoot下的Js、css和图片的问题
通常把jsp页面放在webRoot的/WEB-INF下可以防止访问者直接输入页面. 而webRoot的/WEB-INF下的页面是受保护的,用户无法通过形如http://localhost:8080/t ...
- 关于jsp页面是放在webroot目录下和web-inf下优缺点
CSDN问题: jsp放在webroot目录下 这样就可以让用户直接访问,jsp放在web-inf目录下就必须要通过请求才能访问.因此放在web-inf下jsp页面显得要安全. 既然这样 ,那是不是只 ...
- 如何在tomcat中如何部署java EE项目
如何在tomcat中如何部署java EE项目 1.直接把项目复制到Tomcat安装目录的webapps目录中,这是最简单的一种Tomcat项目部署的方法,也是初学者最常用的方法.2.在tomcat安 ...
- idea 导入 eclipse java ee 项目,并使用 tomcat 7 部署运行
1.导入java ee项目.直接open 2.导入jar依赖 3.修改编译的目录 4.修改tomcat目录 5.tomcat添加目录 请注意classes单词 D:\project\xxxxxx\We ...
- 各种容器与服务器的区别与联系 Servlet容器 WEB容器 Java EE容器 应用服务器 WEB服务器 Java EE服务器
转自:https://blog.csdn.net/tjiyu/article/details/53148174 各种容器与服务器的区别与联系 Servlet容器 WEB容器 Java EE容器 应用服 ...
- jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?
jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...
- eclipse Java EE安装和web项目的创建
一.根据http://www.itnose.net/detail/6139800.html基本安装成功二.根据http://www.cnblogs.com/freebsd-pann/archive/2 ...
随机推荐
- wpa supplicant 移植
最近移植wifi,WIFI芯片使用rtl8723.在文件系统生成了设备节点.需要移植工具进行测试: iwconfig:没有密码的或者wep加密的wifi,使用iwconfig就已经够用. wpa_su ...
- (copy) Shell Script to Check Linux System Health
source: http://linoxide.com/linux-shell-script/shell-script-check-linux-system-health/ This article ...
- Nhiberate (三)测试
(一)添加数据: public void AddUser(User user) { ISession session = NhibernateFactory.GetInstance().GetSess ...
- Jmeter中察看结果树中的响应数据,中文显示乱码问题处理
打开apache-jmeter-xxx\bin\jmeter.properties文件,搜索"encoding"关键字,找到如下配置: # The encoding to be u ...
- Android--Retrofit+RxJava(二)
1,现在响应式编程也是越来越多在项目中使用了,刚好上篇我们简单了介绍了一下Retrofit,那么我们来开始试着两个一起用吧,不过不了解RxJava的同学可以先去看一看这个文章(挺好的):http:// ...
- math方法
1.丢弃小数部分,保留整数部分parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math.round(5/2) 4,向下取整 Math.fl ...
- paper 108:系统学习数字图像处理之图像复原与重建
首先,必须注意这里所限制的处理条件. 关于图像退化/复原模型 退化的图像是由成像系统的退化加上额外的噪声形成的. 1.只考虑噪声引起的退化 噪声模型,包含于空间不相关和相关两种,除了空间周期噪声,这里 ...
- Datatable的查找和排序(Datatable.Select)
Datatable 是一种常用的数据结构.数据类型有点类似于数据库中的表结构.在没有使用优秀的orm框架前,大部分的数据库的数据都是先变为Datatable 然后再通过代码转换变成 object. ...
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数005·graphics-obj,基本绘图单元,包括线段、矩形、椭圆、圆形
<zw版·Halcon-delphi系列原创教程> Halcon分类函数005·graphics-obj,基本绘图单元,包括线段.矩形.椭圆.圆形 graphics-obj,基本绘图单元, ...
- Filter过滤的2种方式
1.新建一个过滤器,继承ActionFilterAttribute,然后重写 public class DemoFilterAttribute:ActionFilterAttribute { //在A ...