web工程中的各种路径(eclipse开发) 您所在的位置:网站首页 java获取webcontent路径 web工程中的各种路径(eclipse开发)

web工程中的各种路径(eclipse开发)

2023-09-05 18:57| 来源: 网络整理| 查看: 265

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

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

以下一一说明:

 

.jsp/.html中的路径

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

    1. 跳转到.jsp

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

    

 

 

    2.跳转到servlet1

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

    

 

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

 

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

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

 

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

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

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

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

 

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工程的目录。

如:

 改为

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有