javaWeb入门<2>javaWeb中使用绝对路径与相对路径小结

转载 2016年10月19日 15:12:40

    在JavaWeb开发中,只要是写URL地址,那么建议最好以"/"开头,也就是使用绝对路径的方式,那么这个"/"到底代表什么呢?可以用如下的方式来记忆"/":如果"/"是给服务器用的,则代表当前的web工程,如果"/"是给浏览器用的,则代表webapps目录。

1、"/"代表当前web工程的常见应用场景

①.ServletContext.getRealPath(String path)获取资源的绝对路径
/**
* 1.ServletContext.getRealPath("/download/1.JPG")是用来获取服务器上的某个资源,
* 那么这个"/"就是给服务器用的,"/"此时代表的就是web工程
* ServletContext.getRealPath("/download/1.JPG")表示的就是读取web工程下的download文件夹中的1.JPG这个资源
* 只要明白了"/"代表的具体含义,就可以很快写出要访问的web资源的绝对路径
*/
this.getServletContext().getRealPath("/download/1.JPG");
②.在服务器端forward到其他页面
/**
* 2.forward
 * 客户端请求某个web资源,服务器跳转到另外一个web资源,这个forward也是给服务器用的,
* 那么这个"/"就是给服务器用的,所以此时"/"代表的就是web工程
*/
this.getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
③.使用include指令或者<jsp:include>标签引入页面
1 <%@include file="/jspfragments/head.jspf" %>
1 <jsp:include page="/jspfragments/demo.jsp" />
        此时,“/”代表的都是web工程。
2、“/”代表webapps目录的常见应用场合

①.使用sendRedirect实现请求重定向

1 response.sendRedirect("/JavaWeb_HttpServletResponse_Study/index.jsp");

  服务器发送一个URL地址给浏览器,浏览器拿到URL地址之后,再去请求服务器,所以这个"/"是给浏览器使用的,此时"/"代表的就是webapps目录,"/JavaWeb_HttpServletResponse_Study/index.jsp"这个地址指的就是"webapps\JavaWeb_HttpServletResponse_Study\index.jsp"。

  response.sendRedirect("/项目名称/文件夹目录/页面");这种写法是将项目名称写死在程序中的做法,不灵活,万一哪天项目名称变了,此时就得改程序,所以推荐使用下面的灵活写法:

将   response.sendRedirect("/JavaWeb_HttpServletResponse_Study/index.jsp"); 改写成:

    response.sendRedirect(request.getContextPath()+"/index.jsp");
equest.getContextPath()获取到的内容就是"/JavaWeb_HttpServletResponse_Study",这样就比较灵活了,使用request.getContextPath()代替"/项目名称",推荐使用这种方式,灵活方便!

②.使用超链接跳转

1 <a href="/JavaWeb_HttpServletResponse_Study_20140615/index.jsp">跳转到首页</a>

  这是客户端浏览器使用的超链接跳转,这个"/"是给浏览器使用的,此时"/"代表的就是webapps目录。

  使用超链接访问web资源,绝对路径的写法推荐使用下面的写法改进:

1 <a href="${pageContext.request.contextPath}/index.jsp">跳转到首页</a>

  这样就可以避免在路径中出现项目的名称,使用${pageContext.request.contextPath}取代"/JavaWeb_HttpServletResponse_Study_20140615"

③.Form表单提交

1 <form action="/JavaWeb_HttpServletResponse_Study_20140615/servlet/CheckServlet" method="post">    
2         <input type="submit" value="提交">
3 </form>

这是客户端浏览器将form表单提交到服务器,所以这个"/"是给浏览器使用的,此时"/"代表的就是webapps目录。

  对于form表单提交中action属性绝对路径的写法,也推荐使用如下的方式改进:

1 <form action="${pageContext.request.contextPath}/servlet/CheckServlet" method="post">
2          <input type="submit" value="提交">
3 </form>

  ${pageContext.request.contextPath}得到的就是"/JavaWeb_HttpServletResponse_Study_20140615"

  ${pageContext.request.contextPath}的效果等同于request.getContextPath(),两者获取到的都是"/项目名称"

④.js脚本和css样式文件的引用
<%--使用绝对路径的方式引用js脚本--%>
 <script type="text/javascript" src="${pageContext.request.contextPath}/js/index.js"></script>
 <%--${pageContext.request.contextPath}与request.getContextPath()写法是得到的效果是一样的--%>
 <script type="text/javascript" src="<%=request.getContextPath()%>/js/login.js"></script>
 <%--使用绝对路径的方式引用css样式--%>
 <link rel="stylesheet" href="${pageContext.request.contextPath}/css/index.css" type="text/css"/>

