`
Everyday都不同
  • 浏览: 723728 次
  • 性别: 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下的资源!

 

 

分享到:
评论

相关推荐

    myeclipse的WebRoot下的jsp访问不了

    其中,WebRoot目录(通常命名为`WebContent`或`src/main/webapp`)是用于存放Web资源(如HTML、CSS、JS文件及JSP页面等)的根目录。 2. **WebRoot目录**:在标准的Java Web应用中,WebRoot目录是指包含所有Web资源的...

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

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

    使用ANT打包J2EE程序

    “src”目录包含了项目的源代码,“WebRoot”则是Web应用的主要部分,其中包含了静态资源如HTML、CSS、JavaScript文件以及JSP页面。“WEB-INF”目录则存放了Web应用的关键配置文件“web.xml”及第三方库(位于“lib...

    本科毕业技术文档的中英文翻译

    - JSP碎片:`.jspf` - `&lt;context root&gt;/&lt;subsystem path&gt;/` 或 `&lt;context root&gt;/WEB-INF/jspf/&lt;subsystem path&gt;/` - CSS样式表:`.css` - `&lt;context root&gt;/css/` - JavaScript文件:`.js` - `&lt;context root&gt;/js/` - ...

    详解WebRoot与WebContent区别

    在Eclipse开发环境中,Web项目常见的目录结构中,WebRoot和WebContent是两个非常重要的目录,它们在动态Web项目中扮演着不同的角色,但同时也具有一些共同点。为了深入理解它们的区别和用途,我们需要详细探讨这两个...

    jsp ckeditor3.6.2集成ckfinder

    通常的做法是在JSP页面中引入ckeditor相关的JavaScript和CSS文件,并设置好必要的参数,例如指定ckfinder的路径等。这样就可以实现在JSP页面中使用ckeditor编辑器,并且具备文件浏览、上传等功能。 #### 四、注意...

    JSP,Servlet技术

    - JSP片段:`&lt;context root&gt;/&lt;subsystem path&gt;/` 或 `.jspf:&lt;context root&gt;/WEB-INF/jspf/&lt;subsystem path&gt;/` - CSS样式表:`&lt;context root&gt;/css/` - JavaScript文件:`&lt;context root&gt;/js/` - HTML页面:`...

    web应用步骤

    通常在`WebRoot`下的`WEB-INF`之外,例如`WebRoot/css`, `WebRoot/js`, `WebRoot/images`。 2. **JSP(JavaServer Pages)**:动态页面,通常用于生成HTML内容。例如,`WebRoot/WEB-INF/jsp`目录下可能包含各种JSP...

    Maven搭建SpringMVC项目源码

    在`src/main/webapp/WEB-INF`下,我们需要创建`web.xml`文件,配置SpringMVC的前端控制器DispatcherServlet和Servlet上下文监听器ContextLoaderListener: ```xml &lt;!-- Spring MVC DispatcherServlet --&gt; ...

    Eclipse 部署上 Crystal Reports

    这个目录包含了Crystal Reports用于显示报表所需的静态资源,如CSS、JavaScript和图像文件。 5. **添加tld文件**: 将名为crystal-tags-reportviewer.tld的文件复制到Web项目的WEB-INF目录下。这个文件定义了标签...

    StrutsMenu使用笔记

    在`WebRoot`目录下创建`scripts`和`styles`子目录,以及`menu-images`目录来存储菜单所需的JavaScript库、CSS样式表和图片资源。 #### 4. 配置Struts 在`struts-config.xml`文件中注册`MenuPlugIn`插件,并设置其...

    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....

    struts2简单应用

    `WebRoot`目录是Web应用程序的标准根目录,包含HTML、JSP、CSS、JavaScript、图片等静态资源。在Struts2项目中,我们通常会在`WebRoot/WEB-INF`下放置`struts.xml`配置文件,这是Struts2的核心配置文件,用于定义...

    个人博客程序Java_JSP源码.zip

    6. **样式表(CSS)和脚本(JavaScript)**:用于美化界面和实现页面交互,可能会在WebContent/WEB-INF/static或类似目录下找到。 7. **图片和其他静态资源**:与博客相关的图像、图标等资源,通常存放在WebContent...

    Tomcat-ROOT.rar

    【描述】"Tomcat-ROOT.rar" 提示这是一个包含Tomcat服务器根目录(即WEB-INF和相关的文件)的压缩包。通常,这个目录包含了Web应用的基本组件,如WEB-INF下的web.xml(部署描述符),类文件,以及静态资源(HTML、...

    javaWeb传-网上书城项目源码-WebRoot.zip

    这个网上书城项目不仅涵盖了基本的JSP知识,还涉及到CSS(Cascading Style Sheets)和JS(JavaScript)等前端技术,以及与JavaWeb相关的其他概念。 首先,JSP的核心在于其生命周期,包括翻译、编译、加载和实例化等...

    Struts2的结构和编写过程笔记

    3. **复制JAR文件**:将`lib`文件夹下的6个核心JAR文件复制到工程的`/Webroot/WEB-INF/lib`目录下。 - `Struts2-core-2.0.x.jar`: Struts2的核心包。 - `xwork-2.0.x.jar`: Xwork2库,是Struts2的基础。 - `ognl-...

    jsp文件中引用外部.css或.js文件的路径问题.pdf

    在开发Java Web应用程序时,JSP(JavaServer Pages)经常被用来创建动态网页,而CSS(Cascading Style Sheets)和JavaScript文件则用于实现页面样式和交互功能。在JSP文件中引用外部CSS或JS文件是一项基本操作,但...

    TomcatInstallWindows

    - `/WEB-INF/`: 配置文件和私有文件,如`web.xml`,不能直接通过网络访问。 - `/WEB-INF/classes/`: 应用程序的类文件。 - `/WEB-INF/lib/`: 存放应用所需的JAR库文件。 测试Tomcat是否正确安装,可以在浏览器中...

Global site tag (gtag.js) - Google Analytics