首先先明确一下下列URL的

假设一个URL是这样的losthost:8080/myservlet/path

服务器根路径:losthost:8080/

项目根路径:losthost:8080/myservlet/

明确了服务器根路径和项目根路径之后,我们就可以开始学习后面的知识了


servlet路径问题

请求转发和重定向的相对路径写法总结:

Servlet重定向jsp

resp.sendRedirect("jsp的相对路径/servlet的别名");//重定向jsp页面

Servlet请求转发jsp

req.getRequestDispatcher("jsp的相对路径/servlet的别名")
.forward(req, resp);//请求转发到jsp页面

服务器根目录

服务器的webapps目录路径 localhost:8080/

项目根目录

服务器的webapps目录下项目路径 localhost:8080/jsp/

注意:

以上两种写法其实都是相对路径,相对路径指的是从当前请求路径查找jsp所经过的路径。

请求转发和重定向的绝对路径写法总结:

重定向:

在重定向中的路径中第一个/表示服务器根目录。

示例:

resp.sendRedirect("/虚拟项目名/资源路径");//重定向jsp页面

请求转发:

在请求转发中第一个/表示项目根目录

示例:

tDispatcher("/资源路径").forward(req, resp);//请求转发到jsp页面


jsp路径问题

精华总结:

  1. 在jsp页面中进行资源之间的跳转时,使用绝对路径 。
  2. 在jsp中路径中的第一个/表示服务器根目录。
  3. 在Myeclipse中创建的jsp页面会自动生成路径处理代码basePath而basePath的值为当前项目 根目录。
  4. request.getSchema()返回的是当前连接使用的协议,一般应用返回的是http、SSL返回的是https;
  5. request.getServerName()返回当前页面所在的服务器的名字;
  6. request.getContextPath()返回当前页面所在的应用的名字。

问题:

在jsp页面中进行资源之间的跳转时,如果书写的是相对路径这样会造成如果当前文件的路径发生变更,从当前路径查找资源的相对路径都要重新进行书写。

解决:

将相对路径编程绝对路径

使用:

在jsp中路径中的第一个/表示服务器根目录。

示例:

<a href="/虚拟项目名/资源路径">访问关键字</a>

注意:

Myeclipse

创建的jsp页面会自动生成路径处理代码basePath

而basePath的值为当前项目根目录,并且在head标签中使用了

<base href="<%=basePath%>">

相当于将当前页面的资源全部默认定位为从项目根目录开始查找,我们就不需要写第一个/了

IDEA

需要手动输入或者更改模板

页面报错处理

注意:

basePath方式和添加/方法只能二选一。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
System.out.println(basePath);
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'path.jsp' starting page</title><!-- 问题:在jsp页面中进行资源之间的跳转时,如果书写的是相对路径这样会造成如果当前文件的路径发生变更,从当前路径查找资源的相对路径都要重新进行书写。解决:将相对路径编程绝对路径使用:在jsp中路径中的第一个/表示服务器根目录。示例:<a href="/虚拟项目名/资源路径">访问关键字</a>注意:在Myeclipse中创建的jsp页面会自动生成路径处理代码basePath而basePath的值为当前项目根目录,并且在head标签中使用了<base href="<%=basePath%>">相当于将当前页面的资源全部默认定位为从项目根目录开始查找,我们就不需要写第一个/了注意:basePath方式和添加/方法只能二选一。--></head><body>我是path.jsp<a href="a/a.jsp">a.jsp</a></body>
</html>

Balmy:[Servlet] 17 Servlet 路径问题​zhuanlan.zhihu.com

