美文网首页
web应用中的路径问题

web应用中的路径问题

作者: Mon7ey | 来源:发表于2017-11-14 16:38 被阅读4次

哪里会用到路径?

转发

用于转发时的调用方法:

servletContext.getRequestDispatcher("路径").forward(request,response);
request.getRequestDispatcher("路径").forward(request,response)
请求重定向

用于请求重定向时的调用方法:

response.sendRedirect("路径");
html页面超链接href

用于页面超链时的写法:

response.getWriter().write("<html><body><a href='路径'>超链接</a></body></html>");
html页面中的form提交地址

表单提交时

response.getWriter().write("<html><body><form action='路径'><input type='submit'/></form></body></html>");

路径使用时需要注意的几点:

  1. 注意: 在web应用项目中,用到路径时统一用" / "开头
  2. 思考: 目标资源是给谁使用的
  • 给服务器使用的:

      转发是服务器将一个请求转发给另一个目标地址.所以是服务器使用
      如果是服务器使用," / "代表当前web应用的根目录
    
  • 给浏览器使用的

      重定向则是:浏览器发出请求,服务器响应302 + location后,再由浏览器重新发送新的请求到目标地址,所以请求重定向是给浏览器使用的
      如果是给浏览器使用," / "表示在webapps的根目录下
    

资源文件路径问题

错误代码:

    File file = new File("./src/db.properties");
    FileInputStream in = new FileInputStream(file);
    
    // 创建配置文件对象
    Properties prop = new Properties();
    // 读取资源文件
    prop.load(in);
    
    // 根据属性名获取属性值
    String user = prop.getProperty("user");
    String pwd = prop.getProperty("password");

问题出在这句代码 : File file = new File("./src/db.properties");

注意:路径: ./src/db.properties"中的" . "(点)

在java项目中,表示相对路径中的当前路径.是相对于java命令运行的目录.

在web项目中,当前应用中的Servlet是在tomcat服务器上运行的,而tomcat服务器是由jvn调用tomcat/bin目录下的startup.bat文件运行的,也就意味意味着java命令是在tomcat/bin目录下调用的,所以".(点)"表示tomcat/bin目录.所以在web项目中用".(点)"是不可靠的

结论 : 在web项目中,".(点)"代表tomcat/bin目录下开始,所以不能使用这种相对路径,在web应用中应该使用web应用下加载资源文件的方式

推荐使用的方法
// 这个方法是
context.getRealPath("路径");
// 获得一个资源文件,返回的是一个输入流
context.getResourceAsStream("路径");

使用案例一
使用getRealPath("路径"); 方法

    // 因为在web应用中,src文件夹下的java文件会被编译为class文件存放在/WEB-INF/class/文件夹下
    // 所以db.properties文件也会被存放在/WEB-INF/class/文件夹下
    // getRealPath()方法会返回一个字符串,代表资源文件在web项目中的绝对路径
    String path = this.getServletContext().getRealPath("/WEB-INF/class/db.properties");
    
    File file = new File(path);
    FileInputStream in = new FileInputStream(file);
    // 创建配置文件对象
    Properties prop = new Properties();
    // 读取资源文件
    prop.load(in);
    
    // 根据属性名获取属性值
    String user = prop.getProperty("user");
    String pwd = prop.getProperty("password");

使用案例二
使用context.getResourceAsStream("路径"); 方法

Properties prop = new Properties();
    // 读取资源文件
    prop.load(this.getServletContext().getResourceAsStream("/WEB-INF/class/db.properties"));
    
    // 根据属性名获取属性值
    String user = prop.getProperty("user");
    String pwd = prop.getProperty("password");

相关文章

  • web应用中的路径问题

    哪里会用到路径? 转发 用于转发时的调用方法: 请求重定向 用于请求重定向时的调用方法: html页面超链接hre...

  • Web应用中的路径

    Web项目中有以下几个会用到路径: 转发:服务器 重定向:浏览器 html中的超链接href:浏览器 html中的...

  • web应用中路径问题

    目标资源:index.html思考:目标资源给谁使用?服务器: / 表示当前web应用的根目录(webRoot下面...

  • Linux-Web应用环境部署

    Linux运行环境 一、安装软件 二、Linux的主机名 主机名解析 Web应用中,路径的配置 web应用中很多地...

  • NODE 构建Web应用

    构建web应用会遇到的问题 请求方法的判断 URL路径的解析 URL中查询字符串的解析 Cookie的解析 表单数...

  • Java Web中的路径问题

  • IDEA 创建 web 应用程序

    新建 java web 工程 新建工程,选择java web 应用模板 设置应用名与工程存储路径 在WEB-INF...

  • JavaWeb-JSP中的绝对路径和相对路径

    首先明确两个概念: 服务器路径:形如:http://192.168.0.1/的路径Web应用路径:形如:http:...

  • web路径问题

    <%--./ 当前路径/ 项目 路径 8080 后面的../表示当前的上一路径不写 项目路径 xzw ...

  • Web 的路径问题

    绝对路径: 绝对路径,是指无法改变的路径,根据给出的路径可以准确定位的路径。 对于计算机中的绝对路径,又分为本地绝...

网友评论

      本文标题:web应用中的路径问题

      本文链接:https://www.haomeiwen.com/subject/omcfvxtx.html