目前遇到的 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">

web工程中的各种路径(eclipse开发)的更多相关文章

  1. Servlet接口的实现类,路径配置映射,ServletConfig对象,ServletContext对象及web工程中文件的读取

    一,Servlet接口实现类:sun公司为Servlet接口定义了两个默认的实现类,分别为:GenericServlet和HttpServlet. HttpServlet:指能够处理HTTP请求的se ...

  2. web工程中URL地址的推荐写法

    三.web工程中URL地址的推荐写法 使用c标签<c:url value="" /> 会自动添加项目名 -> value中的值 前面要加 “/” 在JavaWeb ...

  3. web工程中URL地址的写法

    在开发中我们不可避免的要碰到许多需要写URL地址的情况,这常常让我们感到头疼.下面笔者推荐一种简单的做法.URL地址分为绝对路径和相对路径两种.相对路径又分为相对资源路径和相对根路径.显然绝对路径在开 ...

  4. java web项目中 获取resource路径下的文件路径

    public GetResource{ String path = GetResource.class.getClassLoader().getResource("xx/xx.txt&quo ...

  5. (转)关于java和web项目中的相对路径问题

    原文:http://blog.csdn.net/yethyeth/article/details/1623283 关于java和web项目中的相对路径问题 分类: java 2007-05-23 22 ...

  6. 读取web工程中.properties资源文件的模板代码

    读取web工程中.properties资源文件的模板代码 // 读取web工程中.properties资源文件的模板代码 private void test2() throws IOException ...

  7. 如何在Web工程中实现任务计划调度

    转载自: http://www.oschina.net/question/146385_37793?sort=time 下面就Servlet侦听器结合Java定时器来讲述整个实现过程.要运用Servl ...

  8. 关于eclipse中MAVEN WEB工程中编译问题

    这几天是被java的环境搞疯了,我先是搭了一个spring+springmvc+mybatis的工程,在家里跑了一下,没有问题,把工程带到公司里用,却一直不能使用. 按常理来说,只要工程发生一点变化, ...

  9. IDEA定位开发文件在左边工程中的文件路径

    IDEA新公司入职使用第七天,基本快捷键和BUG调试已经搞透了!从最开始的配置到现在的适应确实是一个不小的进步,前几天每天加班太忙没有时间更新博客,明天就是五一假期,现在将刚掌握的一点IDEA技术写出 ...

随机推荐

  1. MongoDB(二)创建更新删除文档

    插入并保存文档操作 用insert向目标集合插入文档,如果没有_id键则会自动添加.最后自动保存. >db.foo.insert({"bar":"baz" ...

  2. 记我安装Caffe的血泪史(1)

    Caffe的安装我主要参考的是这篇博客 http://blog.csdn.net/ubunfans/article/details/47724341 按照他的方法我很快就安好了cuda8(为后面安装了 ...

  3. PCL:PCL可视化显示点云

    (1):引用:仅仅是简单的显示点云,可以使用CloudViewer类.这个类非常简单易用.但要注意,它不是线程安全的.如果要用于多线程,还要参考PCLVisualizer. 需要注意的是,PointC ...

  4. What's Dead & Exploded in Swift's exception stack?

    The Swift compiler marks function arguments for a number of reasons, mostly related to internal opti ...

  5. Linux date命令的用法(转)

    1.命令:date 2.命令功能:date 可以用来显示或设定系统的日期与时间. 3.命令参数 -d<字符串>:显示字符串所指的日期与时间.字符串前后必须加上双引号: -s<字符串& ...

  6. USACO 2008 Mar Silver 3.River Crossing 动态规划水题

    Code: #include<cstring> #include<algorithm> #include<cstdio> using namespace std; ...

  7. gradle多模块构建集成swagger

    1.首先说一下软件的版本:springboot:1.5.2:springcloud:D-SR1:swaager2:2.6.0:gradle:4.5.工程模块是分开的单独的entity,api,mapp ...

  8. P1423 小玉在游泳

    ... 题目描述 小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦.已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%.现在小玉想知 ...

  9. https自签证书

    linux自带openssl,所以最好在linux平台操作 第一步:生成采用des3算法保护的私钥:openssl genrsa -des3 -out private-rsa.key 1024 命令执 ...

  10. Python 使用matplotlib模块模拟掷骰子

    掷骰子 骰子类 # die.py 骰子类模块 from random import randint class Die(): """骰子类""&quo ...