关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件

转载 2012年03月22日 22:24:16


在有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文件对要访问的文件进行相应映射才能访问。

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

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

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

原理很简单,变量path值为项目根目录,而css就是此目录的子目录,自然可以访问。

可惜结果还是错,思考之,el表达式的${}是以page,request,session,application的顺序寻找匹配的项,而path并不在这个范围之内,也许在java脚本中直接定义的对象是局部作用域,而不是page作用域?可惜百度之后难以找到相关资料,不过结论应该是没错的。

既然EL表达式无法取出,那么java脚本应该可以达到目的吧?尝试如下:

1         <%String path = request.getContextPath(); %>
2         <link href="<%=path %>/css/default.css" rel="stylesheet" type="text/css"/>
3         <link href="<%=path %>/css/uploadify.css" rel="stylesheet" type="text/css"/>

果不其然,页面成功读出了css文件中的样式,达到目的。不过此页面中存在java脚本,不够规范,查询资料后,用以下纯EL表达式实现:

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

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

 

关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件

关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件 在有Struts部署的Java EE环境中,我们一般把jsp页面写在WebRoot\W...

关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件

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

关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件

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

关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件

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

WEB-INF目录下jsp页面如何访问WebRoot中的CSS和JS文件

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

关于jsp页面是放在webroot目录下和web-inf下优缺点/(如何访问WebRoot中的CSS和JS文件)

问: jsp放在webroot目录下 这样就可以让用户直接访问,jsp放在web-inf目录下就必须要通过请求才能访问。 因此放在web-inf下jsp页面显得要安全。  既然这样 ,那...

解决/WEB-INF目录下的jsp页面引入webRoot下的Js、css和图片的问题

众所周知,通常把jsp页面放在webRoot的/WEB-INF下可以防止访问者直接输入页面,而不经过struts处理请求的恶意操作(当把页面直接放在webRoot下时)。而webRoot的/WEB-I...

关于jsp页面是放在webroot目录下和web-inf下优缺点

关于jsp页面是放在webroot目录下和web-inf下优缺点  (2012-05-09 20:52:03) 转载▼ 标签:  杂谈 分类: 编程 ...

关于jsp页面是放在webroot目录下和web-inf下优缺点

http://blog.sina.com.cn/s/blog_73e11065010139m2.html sp放在webroot目录下 这样就可以让用户直接访问,jsp放在web-inf目录...
  • kouwoo
  • kouwoo
  • 2014年10月27日 13:52
  • 578

jsp页面是放在webroot目录下和web-inf下优缺点

http://blog.sina.com.cn/s/blog_73e11065010139m2.html jsp放在webroot目录下 这样就可以让用户直接访问,jsp放在web-inf目...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
举报原因:
原因补充:

(最多只允许输入30个字)