当前路径_[JSP] 07 JSP 路径问题相关推荐

  1. html怎么样取jsp中的路径,jsp中获得路径的两种方法和获得url路径的方法(推荐)

    是解决相对路径的问题,可返回站点的根路径. //这样获得的是绝对路径 //这样获得的是相对路径 能够更有效的防治连接的失效. request.getContextPath()得到的是项目的名字,如果项 ...

  2. jsp的相对路径问题

    test2.js  与index.jsp 放在同一文件夹下,比如: web应用/home/下面. 要把test2.js 引入到 index.jsp中,  针对三种情况,分析如下: ---------- ...

  3. jsp 获取项目路径,java获取项目路径

    1.  获取web服务器项目的真实物理路径 request.getSession().getServletContext().getRealPath("/"); 2.  相对路径的 ...

  4. JSP取得绝对路径的方法

    ${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> . 例如: <scr ...

  5. javaweb——jsp(jsp的本质是什么、jsp九大内置对象、四个域对象、jsp的主要作用)

    1.什么是jsp,它有什么用? jsp的全称是java server pages.Java 的服务器页面. jsp的主要作用是代替Servlet 程序回传html页面的数据. 因为Servlet 程序 ...

  6. 可用等式为:html+java=jsp表示jsp[8]._java jsp

    ### jsp@3脚本元素 .JSP脚本元素用来插入Java代码,这些Java代码将出现在由当前JSP页面生成的Servlet中. 脚本元素有三种格式: 声明格式<%! declaration; ...

  7. 你写的JSP就是JSP么?

    以前 Java Web是使用Java语言进行web系统开发,以前一般情况下我们写好的Java代码都要打包诚war包,然后放入到Tomcat容器下,启动Tomcat.系统会自动进行解压. 注意:前端收到 ...

  8. Javaweb8==未实现前后端分离的列表展示、新增、删除、修改功能。 servlet(逻辑处理,封装数据进域对象,转发到jsp)+jsp(el表达式获取域对象中的数据+JSTL替换if for)。

    最终环境配置: IDEA2021+JDK8+mysql connector java5+Mysql5+mybatis3.5:从数据库取出数据. +(servlet+jsp+el表达式jstl):ser ...

  9. 【jsp】jsp简介

    JSP起源: 只有局部内容需要动态产生和改变.在很多动态网页中,绝大部分内容都是固定不变的 Servlet程序的代码将非常臃肿,编写和维护都将非常困难.使用Servlet程序来输出只有局部内容需要动态 ...

最新文章

  1. python创建数据集_使用Python从图像创建数据集以进行人脸识别
  2. java基础.0——Object类
  3. 编写Linux内核模块——第三部分:按键和发光二极管
  4. python3实现mysql导出excel
  5. java有链表吗_Java数据结构之链表(Linked List)
  6. Android SQLite开发调试工具 Android Debug Database
  7. vim 编程常用的指令和快捷键
  8. flutter 动画展开菜单_Flutter ExpansionPanel 超级实用展开控件
  9. python课程_python课程大放送
  10. 百度文库下载助手使用说明
  11. SQL中的日期差函数
  12. R语言 melt()函数使用
  13. HTML与CSS重构网易严选页面
  14. 无人驾驶虚拟仿真(四)--通过ROS系统控制小车行走
  15. Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)!
  16. UltraEdit 25以后的版本 绕过试用期
  17. 我为什么没有成为华为元老,谈精准学习,避免低水平勤奋
  18. 解决git commit提示Please tell me who you are
  19. 15年前陪你一起看《泰坦尼克号》的人在哪里?
  20. 计算机病毒教案 大学,计算机病毒教案版本

热门文章

  1. qt4的quick程序升级到qt5_最新8月书单出炉!送给你程序员
  2. Swift中NSRange和Range的转换
  3. KMP算法求回溯数组的步骤
  4. 【Ant Design Pro 三】样式动态绑定 react样式绑定
  5. 微信小程序去除左上角返回的按钮
  6. iOS图片精确提取主色调算法iOS-Palette(附源码)
  7. Jenkins使用Publish Over FTP Plugin插件上传FTP详解
  8. [转]在Eclipse中使用JUnit4进行单元测试(中级篇)
  9. Lambda表达式可以被转换为委托类型
  10. VC++技术内幕(三)