理解java web项目中的路径问题
来源:互联网 发布:白金数据 原著 编辑:程序博客网 时间:2024/05/01 14:12
先说明请求页面的写法,在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"
- 理解java web项目中的路径问题
- 理解java Web项目中的路径问题
- 理解java Web项目中的路径问题
- 理解WEB项目中的路径问题
- java、JSP web项目中的路径问题
- JAVA WEB项目中的路径问题。
- web项目中的路径问题
- web 项目中的路径问题
- WEB 项目中的路径问题
- web项目中的路径问题
- web项目中的路径问题
- 关于java和web项目中的相对路径问题
- 关于java和web项目中的相对路径问题
- 关于java和web项目中的相对路径问题
- 关于java和web项目中的相对路径问题
- java web中的关于项目的路径问题
- JAVA[WEB]项目路径问题
- 深入理解Java Web访问路径问题
- Linux 目录结构
- 1.Two Sum
- BZOJ 1861 [Zjoi2006] Book 书架
- Probability
- math.h 三角函数
- 理解java web项目中的路径问题
- 处理:/var/redis/run/redis_6379.pid exists, process is already running or crashed
- POJ1083 Moving Tables
- A1078. 逆序对个数
- Android中BitmapFactory.Options学习
- 1.21
- Android下拉刷新与轮播图冲突解决方案
- Android 弹性ScrollView
- 简易电子钟