1 前言

本文将对近期项目练习中出现的关于文件路径的问题进行分析和总结,主要涉及html页面中的href及ajax指向路径、jsp页面中href指向路径及servlet转发或重定向路径等内容,本文的分析及总结将尽量做到知其然知其所以然。

注:本文中的项目练习,是通过IDEA的MAVEN插件,部署到TOMCAT完成的。**所有html、jsp页面都在webapp文件夹下,所有src中的java文件会由maven自动编译为class文件,放在WEB-INF文件夹下。**

2 html页面标签内的路径写法

2.1 html页面之间直接跳转的路径写法

直接在标签的href中写指向的html页面文件名即可

<a href="login.html">登录</a>

2.2 html页面内通过ajax跳转到servlet的路径写法

直接在URL属性处写servlet的value值(但是最前面不要加/)即可

$.post("registerUserServlet", $(this).serialize(), function (data) {});

如果是指向servlet下的方法,写value值(但是最前面不要加/)+"/"+方法名即可

$.post("user/register", $(this).serialize(), function (data) {});

2.3 servlet内通过java代码书写的html标签的路径写法

直接在标签的href中写指向的html页面文件名即可

<a href="login.html">登录</a>

3 jsp页面标签内的路径写法

3.1 jsp页面之间直接跳转的路径写法

直接在标签的href中写指向的html页面文件名即可

<a class="btn btn-primary" href="add.jsp">添加联系人</a>

由于jsp页面中可以获取绝对路径,加上绝对路径也可以

<a class="btn btn-primary" href="${pageContext.request.contextPath}/add.jsp">添加联系人</a>

若不小心在未添加绝对路径的情况下,还在文件名前面加了个"/"符号,路径则会直接指ip+/文件下,比如上面两种情况的链接为http://localhost:8080/finalTest0/add.jsp,写错情况下或指向http://localhost:8080/add.jsp,错误写法如下

<a class="btn btn-primary" href="/add.jsp">添加联系人</a>

3.2 jsp页面内跳转到servlet的路径写法

直接在标签的href中写servlet的value值(但是最前面不要加/)即可

<a
href="FindUserByPageServlet" style="text-decoration:none;font-size:33px">查询所有用户信息
</a>

由于jsp页面中可以获取绝对路径,加上绝对路径也可以

<a
href="${pageContext.request.contextPath}/FindUserByPageServlet" style="text-decoration:none;font-size:33px">查询所有用户信息
</a>

4 servlet转发或重定向的路径写法

4.1 关于重定向后和转发后的问题

重定向的页面中,仍然可以使用相对路径,但是在转发的页面中,相对路径就会失效。关于重定向后和转发后的理解,可自行查看其他文章,下面小节内说明的只是重定向时和转发时的路径怎么写。

4.2servlet重定向到html页面的路径写法

需要写成绝对路径的形式,会正确指到http://localhost/travel/login.html;不在同一文件夹下,就使用getContextPath来查找路径,getContextPath获取的是webapp路径,再需要什么文件,在后面加就行了

response.sendRedirect(request.getContextPath()+"/login.html");

如果写成相对路径,会错误指到http://localhost/travel/user/login.html

response.sendRedirect("login.html");

4.3servlet转发到html页面的路径写法

因为是服务器做转发动作,所以要在文件名前面加"/"符号

request.getRequestDispatcher("/list.jsp").forward(request,response);

5 关于"/"符号的一些认识

转发是在服务端完成的事情,是对客户端的同一个request请求进行传递,浏览器并不知道(不产生新的请求)。(相当于拨打110,然后110内部给你分配到所属辖区)
重定向是浏览器来做的事情,重定向时,服务器返回一个状态是302的的response,里面包含了跳转的地址,由浏览器获得后,自动发送一个新的请求(产生新的请求)。(相当于拨打114查号台,然后根据返回的号码再次拨打)
————————————————
版权声明:本文为CSDN博主「搁浅浅浅丶」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhl19920118/article/details/88654078

所以只要是在同一个文件夹下的一些跳转,路径前面都不要加"/"符号,或者说重定向和普通的超链接索引是在服务器内部的文件间跑来跑去,但如果是转发,则是站在服务器全局的角度来看待自己的这些文件,所以要在路径前面加"/"符号

