`
Everyday都不同
  • 浏览: 713317 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

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

阅读更多

众所周知,通常把jsp页面放在webRoot的/WEB-INF下可以防止访问者直接输入页面,而不经过struts处理请求的恶意操作(当把页面直接放在webRoot下时)。而webRoot的/WEB-INF下的页面是受保护的,用户无法通过形如http://localhost:8080/test/webRoot/WEB-INF/content/xx.jsp来访问,他们的访问都必须透过struts处理请求才能达到。

然而,当把页面放在/web-inf下面时,JSP页面还是避免不了跟“外部”的js,css,图片“交互”,因为需要引入一些webRoot/css, webRoot/js, webRoot/images,而此时很容易引入失败,一般来说,此时用相对路径行不通了,所以必须使用绝对路径!下面一一总结。

 

一、引入webRoot/css

<link href="<%=request.getContextPath()%>/css/default.css" rel="stylesheet" type="text/css"/>

 这个<%=request.getContextPath()%>即为/hh_test(项目名称),而<%=request.getContextPath()%>/css则相当于用绝对路径直接定位到了webRoot/css.

 

二、引入webRoot/js

<script type="text/javascript"  language="javascript" src="<%=request.getContextPath()%>/js/jquery-1.4.4.min.js"></script>

 

三、引入webRoot/images

<img src="<%=request.getContextPath()%>/images/4.gif"  alt="加载外部图片" />

 

 

四、当透过引入独立的js加载webRoot/images下的图片

这时候由于独立的js文件中无法使用<%=request.getContextPath()%>获得项目的根路径时,此时还必须在独立的js文件中写一段Js代码读取项目跟路径:

            //获取当前网址,如: http://localhost:8088/test/test.jsp  
	    var curPath=window.document.location.href;  
	    //获取主机地址之后的目录,如: test/test.jsp  
	    var pathName=window.document.location.pathname;  
	    var pos=curPath.indexOf(pathName);  
	    //获取主机地址,如: http://localhost:8088  
	    var localhostPaht=curPath.substring(0,pos);  
	    //获取带"/"的项目名,如:/test  
	    var root=pathName.substring(0,pathName.substr(1).indexOf('/')+1);  

 然后再读取该图片文件的目录:

 

var path = root + "images/4.gif";

 

 五、iframe中引入web-inf下的jsp页面

通常,

<iframe name="headerFrame" id="headerFrame" style="height: 100%; visibility: inherit; width: 100%; z-index: 2"  scrolling="no" frameborder="0" src="xx.jsp"></iframe>

引入xx.jsp页面到该iframe中时,放在/webRoot下才能直接引入,而此时在web-inf下,无法直接引入,所以需要改成src="Test!.xxx.action",然后再在响应的action中写响应的逻辑视图,并在struts.xml中配置响应的xx.jsp,即还是得通过struts处理请求才能响应页面!

 

小结:最好把jsp页面放在/WEB-INF下,而jsp页面引入"外部”js,css,images时,必须获取项目的根路径,再加上/css(或/js 或/images)即使用绝对路径的方法,而不是相对路径的方法,才能访问到放置在webRoot下的资源!

 

 

分享到:
评论

相关推荐

    javaweb项目开发思路(通俗易懂)附源码

    1、如何开发项目 (a)了解用户需求(静态DEMO) (b)了解数据设计(表关系) 2、编码 (a)搭建开发框架 1、搭建Struts框架完成页面跳转 2、静态页面复制到工程中 ... /WEB-INF/jsp/main/main.jsp 5、设置默认Action

    mysql+连接池+JavaBean实现用户注册登陆系统

    \web\WebRoot\do_register.jsp D:\web\WebRoot\index.jsp D:\web\WebRoot\login.jsp D:\web\WebRoot\logout.jsp D:\web\WebRoot\mydb.jsp D:\web\WebRoot\register.css D:\web\WebRoot\register....

    超市管理系统

    /WEB-INF/admin(存放jsp) (3)jsp:建议放在WEB-INF下 html-》jsp:后缀名+page头部声明 jsp中的资源引用: 绝对路径: ①${pageContext.request.contextPath }/css/style.css 或者 ②()%&gt; ③${...

    Struts 成功测试

    \web\WebRoot\index.jsp 首页 =================================================================== D:\web\WebRoot\include\CSS.CSS D:\web\WebRoot\include\image.jsp 生成验证码的jsp ============...

    cms后台管理

    将解压后得到的jeecms-3.0.2-final文件夹下的root文件夹更名为jeecms拷贝到tomcat 安装目录下的webapps 文件夹下(例如: D:\Tomcat 6.0\webapps\),启动tomcat,在地址栏中输入http://localhost:8080/jeecms, 您...

    MeyboMail Web(Java) 邮件 群发源代码

    3、把本下载的全部程序文件拷贝到tomcat的webapps\ROOT目录下。 4、启动tomcat,在浏览器中输入http://localhost:8080/即可运行程序。 二、安装注意事项 1、确保您的web服务器能运行EasyJWeb,主要是修改web.xml...

    JAVA SSH青协志愿服务管理系统源码

    WebRoot根目录 fckeditor在线编辑器, images img 图片 upload,updown 上传下载, admin common 前台JSP页面 WEB-INF (lib+jsp+*.xml) applicationContext.xml 中心配置文件 web.xml 项目配置文件 项目一些基本...

    JAVA SSH青协志愿服务管理系统源码.rar

    WebRoot根目录 fckeditor在线编辑器, images img 图片 upload,updown 上传下载, admin common 前台JSP页面 WEB-INF (lib+jsp+*.xml) applicationContext.xml 中心配置文件 web.xml 项目配置文件 项目一些基本...

    北大青鸟ACCP5.0 S2使用JSP开发Web应用系统(JSP)

    │ │ │ └─WebRoot │ │ │ ├─META-INF │ │ │ └─WEB-INF │ │ ├─阶段3 │ │ │ ├─image │ │ │ │ └─head │ │ │ │ └─CVS │ │ │ └─style │ │ └─阶段4 │ │ ├─image │ │ │ ...

    users-manager:用于管理联系人列表的 JavaEE Web 应用程序

    使用的技术该项目使用以下技术:JSP、JSTL、JPQL、JDBC、EJB、EJBQL 3.0、Servlets、JavaEE、HTML5、CSS3、jQuery、jQuery UI、GlassFish 安装您需要将库 minMail (/build/web/WEB-INF/lib/mail.jar) 添加到库项目...

    APACHE 2.2.9+TOMCAT6.0.18配置负载均衡

    TomcatC\conf下和 TomcatD\conf下的 server.xml 中找到 server, 将: 改为 XXXX 在这里表示不同的端口:我的其它四个 tomcat 分别使用 9006,9007,9008 , 9009 2.2. 配置 Engine 把原来的配置注释掉,把下面一...

    java web课程设计学生评教系统

    项目描述 此项目是java web的一个课程设计,基本完成了所有功能,基于bootstrap框架写的 运行环境 jdk7+tomcat7+mysql+...1.务必把Education_system\WebRoot\META-INF\context.xml也需要发布,否则找不到jndi数据源

    javaweb毕业设计附源码-course:精品课程网,javaWeb项目,servlet+jsp,适合做毕业设计使用

    webRoot文件夹:css、js、jsp webRoot-&gt;backstage 文件夹:后台管理系统的页面 imgView文件夹:可以忽略,仅用于展示 课程网.artx:我是用Artisteer设计的首页,此为设计原件 预览说明 webRoot-&gt;WEB-INF文件夹下有...

    office在线查看

    将其中的jar包复制到Web工程的WebRoot/WEB-INF/lib下。 第三步:安装Swftools。从下载的压缩包中解压得到可执行安装文件,直接双击执行。该转换工具用来将pdf文件转换成swf文件。改工具既可以安装使用实现文件转换,...

    Maven权威指南 很精典的学习教程,比ANT更好用

    冲突解决 9.4.6. 依赖管理 9.5. 项目关系 9.5.1. 坐标详解 9.5.2. 多模块项目 9.5.3. 项目继承 9.6. POM最佳实践 9.6.1. 依赖归类 9.6.2. 多模块 vs. 继承 9.6.2.1. 简单项目 9.6.2.2. 多模块企业级...

Global site tag (gtag.js) - Google Analytics