路径问题

CreateTime--2016年9月22日15:19:56

Author:Marydon

一、jsp页面
  src="../demo/clazz/clazz_add.js"与src="<c:url value='/demo/clazz/clazz_index.js'/>"
  连接的文件路径是一致的,一个相对路径,一个是绝对路径
二、struts2配置文件

<package name="clazz" namespace="/clazz" extends="default">
<action name="index" class="clazzAction" method="index">
<result name="success">demo/clazz/clazz_index.jsp</result>
</action>
</package>

  跳转路径为:
    /demo/clazz/demo/clazz/clazz_index.jsp
  表示的是:到当前项目下找clazz文件夹下的demo文件夹下的clazz文件夹下的demo文件夹下的clazz文件夹下的clazz_index.jsp
  加上/后,

<result name="success">/demo/clazz/clazz_index.jsp</result>

  跳转路径为:localhost:8080/demo/demo/clazz/clazz_index.jsp
  加上"/"表示,访问路径会忽略掉namespace;
  说明:如果访问路径不需要加上namespace,则在跳转页面前加"/";一般都要加"/"
  请求路径为:clazz/index.do(index.action)
  重定向问号传参${}
三、协议-端口号-路径

request.getContextPath();   //获取项目根路径:/test
request.getScheme();     //协议名称:http
request.getServerName()   //域名:localhost
request.getServerPort()   //服务器端口号:8080
<%
String path = request.getContextPath();<%-- 通常用的是这个 --%>
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
%>

  path = "/test";
  basePath = "http://localhost:8080/test"
四、使用<c:url></c:url>表示路径

<c:url value=''></c:url>     <!-- 什么也不显示 --><br>
<c:url value='/'></c:url> <!-- /test/ --><br>代表的是项目名
<c:url value='/index.jsp'></c:url> <!-- /test/index.jsp -->

UpdateTime--2017年6月2日08:25:55

六、WEB项目找不到对应的js文件

  使用绝对路径来引用js文件:

<script type="text/javascript" src="<c:url value="/telemedicine/remoteRese/consAppl/viewAdd_search.js"/>"></script>    

  而不是用相对路径

<script type="text/javascript" src="viewAdd_search.js"></script>

七、WEB项目找不到对应的图片

  使用绝对路径

    方式一:使用<c:url></c:url>标签体

<img src="<c:url value="/telemedicine/remoteRese/consAppl/image/cxlr.png"></c:url>"/>

    方式二:使用小脚本

<img src="<%=request.getContextPath()%>/telemedicine/remoteRese/consAppl/image/cxlr.png"/>

  而不是使用相对路径

<img src="data:image/cxlr.png"/>

UpdateTime--2017年8月18日15:30:09

八、相对路径与绝对路径

  8.1 绝对路径

  web项目不可能使用绝对路径,因为:

    以文件的引用为例,tomcat会将项目发布到webApps文件夹下,所以文件的引用不能使用文件所在的磁盘位置

  8.2 相对路径

  情况一:严格意义上的相对路径

  在页面上用来表示路径的任何HTML标签的已知属性,都必须使用这种路径引用方式:"/" + 应用程序名称" + "相对于WebContent/WebRoot"的路径;

    8.2.1 引入CSS文件

<link type="text/css" rel="stylesheet" href="<c:url value="/telemedicine/remoteRese/consAppl/entry.css"/>" />

    8.2.2 引入js文件

<script type="text/javascript" src="<c:url value="/telemedicine/remoteRese/consAlready/consAleady_index.js"/>"></script>

    8.2.3 a标签跳转页面

<a style="color: #199ED8;" href="${pageContext.request.contextPath }/telemedicine/reseCons/index.do?RESULT_TYPE=modelAndView1&PATIENT_ID=${row.PATIENT_INFO_ID }&ORG_ID=${row.ORG_ID }&CONSULT_APPLY_ID=${row.CONSULT_APPLY_ID }&CONSULT_STATUS=${row.CONSULT_STATUS }">
  查看详细信息
</a>

    8.2.4 img标签

<img src="<%=request.getContextPath()%>/telemedicine/remoteRese/consAppl/image/cxlr.png">

    8.2.5 发送Ajax请求

    第一步:

<script type="text/javascript">var baseUrl="<%=request.getContextPath()%>";</script>

    第二步:

