• 对Java Web项目中路径的理解


    第一个:文件分隔符

    坑比Window。window分隔符 用;unix采用/。于是用File.separator来跨平台
    请注意:这是文件路径。在File f = new File(“c:\hah.txt”)是好使的
    当在后台拼接js代码
    代码大体如下:
    String path = "haha est";
    js+="<img src=""+path+"">"
    采用window的分隔符, 传到前台发现分隔符不见了
    但是/是可以的

    第二个:Java web项目中 服务器的路径解析

    先说一下,服务器路径。一般拿tomcat作为中间件
    而web程序一般部署到 (前边是tomcat路径,最后portal就是引用程序部署文件夹)
    C:LEADERHOOapache-tomcat-6.0.35apache-tomcat-6.0.35 -IPORTALwtpwebappsPORTAL
    此路径下一般是 :
      第一部分:对应eclipse里边src/main/webapp
      第二部分:eclipse看不到的(隐藏的)META-INF
      第三部分(可能会有的):有一些资源文件比如图片等,上传到服务器可以传到该目录下
    此路径下可以通过web项目的url访问
      比如在该目录下,我建了一个a.txt,我可以直接用http://boc.dtsz.com:8086/sso/a.txt访问到
      或者建目录访问 http://boc.dtsz.com:8086/sso/testfolder/a.txt
    备注 此处存在一个非常坑爹的设定
      中文目录居然不好使
      http://boc.dtsz.com:8086/sso/testfolder/测试中文目录/a.txt

    第三:图片的路径

    页面上图片路径(或者是/或者是\\ 根据具体例子测试)
    相对路径 .. ewHaha
    绝对路径 c: esthaha
    相对路径一定注意前边 是否需要 .. 也就是是否能准确定位到文件

    第四:前台页面采用相对路径还是绝对路径

    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    就可以使用绝对路径
    <link href="<%=basePath %>companyStyle/css/base.css" rel="stylesheet">

    第五:Java web 相对路径以/开头和不已/开头的区别

      通俗的讲,有/会从跟目录开始算,没有会从当前目录开始算

      比如<link  src = "/demo.js"/>  设当前项目根路径是 “localhost:8081/sso”则此路径会定位到 localhost:8081/sso/demo.js

    第六:页面引用WEB-INF下的内容

      web-inf下,应用服务器把它指为禁访目录,即直接在浏览器里是不能访问到的,只能通过servlet访问 所以:
        web-inf下有a.jsp则可以用request.getRequestDispatcher("/WEB-INF/a.jsp").forward(request,response);进行派遣访问

        但是web-inf下有a.htm,则用request.getRequestDispatcher("/WEB-INF/a.htm").forward(request,response);就不能访问。 

    第七: <%@ include file = "/WEB-INF/a.jsp"%> 这样写可以用的原因

    请注意:
      此处和访问路径区分开,这不是访问路径,这是告诉jsp翻译的时候把这个地方的文件加进来
    涉及的细节点就是 jsp会翻译成servlet
      jsp页面不能原封不动地被传送给浏览器,所有的jsp元素都必须首先由服务器进行处理。这是通过将jsp页面转达化成servlet,然后执行这个servlet来完成的

    jsp容器:
      jsp容器通常以servlet的形式来实现,这个servlet经过配置,可以处理对jsp页面的所有请求
    jsp的翻译:
      Jsp容器负责将jsp页面转化成servlet(称为jsp页面实现类?JSP Page implementation class),并编译这个servlet
      所以:用 <%@ include%>会在翻译的时候把文件加进来而不是访问该文件
    再次加深一下,为什么翻译的时候可以通过/WEB-INF/找到文件
      参照整理2,WEB-INF 在tomcat服务器的程序包的可以直接访问的那一级别
      这个uri是可以定位一个文件,只不过tomcat不允许直接通过浏览器访问而已

    参考资料: http://blog.csdn.net/panyongcsd/article/details/38235713

  • 相关阅读:
    cerr与cout区别
    Apache Flink 进阶(三):Checkpoint 原理解析与应用实践
    一张图轻松掌握 Flink on YARN 应用启动全流程(上)
    开篇 | 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?
    阿里第一颗芯片问世,平头哥发布最强AI芯片含光800
    Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现
    研发效能提升 36 计第二课:照亮问题,效能提升从可视化交付过程开始
    如何抢占云栖大会C位?史上最强强强攻略来了
    从零开始入门 K8s| 阿里技术专家详解 K8s 核心概念
    Serverless Kubernetes全面升级2.0架构:支持多命名空间、RBAC、CRD、PV/PVC等功能
  • 原文地址:https://www.cnblogs.com/ldh-better/p/7649258.html
Copyright © 2020-2023  润新知