一、现象与概念

1. 问题

在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同一个文件夹下时,则会出现路径混乱问题。

2. 绝对路径概念

相对于contextPath(当前Web应用的上下文)的路径。

解决方案:超链接用绝对路径而不是相对路径。若/代表的是站点的根目录,在其前面加上contextPath。

<a href="<%= request.getContextPath() %>/TestServlet">To B</a>

二、JavaWeb开发中的'/'含义总结

1. 当前Web应用的根路径

'/'代表http://localhost:8080/contextPath/ :由Servlet来处理的地址

1)转发:request.getRequestDispatcher("/path/b.jsp").forword(request, response);

2)web.xml文件中映射Servlet访问路径

<servlet-mapping><servlet-name>TestServlet</servlet-name><url-pattern>/TestServlet</url-pattern></servlet-mapping>

3)各种定制标签中的'/'。

2. Web站点的根路径

'/'代表http://localhost:8080/ :由浏览器来处理的地址

1)超链接:<a href="/TestServlet">To B</a>

2)form标签中的action:<form action="/b.jsp">

3)重定向:response.sendRedirect("/b.jsp");

3.站点根目录和css路径问题 (jsp是服务器端程序,地址是变化的,引用时一般用站点根目录的相对路径)
我们称类似这样的相对路径/test/…. 为相对于站点根目录 的相对路径 。

当在jsp中引入css时,如果其相对路径相对于当前jsp文件的,而在一个和这个jsp的路径不一样的servlet中forward这个jsp时,就会发现这个css样式根本没有起作用。这是因为在servlet中转发时css的路径就是相对于这个servlet的相对路径而非jsp的路径了。所以这时候不能在jsp中用这样的路径:<link
href="one.css" rel="stylesheet" type="text/css">或者<link
href="../../one.css" rel="stylesheet"
type="text/css">类似href="one.css"和../../one.css的html相对路径是相对于引用这个css的文件(a.jsp)的相对路径
。而在servlet中转发时就是相对于这个servlet的相对路径了,因为jsp路径和servlet路径是不一样的
,所以这样的引用肯定是出错的。
所以这个时候,要用站点根目录,就是相对于http://192.168.0.1/的目录,以“/”开头。
因此上述错误应更正为href=”/test/one.css” 类似的站点根目录的相对目录。这样在servlet转发后和jsp中都是相对于站点根目录的相对路径 ,就能正确使用所定义的css样式了。

页面跳转问题:

Forward 高, Redirect 低, 因为Redirect 的流程是这样的, request1 sent to server, server return back to client, 然后

request2 then sent to server. 但是Forward 仅在server side处理, 对client side 是透明的. 由于Redirect 有两次传输, 所以效率低.

范围:
由于对request.setAttribute() 来说, 它携带的对象生存范围只在request内, 所以Redirect 方式会导致request携带的对象丢失.

Servlet跳转到JSP页面后的路径问题相关解释的更多相关文章

  1. Eclipse 新建.jsp页面后,页面头部标签报错的解决方法

    Eclipse 新建.jsp页面后,页面头部标签报错的解决方法 1.报错地方: 2.解决方法: .jsp页面右键==>BUild Path ==>Configure Build Path. ...

  2. jsp篇 之 jsp页面中的路径问题

    jsp页面中的路径问题: 一般情况下,jsp中路径问题是和我们之前在servlet中讨论的html里面的路径问题是一 样的,但是在[jsp中可以动态获得该项目的url]. 如果在jsp页面的上面写了这 ...

  3. Servlet跳转到Jsp的指定div

    问题: 首页点击一个连接,切换div(id = cc_bi)             <div id="K_a">                 <a href ...

  4. 数据库中的记录通过servlet回显到jsp页面中(连接数据库或者查询參照:对数据进行增删改查)

    我们常常会用到通过图书的名称来查询图书那么这种话我们也就会使用到从数据库中搜索出数据而且载入到自己的Jsp页面中 这种话我们须要将从数据库中获取到的数据放进响应中然后通过%=request.getAt ...

  5. JSP编译成Servlet(三)JSP编译后的Servlet

    JSP编译后的Servlet类会是怎样的呢?他们之间有着什么样的映射关系?在探讨JSP与Servlet之间的关系时先看一个简单的HelloWorld.jsp编译成HelloWorld.java后会是什 ...

  6. 【转载】spring-boot 项目跳转到JSP页面

    原路径:https://blog.csdn.net/qq_36820717/article/details/80008225 1.新建spring-boot项目  目录结构如下 2.新建TestCon ...

  7. ajax 如何提交数据到后台jsp页面,以及提交完跳转到jsp页面

    我logincheck.jsp页面取传参数代码: String user=request.getParameter("user1"); String pwd=request.get ...

  8. linux中安装eclipse,安装好之后不能直接建servlet,不能直接在jsp页面中run on server.权限在作怪,我猜的,

    最近按照网上的教程安装了eclipse,开始很开心,但是慢慢的用的时候发现,不能在jsp页面run on server ,不能创建servlet,我也是醉了,我当时就猜测是权限问题,很多软件安装之后都 ...

  9. Eclipse添加jsp页面后引入java指令报错解决方法

    新建jsp页面老提示: Multiple annotations found at this line: - The superclass "javax.servlet.http.HttpS ...

随机推荐

  1. spring学习笔记-AOP

    1.aop:aspect oriented programming 面向切面编程 2.aop在spring中的作用:   提供声明式服务(声明式事务) 允许用户实现自定义切面 3.aop:在不改变原有 ...

  2. docker学习(一)

    在工作和生活中免不了要学习新的东西.学习新东西要和已有的东西相结合,要有较快的效率.今天学习一下docker的使用,也锻炼一下自己学习新东西的能力. 1.学习docker,首先要下载docker.首先 ...

  3. 3D Slicer Reconstruct CT/MRI

    3D Slicer Reconstruct CT/MRI 1. Load DCM file of your CT/MRI 2. Go to Volume Rendering, click the ey ...

  4. HBuilder控制台集成命令提示符(终端/CMD)功能

    参考:https://jingyan.baidu.com/album/6b97984dc9cda31ca2b0bf00.html?picindex=3

  5. mybatis03--字段名和属性名不一致

    1.修改数据库中的字段 2.运行根据id查询所有的学生信息的测试方法会出现下面的异常 也就是说明 数据库中的字段没有个实体类中的属性名一致 3.修改StudentMapper.xml文件中的列名 4. ...

  6. Map 嵌套存储Map

    import java.util.HashMap;import java.util.Iterator;import java.util.Set;import java.util.Map.Entry; ...

  7. Java应用之shiro

    Apache Shiro是一个强大而灵活的开源安全框架,它能够干净利落地处理身份认证,授权,企业会话管理和加密. 以下是你可以用 Apache Shiro所做的事情: 1.验证用户 2. 对用户执行访 ...

  8. VS code -python 使用笔记本

    1--使用虚拟环境 |----setting->search: python.venv->设置  venv path (你创建的虚拟环境文件夹所在路径,此处我的是 - 目录下) |---- ...

  9. 编译安装centos6.9 php7.0 mysql5.6 nginx1.8

    2018年3月15日 11:41:40 注意文章时效! 此文章不是给新用户参考的,没有每一步的操作,请注意! yum -y groupinstall "Development Tools&q ...

  10. 求职季全攻略:优秀的UX设计师作品集该如何准备?

    这是一篇关于如何制作杰出的UX设计师作品集,看了下文,我们在2019年冲冲冲~制作出自己的作品集! 转自墨刀公众号. Paul Rand 曾经说:“设计很简单,因而也复杂.” 也许你已经掌握了所有的U ...