$.ajax({
type:"post",
url: baseUrl + "/telemedicinet/consult/add.do",
data:{CONSULT_DEPENT_ID:CONSULT_DEPENT_ID,CONSULT_DEPENT:CONSULT_DEPENT,CONSULT_DOCTOR_ID:CONSULT_DOCTOR_ID,CONSULT_DOCTOR:CONSULT_DOCTOR,DOCTOR_PHONE:DOCTOR_PHONE,
CONSULT_APPLY_ID:CONSULT_APPLY_ID},
success: function(result) {
DEPENT_DOCTOR_INFO_ID = result.id;
message = result.msg + "," + DEPENT_DOCTOR_INFO_ID;
},
dataType: "json"
}); 

    8.2.6 提交form表单

  小结:

    为什么8.2.1-8.2.5这五种情况必须要使用"/" + 应用程序名称" + "相对于WebContent/WebRoot"的路径?

    a.请求路径和响应的页面所在的路径并不一定一致;

    请求路径:

    返回的文件所在路径:

      其一,请求路径为:"http://127.0.0.1:8060/ycyl/telemedicine/patient/index.do?RESULT_TYPE=modelAndView1",响应的内容所在路径为:"/telemedicine/remoteRese/consAlready/consAleady_records.jsp";

      其二,响应方式设置成了转发,而使用转发,URL不会发生变化(因为客户端只发送了一次请求)。

    小结:

      请求路径与响应路径不一致并且使用转发,两个条件同时满足时,必须使用严格意义上的相对路径。

    b.这些标签表示路径的属性所共有特性:会自动为其补全路径;

    补全方式:

      在响应的页面标签上

      第一种:表示路径属性的值(不加"/")自动在前面追加当前的请求前缀, 如:"http://127.0.0.1:8060/ycyl/telemedicine/patient"

      第二种:自动在前面追加当前服务器前缀(加"/"),如:"http://localhost:8080"

    c.为什么要加"/"?    

    表示路径属性的值不加"/",会出现b中的第一种情况;表示路径属性的值加"/",会出现b中的第二种情况。

    在a和b的作用下,只能选择加"/",这种方式,我们对于路径定义有更大的自由权

    d.为什么要加上“引用程序名称”?

    不加上发布在服务器上的应用程序的名称,就更不用说访问该程序下的内容了。

    e.form表单提交路径

    form表单的提交通常是在当期路径上进行提交,当然,如果要提交的路径和当前请求路径不一致时,需使用严格意义上的相对路径。

  更多示例见文章:a标签

  情况二:非严格意义上的相对路径

  include标签引用文件或外部css文件引用图片所在路径时,

    如果同级直接写被引用文件的全称;如果是下级文件,”下级文件夹/被引用文件的全称“;如果是上级文件夹,”上级文件夹/被引用文件的全称“。

  图例:

  jsp:include标签

  外部CSS文件

九、网址最后加“/"与不加"/"的区别

参考地址:http://bbs.csdn.net/topics/340200371  

  1.http://www.abc.com/abc
  2.http://www.abc.com/abc/
区别:
  对于用户来说,在大多数情况下这两个网址没有任何区别,他们访问的都是网站abc目录下的默认首页。一般用户也都知道最后一个斜杠是可有可无的,他们输入网址的时候一般都只会输入http://www.abc.com/abc。
  当Web服务器接收到对某个末尾不含斜杠的url请求时,例如“http://www.abc.com/abc”,这时服务器会搜索网站根目录下有没有名为“abc”的文件,如果没有就把abc当做目录处理,然后返回abc目录下的默认首页。当Web服务器接收到的是末尾带斜杠的请求时就会直接当做目录处理。

相关推荐:

  
JavaWeb 绝对路径与相对路径

 