综合范例:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>"/"代表webapps目录的常见应用场景</title>
    <%--使用绝对路径的方式引用js脚本--%>
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/index.js"></script>
    <%--${pageContext.request.contextPath}与request.getContextPath()写法是得到的效果是一样的--%>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/login.js"></script>
    <%--使用绝对路径的方式引用css样式--%>
      <link rel="stylesheet" href="${pageContext.request.contextPath}/css/index.css" type="text/css"/>
  </head>
  
  <body>
      <%--form表单提交--%>
       <form action="${pageContext.request.contextPath}/servlet/CheckServlet" method="post">
           <input type="submit" value="提交">
       </form>
       <%--超链接跳转页面--%>
       <a href="${pageContext.request.contextPath}/index.jsp">跳转到首页</a>
  </body>
</html>







java(Web)中相对路径,绝对路径问题总结

    java中相对路径,绝对路径问题总结               ————bohemia(城)前言: 前一段时间,由于在处理Web应用下的文件创建与移动等,因此涉及到很多关于java中相对路径...
  • bohemia
  • bohemia
  • 2006年05月01日 14:50
  • 54088

初学JavaWeb需要知道的目录结构与配置

初学JavaWeb需要知道的目录结构与配置JavaWeb目录结构 Java Resourcesrc:存放Java源代码的目录。 Libraries:存放的是Tomcat及JRE中的jar包。 buil...
  • qq_33689414
  • qq_33689414
  • 2017年02月22日 17:48
  • 3158

JavaWeb相对路径

JavaWeb相对路径只为学习,希望各路大神指出错误之处,谢谢问题在java web页面跳转中,总是会出现文件找不到的情况,这些就是相对路径没有写对的结果。主要的原因可能是因为不知道路径之间的关联关系...
  • angle_sun
  • angle_sun
  • 2016年04月03日 00:39
  • 171

java(Web)中相对路径,绝对路径问题总结

  • 2012年07月18日 17:25
  • 37KB
  • 下载

获取JAVA[WEB]项目相关路径的几种方法

在jsp和class文件中调用的相对路径不同。 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getPro...
  • yaerfeng
  • yaerfeng
  • 2012年02月27日 11:08
  • 108983

JavaWeb中的绝对路径和相对路径

前段时间自己也刚好遇到了这个问题,把相对路径改成绝对路径就没问题了,今天复习到这里就稍微总结一下。 使用绝对路径:使用相对路径可能会有问题, 但使用绝对路径肯定没有问题.  一、下面先...
  • ymfwj
  • ymfwj
  • 2016年08月08日 23:49
  • 4371

JavaWeb程序中的路径问题

在程序开发中,通常是将程序所用的参数以配置文件的方式保存,这样在部署程序时只需要更改配置文件即可保证程序的正常运行。任何程序路径都是有相对路径和绝对路径来说的,JavaWeb中的程序相对路径最终也是由...
  • JohnLongYuan
  • JohnLongYuan
  • 2016年03月20日 19:23
  • 660

Java Web中的相对路径与绝对路径总结

原文链接https://www.cnblogs.com/jichunhu/archive/2013/01/31/2887042.html 1、基本概念的理解 绝对路径:绝对路径就是你的主页上...
  • StackFlow
  • StackFlow
  • 2017年12月23日 23:19
  • 37

J2EE-JavaWeb中请求的绝对路径与相对路径

此处的绝对路径与相对路径主要讨论的是,前端页面向后台控制器发出请求时的简单路径问题。1. 绝对路径 当你的前端页面选择的跳转路径为/开头的时候,使用的是绝对路径,即在IP信息后,或域名后开始替换,在H...
  • No_Endless
  • No_Endless
  • 2016年07月29日 19:52
  • 2255

Java_Web开发之绝对路径与相对路径(学习笔记)

一、转发:1.转发的目的是为了实现多个页面交互过程中的请求数据共享,即携带数据的转发,算一次请求,地址栏的地址是不会改变的,是服务器端做的事情,浏览器是被”蒙在鼓里”的.2.转发的实现// 当使用绝对...
  • HLhakey
  • HLhakey
  • 2015年08月15日 21:51
  • 2423
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javaWeb入门<2>javaWeb中使用绝对路径与相对路径小结
举报原因:
原因补充:

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