关于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页面写在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)

时间: 2024-09-29 23:42:00

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

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

通常把jsp页面放在webRoot的/WEB-INF下可以防止访问者直接输入页面. 而webRoot的/WEB-INF下的页面是受保护的,用户无法通过形如http://localhost:8080/test/webRoot/WEB-INF/content/xx.jsp来访问,他们的访问都必须透过struts处理请求才能达到. 然而,当把页面放在/web-inf下面时,JSP页面还是避免不了跟"外部"的js,css,图片"交互",因为需要引入一些webRoot/css

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

CSDN问题: jsp放在webroot目录下 这样就可以让用户直接访问,jsp放在web-inf目录下就必须要通过请求才能访问.因此放在web-inf下jsp页面显得要安全. 既然这样 ,那是不是只要是需要通过请求才可以访问的页面就一定要放在web-inf目录下呢还有放在webroot和放在web-inf目录下都各有什么明显的优缺点 .望大家讨论... 1楼: 通过设置过滤器,放在webroot下面的文件也可以实现不能直接访问.所以说放在哪里就看习惯是什么样了. 一般项目都是要求隐藏性的,只让

Eclipse Java EE 创建 Dynamic Web Project

1.      创建一个web工程,此处用eclipse创建(如果对创建web工程很熟悉,可以不看的,本文目的是做一个记录)  1)     打开新建工程对话框,选择Dynamic web Project并点击下一步,如图: 2)在出现的工程设定窗口中,设定工程的名字和Dynamic web module version(对应的servlet版本,不同的Dynamic web module version对应生成的工程web.xml不一样.web组件版本是不下兼容.tomcat6一般对应着2.4

JAVA EE 项目经常使用知识 之AJAX技术实现select下拉列表联动的两种使用方法(让你真正理解ajax)

ajax 下拉列表联动的使用方法. ajax的定义: AJAX 是一种用于创建高速动态网页的技术. 通过在后台与server进行少量数据交换,AJAX 能够使网页实现异步更新.这意味着能够在不又一次载入整个网页的情况下,对网页的某部分进行更新. ajax效果的一个样例: 区域为空的时候,维护人情况: 选了一个区域后的情况:(选 舒城县 联带出来的维护人员 小刘) 一.原生态的js实现 XMLHttpRequest 是 AJAX 的基础 XMLHttpRequest 对象 全部现代浏览器均支持 X

JAVA Drp项目实战—— Unable to compile class for JSP 一波三折

交代下背景,电脑系统是64位的,用的是64位的Tomcat,安装是32位的Myeclipse10,java环境也是32位的,Tomcat在开始启动时会报这样一个错误,"Can't load IA 64-bit .dll on a AMD32-bit platform",但是不耽误使用,最近在敲Drp项目中用到了底层接口的几个方法,这个错误导致项目不能正常运行了,所以就将64位的Tomcat换成了与java环境一样的32位的Tomcat,上面的问题就顺利解决了,于是继续自己的开发,但是当

JAVA之IO技术-获取指定目录下的文件夹和文件的File对象或是字符串名称。

package ioTest.io3; /* * 获取指定目录下的文件夹和文件的File对象或是字符串名称. * 也可以通过filter获取指定的文件夹或者指定类型的文件 * 这里面需要做一个总结,如何利用jdk的源码去理解不熟悉的方法的应用. */ import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; public class FileDemo2 { public static void m

JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件

package ioTest.io3; import java.io.File; /* * 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件 . * 并将文件夹和文件名称打印在控制台上面.并且要显示文件目录的层级 * 注:运用了递归的算法. */ public class FileDemo3 { public static void main(String[] args) { File dir=new File("F:\\黑马学习日程\\"); //File dir=new Fi

JAVA之File类-将指定目录下的所有java文件的绝对路径存储到文本文件中

/* * 将指定目录下的所有java文件的绝对路径存储到文本文件中 * 建立一个java列表. * 思路: * 1.对指定目录进行递归 * 2.获取递归过程所有的java文件的路径 * 3.将这些路径存储在集合中 * 4.将集合中的内容写到文本文件 * 注:3,4步骤也可以合并成一个步骤 */ package ioTest.io3; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; imp

监控web站点目录下所有文件是否被恶意篡改

监控web站点目录下所有文件是否被恶意篡改,(文件内容被改了)如果有的就打印改动的文件名 定时任务:每三分钟执行一次监测一次 文件被篡改的特征: 大小可能会变化(为什么说可能呢,如果把里面的值1改为2大小是不会变化的) 修改时间会变化   (文件测试符ot,nt) 文件内容会变化,通过md5sum指纹判断 增加或者删除文件 问题: 代码发布方案:大公司或规范的公司,不会时刻传代码,每天1-2次 脚本不严谨啊,工作中先解决文件,然后在解决好问题 #!/bin/sh num=`cat site.lo