JavaWeb中的关于html、jsp、servlet下的路径问题的更多相关文章

  1. JSP中使用的模式——JSP+Servlet+JavaBean

    上一篇博文写到模式一:JSP+JavaBean 链接地址:http://wxmimperio.coding.io/?p=155 JSP中两种模式的总结 链接地址:http://wxmimperio.c ...

  2. java中获取项目在tomcat目录下的路径方法

    HttpServletRequest request //获取的是ROOT项目在tomcat下的路径 方法1: String path = request.getSession().getServle ...

  3. HTML JSP Servlet 的 相对路径 绝对路径

    HTML 相对路径 - 没有最前面的 /: 相对于当前文件,和OS一样 绝对路径 - 前面带 / : 相对于  http://<host>:port/ Servlet 相对路径 - 相对于 ...

  4. 在javaweb中通过servlet类和普通类读取资源文件

    javaweb有两种方式读取资源文件 在Servlet中读取,可以使用servletContext,servletContext可以拿到web所有的资源文件,然后随便读,但是这种方法不常用,尽量少在S ...

  5. 软件架构设计学习总结(18):MVC三层架构在各框架(jsp+servlet + Struts1+ Struts2+ springMVC)中的特征

    1.基于web开发中最原始的jsp+Servlet   图形化理解jsp+servlet结构: 1.从结构上分析jsp+servlet图解原理: 在基于mvc设计模式下的最原始的jsp+Servlet ...

  6. JSP Servlet WEB生命周期

    [转载] JavaWeb的生命周期是由Servlet容器来控制的总的来说分为三个阶段1.启动阶段:加载web应用相关数据,创建ServletContext对象,对Filter和servlet进行初始化 ...

  7. windows7_下Eclipse中部署tomcat7.0进行JSP+servlet开发

    环境:windows 7+EclipseJava EE IDE for Web Developers +tomcat 7.02 插件:tomcatPluginV321.zip(百度搜索下载即可) 一. ...

  8. JavaWeb中Servlet和Jsp跳转路径的写法

    最近学习时,常常要写一些页面之间的跳转或者前台和后端之间的跳转 下面总结一下自己对于这些跳转路径的写法 声明:以下讲到的jsp文件都默认在WebRoot目录下 1.表单(Jsp)->Servle ...

  9. Intellij idea创建javaWeb:实现JSP/Servlet(转)

    转自:https://www.jianshu.com/p/9684e90cf7b5 Intellij idea创建javaWeb:实现JSP/Servlet by_love唯念 关注 2016.12. ...

随机推荐

  1. JQuery实现tab页

    用ul 和 div 配合实现tab 页 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="U ...

  2. [VBA原创源代码] excelhome 对花名册进行分类

    最近在学习<菜鸟谈VBA最最基础入门<原创>>,其中第22节有一个VBA编程作业,实现对花名册进行分类. 自己花了点时间,自己丫丫学步,终于实现出来. 在原创聚集地cnblog ...

  3. spring-boot-route(八)整合mybatis操作数据库

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML ...

  4. Geography's sum up

    1.世界气候: 热带草原气候,热带雨林气候,热带沙漠气候,热带草原气候 温带季风气候,温带大陆性气候,亚热带季风和湿润性气候,温带海洋性气候 寒带气候,高原山地气候. 2.亚洲气候: 1.大陆性气候分 ...

  5. Ubuntu18.04修改apt-get源

    1)备份源文件: sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2)查看版本信息 如是Linux Mint等Ubuntu衍生版,执行: ...

  6. Combine 框架,从0到1 —— 5.Combine 常用操作符

    本文首发于 Ficow Shen's Blog,原文地址: Combine 框架,从0到1 -- 5.Combine 常用操作符. 内容概览 前言 print breakpoint handleEve ...

  7. shell-字符串及整数操作符讲解与多实践

    1. 字符串测试操作符 字符串测试操作符的作用:比较两个字符串是否相同.字符串长度是否为零,字符串是否为null(注:bash区分零长度字符串和空字符串)等. "="比较两个字符串 ...

  8. docker启动镜像报错

    docker启动镜像报错: docker: Error response from daemon: driver failed programming external connectivity on ...

  9. 本文介绍如何使用 Docker Swarm 来部署 Nebula Graph 集群,并部署客户端负载均衡和高可用

    本文作者系:视野金服工程师 | 吴海胜 首发于 Nebula Graph 论坛:https://discuss.nebula-graph.com.cn/t/topic/1388 一.前言 本文介绍如何 ...

  10. sublime破解 mac版本下载

    date: "2020-10-18T10:03:01+08:00" title: "sublime破解 mac版本下载" tags: ["sublim ...