web工程中的各种路径(eclipse开发)
生活随笔
收集整理的這篇文章主要介紹了
web工程中的各种路径(eclipse开发)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目前遇到的 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
?
- 請求轉發到servlet,可以 用相對路徑、絕對路徑?servlet1請求轉發到Servlet2
?
src非servlet類的普通類
?
- 普通類訪問webContent中的資源文件? NormalClass中訪問1.txt
- ? 普通類訪問src中的資源文件??NormalClass中訪問2.txt
?
注意:
注意!! 第一次打開.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开发)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构之图(2-2)【邻接多重表】适用
- 下一篇: git 删除远程分支