目前遇到的 web 工程中要写url和路径的文件有

  • webContent中.jsp/.html :action
  • src中的servlet类 : 映射地址、重定向、请求转发、访问资源文件(webContent中、src中)
  • src非servlet类的普通类 :访问资源文件(webContent中、src中)

以下一一说明:

.jsp/.html中的路径

  form表单提交的action中要写servlet(jsp)的路径

    1. 跳转到.jsp

      action中使用相对路径,相对于当前页面。

    

<!-- from JSP1.jsp to JSP2.jsp -->
<!-- JSP1.jsp中的form -->
<form action="File/JSP2.jsp">

<!-- from JSP2.jsp to JSP1.jsp -->
<!-- JSP2.jsp中的form -->
<form action="../JSP1.jsp">

    2.跳转到servlet1

    注意,路径与package产生的目录无关。

    

//Servlet1.java 的映射地址
@WebServlet(name = "Servlet1", urlPatterns = { "/Servlet1" })

<!-- from JSP2.jsp to Servlet1 -->
<!-- JSP2.jsp中的form -->
<form action="../Servlet1">

改变servlet的映射地址,使servlet映射到与JSP2.jsp一个文件夹下

//修改servlet1的映射地址后
@WebServlet(name = "Servlet1", urlPatterns = { "/File/Servlet1" })

<!-- from JSP2.jsp to Servlet1 -->
<!-- JSP2.jsp中的form -->
<form action="Servlet1">

再次改变servlet映射地址,servlet映射到虚拟目录下

//再次修改servlet1的映射地址后,映射到virtualFile虚拟目录
@WebServlet(name = "Servlet1", urlPatterns = { "/virtualFile/Servlet1" })

<!-- from JSP2.jsp to Servlet1 -->
<!-- JSP2.jsp中的form -->
<form action="../virtualFile/Servlet1">

     3.更新:利用超链接<a>跳转到servlet,其中的href:

//相对于当前jsp的相对路径跳转到servlet,同时传递参数id = 111,111为String类//在servlet页面可以通过 request.getPatameter("id")获取111
<a href="servlet1?id=111">点击跳转到servlet1</a>

src中的servlet类

  • url注解中的要写servlet的映射地址
  •   servlet类访问webContent中的资源文件    Servlet1访问1.txt(按照tomcat中的工程结构)

//Servlet1.java 的映射地址
@WebServlet(name = "Servlet1", urlPatterns = { "/Servlet1" }) 

//利用getServletContext().getRealPath()获取web工程的绝对路径
String filePath = this.getServletContext().getRealPath("/sourceFile/1.txt");
//filePath=// D:\tomcat\apache-tomcat-8.0.50-windows-x64\apache-tomcat-8.0.50\webapps\test3\sourceFile\1.txt
BufferedReader br = new BufferedReader(new FileReader(filePath));

 

  •  访问src中的资源文件     Servlet1访问2.txt

//Servlet1.java 的映射地址
@WebServlet(name = "Servlet1", urlPatterns = { "/Servlet1" }) 

//访问src中的文件,要按照tomcat中的工程目录获取绝对路径
//servlet不要映射到虚拟目录
String filePath = this.getServletContext().getRealPath("/WEB-INF/classes/2.txt");
BufferedWriter br = new BufferedWriter(new FileWriter(filePath));

 

  •  重定向到servlet(jsp),只能用相对路径  servlet1重定向到JSP2.jsp
//重定向使用相对路径,url发生改变
response.sendRedirect("File/JSP2.jsp");

  •  请求转发到servlet,可以 用相对路径、绝对路径 servlet1请求转发到Servlet2
//相对路径
RequestDispatcher rd = request.getRequestDispatcher("Servlet2");
rd.forward(request,response);
//绝对路径
RequestDispatcher rd = request.getRequestDispatcher("/Servlet2");
rd.forward(request,response);              

src非servlet类的普通类

  

  •  普通类访问webContent中的资源文件  NormalClass中访问1.txt
//利用class获取本类所在的目录(不含pacakage,只到classes),
//利用getResource()获取资源文件绝对路径
//在webContent中则要两次返回上级目录(WEB-INF,工程名URLTest)
File filePath = new File(NormalClass.class.getClassLoader().getResource("../../sourceFile/1.txt").getPath());
FileInputStream fn = new FileInputStream(filePath);

  •  普通类访问src中的资源文件  NormalClass中访问2.txt
//利用class获取本类所在的目录(不含pacakage,只到classes),
//利用getResource()获取资源文件绝对路径
File filePath = new File(NormalClass.class.getClassLoader().getResource("2.txt").getPath());
FileInputStream fn = new FileInputStream(filePath);

注意:

注意!! 第一次打开.jsp页面时,.jsp页面的所有相对路径都是相对.jsp页面的,然而从servlet转发到jsp页面时相对路径会变成相对于servlet的路径,会导致资源文件访问不到。

如何避免:在所有相对路径前面加上 ${pageContext.request.contextPath}来获得相对web工程的目录。

如:

<!-- from JSP2.jsp to Servlet1 -->
<!-- JSP2.jsp中的form -->
<form action="../Servlet1">

改为

<!-- from JSP2.jsp to Servlet1 -->
<!-- JSP2.jsp中的form -->
<form action="${pageContext.request.contextPath}/Servlet1">

转载于:https://www.cnblogs.com/luiyuying/p/8981593.html

web工程中的各种路径(eclipse开发)相关推荐

  1. eclipse的web工程中导入jir包如何放到lib目录中

    eclipse的web工程中import的jar文件,如何自动部署到tomcat中 eclispe中导入external jar package 无法添加入webcontent中的lib中,导致tom ...

  2. html500错误原因1003无标题,web工程中404/500错误页面配置+404页面模板

    [实例简介] web工程中404/500错误页面配置+404页面模板 [实例截图] [核心代码] 247959a9-c3ea-4360-8e57-105d680b29f0 ├── 404页面模板 │  ...

  3. java 集成logback_java web工程中logback换配置文件的路径

    本人小网站:   http://51kxd.com/  欢迎大家不开心的时候访问访问,调节一下心情 web.xml中配置: logbackConfigLocation file:/datum/Data ...

  4. web项目中的相对路径和绝对路径

    文章目录 一.相对路径与绝对路径 1.相对路径 1.绝对路径 二. web应用中相对路径与绝对路径的使用 三.Web 绝对路径与相对路径的利弊 一.相对路径与绝对路径 1.相对路径 相对路径就是相对于 ...

  5. java web项目中的根路径踩坑

    以下总结来自于颜群老师课堂笔记. java web项目中的"/"怎样区分? 项目根目录: WebContent \ src(所有的构建目录) 如果WebContent中有一个文件i ...

  6. Java在WEB项目中获取文件路径

    2019独角兽企业重金招聘Python工程师标准>>> jsp中获得文件路径 1.根目录所对应的绝对路径:request.getRequestURI(): 2.文件的绝对路径:app ...

  7. java web工程中如何添加图片_java web中如何添加图片

    java web中如何添加图片 对于java可视化界面插入背景图片只需要background-image:url(图片路径)就行,而对于web项目中,并非如此 效果如下: 我们就需要在jsp页面中写J ...

  8. web工程中集成cas单点登录

    背景 cas的服务端已经搭建成功,现在需要在web项目中集成cas client.我们项目使用spring 1.在pom中配置 <!--cas单点登录 --><dependency& ...

  9. (转)WebSphere的web工程中怎么获取数据源

    原文:http://aguu125.iteye.com/blog/1694313 https://blog.csdn.net/bigtree_3721/article/details/44900325 ...

最新文章

  1. 结构化场景中的RGB-D SLAM
  2. POJ 2828 Buy Tickets | 线段树的喵用
  3. ajax重复被调用,重复jQuery ajax调用
  4. C#中通过HttpClient发送Post请求
  5. P4151 [WC2011]最大XOR和路径(线性基应用)
  6. 第十三期:你所了解的javascript?
  7. 服务器bios修改uefi,服务器 uefi bios设置
  8. 简单计算机app inventor,app inventor计算器
  9. mysql 8 nosql_MySQL8.0-NoSQL和SQL的对比及MySQL的优势
  10. Java 继承——3
  11. STM8S001J3M3还能完这么多花样,开发板尝鲜体验。
  12. java 网格包,求大神解答:JAVA网格包布局管理器小程序问题
  13. 最新python中一升级所有已安装的包方法
  14. 华硕a53s拆机图解_华硕a53s_拆机教程_图解_20140228更正
  15. 【分享贴】PCB设计思路
  16. 硬盘分区无法打开,提示“文件或目录损坏且无法读取”
  17. QGIS中WKT转为可视化涂层
  18. Win10 通知区域蓝牙图标消失问题
  19. hexo+yilia添加背景特效
  20. win7系统中的消息队列服务器,高手分析win7系统安装消息队列的详细

热门文章

  1. 如何解析字符串类型的xml
  2. C#程序员干货系列之语音识别
  3. 记一次工作中的小BUG
  4. 火眼金睛算法,教你海量短文本场景下去重
  5. mysql 创建用户远程连接
  6. Android Studio Emulator 提示 “/dev/kvm is not found” 解决办法
  7. 阿里配管专家解读:如何最优成本搭建非标准的iOS构建集群
  8. text-indent无效解决方案
  9. C语言学习笔记(五) 数组
  10. PHP GD库生成图像的几个函数总结