理解java web项目中的路径问题

简介: 理解java web项目中的路径问题

先说明请求页面的写法,在web中,页面路径主要写的有以下几种


 1、请求重定向


 2、浏览器的请求被服务器请求到新页面(我称为“转发”)


 3、超链接


 4、form表单提交的action


为了演示路径写法,首先先建一个项目(项目名WebPath),并建立一个servlet(PathServlet)


目录结构如下


以访问目录中index.jsp文件为例,jxf.path.PathServlet.jave中对以上四种路径的写法


package jxf.path;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PathServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //1、重定向
        response.sendRedirect("/WebPath/index.jsp");
        //2、转发
        //request.getRequestDispatcher("/index.jsp").forward(request, response);
        //3、超链接
        //response.setContentType("text/html");
        //response.getWriter().write("<thml><head></head><body><a href='/WebPath/index.jsp'>index.jsp<a></body></html>");
        //4、表单提交
        //response.setContentType("text/html");
        //response.getWriter().write("<thml><head></head><body><form action='/WebPath/index.jsp'><input type='submit' value='to index.jsp'/></form></body></html>");
    }
}

路径的写法主要注意以两点:


 1、路径是谁发起的(浏览器,服务器)


 2、路径开头直接 “/” 表示当前路径(主要就是这个当前路径,搞清楚就明白了)


首先来分析“路径是由谁发起的”,以上四种写法,除了“2、转发”是服务器发起的,其他都是由浏览器发起的。


用过tomcat服务器的都应该明白一点,平常我们开发时候在浏览器中输入“http://localhost:端口号/项目名/xxx文件”请求需要的资源,并且根据tomcat的项目都是在%tomcat根目录%/webapps文件夹下,可得知,此时由浏览器发起的请求,代码中的“/”表示的当前路径就应该表示的是webapps的根目录


而代码中的“转发”,是由浏览器向服务器发起请求,而服务器根据请求的内容帮助其访问项目中的其他资源,并返回给浏览器。整个 “资源路径” 是由服务器来发起的,可以查看web项目在tomcat部署后的结构,对比MyEclipse中的项目结构,可理解为“/”表示当前目录是MyEclipse中项目的WebRoot的根目录(也可理为%tomcat%/webapps/WebPath根目录)。既然是“/”表示为WebRoot的根目录,那么访问这个index.jsp文件的写法应该为“/index.jsp”


总结:  


 1、由浏览器发起的路径,“/”表示%tomcat根目录%/webapps根目录


 2、由服务器发起的路径,“/”表示项目中的WebRoot根目录


根据请求的资源的文件与“/”代表的路径的相对位置,即可写对访问的资源路径。


顺便提起src中的资源的访问路径


新建一个txt文件,随便写点内容,新建一个servlet,名为SourcePath,文件目录结构如下


jxf.path.SourcePath.java

public class SourcePath extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        //String path = request.getRealPath("/WEB-INF/classes/demo.txt");
        //InputStream inputStream = this.getServletContext().getResourceAsStream("/WEB-INF/classes/demo.txt");
        String path = this.getServletContext().getRealPath("/WEB-INF/classes/demo.txt");
        File file = new File(path);
        FileInputStream inputStream = new FileInputStream(file);
        byte[] bytes = new byte[1024];
        StringBuilder sb = new StringBuilder();
        int len = 0;
        while((len = inputStream.read(bytes))!=-1){
            sb.append(new String(bytes,0,len));
        }
        inputStream.close();
        response.getWriter().write(sb.toString());
    }
}

web项目中加载资源文件有以下方法:  


request对象.getRealPath("/WEB-INF/classes/demo.txt");//返回该文件绝对路径的字符串,不过在java Servlet API 2.1版本以后去除了,不推荐使用Context对象.getResourceAsStream("/WEB-INF/classes/demo.txt");//返回该文件绝对路径创建的InputStream

 

Context对象.getRealPath("/WEB-INF/classes/demo.txt");//返回该文件绝对路径的字符串而这些方法中的路径写法和上面的url原理是一样的,此时也是由服务器发起的,所以“/”代表的是WebRoot根目录,而src下的所有资源,项目部署后,都会自动放在/WEB-INF/classes目录下。所以应写为"/WEB-INF/classes/demo.txt"

目录
相关文章
|
15天前
|
消息中间件 前端开发 Java
java学习路径
【4月更文挑战第9天】java学习路径
17 1
|
20天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。
|
15天前
|
设计模式 前端开发 安全
Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
【4月更文挑战第9天】Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
15 1
|
9天前
|
Web App开发 Java 应用服务中间件
【Java Web】在 IDEA 中部署 Tomcat
【Java Web】在 IDEA 中部署 Tomcat
|
14天前
|
监控 数据可视化 安全
智慧工地SaaS可视化平台源码,PC端+APP端,支持二开,项目使用,微服务+Java++vue+mysql
环境实时数据、动态监测报警,实时监控施工环境状态,有针对性地预防施工过程中的环境污染问题,打造文明生态施工,创造绿色的生态环境。
12 0
智慧工地SaaS可视化平台源码,PC端+APP端,支持二开,项目使用,微服务+Java++vue+mysql
|
16天前
|
SQL Java Go
java项目超市购物管理系统
java项目超市购物管理系统
|
16天前
|
Java
java项目日历表
java项目日历表
|
18天前
|
安全 前端开发 Java
Java Web开发知识点学习总结
Java Web开发涉及Java基础、Servlet、JSP、数据库操作(SQL+JDBC)、MVC设计模式、Spring框架、Hibernate ORM、Web服务(SOAP&RESTful)、安全认证(HTTP Basic/Digest/OAuth)及性能优化(缓存、异步、负载均衡)。
17 3
|
21天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
21天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南