JavaWeb 路径问题的更多相关文章

  1. JavaWeb路径问题打包总结--小心出门右转404

    话说,培训和自学就不是一个回事,两周讲完java基础,两天讲完jsp,两节课讲完servlet,还真不是一般人能受得了的,这两天学习jsp和servlet频繁被路径问题困扰,倒不是出错,只是各种act ...

  2. JavaWeb(七)之详解JavaWeb路径

    前言 在我们的实际开发中,经常要写路径,不管是链接,重定向还是转发,这都是需要路径的.那这一篇我给大家详细的分享一下Web中的各种路径问题. 世界上一切东西都是相对的,对于这点而言,相信大家并不陌生, ...

  3. JavaWEB路径总结

    这篇文章是小编一直想写的一篇,主要是对web阶段中各个路径进行的一些总结,希望读者看过之后对于路径方面有一个清晰的认识.首先声明一点:世界上一切东西都是相对的,对于这点而言,相信大家并不陌生,从初中开 ...

  4. JavaWeb中读取文件资源的路径问题

    在做javaweb开发的时候,我们可能会需要从本地硬盘上读取某一个文件资源,或者修改某一个文件,这个时候就需要先找到这个文件,然后用FileInputStrem等文件字节.字符流来将这个文件读取到内存 ...

  5. javaWeb中的/路径问题

    在写javaweb的时候,在写路径的时候,/有时候表示站点根目录,有时候表示当前web应用根目录,究竟如何区分呢? 首先,我们建议开发的时候,跳转之类的都是用绝对路径(注意:不是物理路径),而不是使用 ...

  6. JavaWeb 项目中的绝对路径和相对路径以及问题的解决方式

    近期在做JavaWeb项目,总是出现各种的路径错误,并且发现不同情况下 /  所代表的含义不同,导致在调试路径上浪费了大量时间. 在JavaWeb项目中尽量使用绝对路径  由于使用绝对路径是绝对不会出 ...

  7. Javaweb开发中URL路径的使用

    看到博客园孤傲苍狼的web系列文章中有关于URL路径的使用文章后,感觉自己对URL的使用清楚了很多,自己再对着动手写一遍以加深记忆. JavaWeb开发中常看到URL以"/"开头, ...

  8. javaWeb项目中的路径格式 请求url地址 客户端路径 服务端路径 url-pattern 路径 获取资源路径 地址 url

    javaweb项目中有很多场景的路径客户端的POST/GET请求,服务器的请求转发,资源获取需要设置路径等这些路径表达的含义都有不同,所以想要更好的书写规范有用的路径代码 需要对路径有一个清晰地认知 ...

  9. Javaweb学习笔记——(九)——————Servlet的进入,及ServletConfig、GenericServlet、HttpServlet、ServletContext、获取类路径资源

    Servlet1.什么是Servlet? *Servlet是Javaweb三大组件之一(Servlet,Filter,Listener) *Servlet是用来处理客户端请求的动态资源 *Servle ...

随机推荐

  1. Linux下的两个经典宏定义 转

    http://www.linuxidc.com/Linux/2016-08/134481.htm http://www.linuxidc.com/Linux/2013-01/78003.htm htt ...

  2. perf 工具介绍3

    http://blog.chinaunix.net/uid-10540984-id-3854969.html http://blog.csdn.net/zhangskd/article/details ...

  3. datagrid在MVC中的运用06-固定连续列

    本文主要体验datagrid的frozenColumns属性. □ frozenColumns效果: 在frozenColumns的列将保持不动,而其他列横向滚动. □ frozenColumns效果 ...

  4. 获取WINDOWS打印机列表

    获取WINDOWS打印机列表 如何知道WINDOWS已经安装了哪些打印机? 1) usesVcl.Printers 2) Printer.Printers  // property Printers: ...

  5. python接口自动化24-有token的接口项目使用unittest框架设计

    获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...

  6. JSTL fmt 格式化时间

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  7. 试用log4jdbc

    近日发现一个好东东log4jdbc,他是一个JDBC驱动器,能够记录SQL日志和SQL执行时间等信息.log4jdbc使用SLF4J(Simple Logging Facade For Java)作为 ...

  8. jQuery元素属性attr设置多个键值或函数 删除属性removeAttr

    $("Element").attr(name) '取得第一个匹配的属性值,比如$("img").attr("src") $("El ...

  9. struts从2.3.X升级到2.5.18中遇到的问题及解决办法

    1,2.5.X版本不再提供xwork.jar ,整合到了 struts-core包中.2,需要升级替换的jar文件:commons-langcommons-lang3ognl其他所有struts2开头 ...

  10. JDBC 通过PreparedStatement 对数据库进行增删改查

    1 插入数据 public boolean ChaRu3(User user){ boolean flag=true; Connection conn=null; PreparedStatement ...