jsp页面为什么要加入下面这段代码?原因是什么?请举例说明。 jsp页面添加 page这段代码后,用浏览器打开就直接显示源...

作者&投稿:蓝胥 (若有异议请与网页底部的电邮联系)
jsp中的basePath和path2010-01-13 11:01在JSP中的如果使用 "相对路径" 则有

可能会出现问题.

因为 网页中的 "相对路径" , 他是相对于 "URL请求的地址" 去寻找资源.

上面这句话是什么意思呢 ?
举个例子:
假如我们有一个项目: MyApp
在该项目下, 有一个jsp文件夹
该文件夹下包括:
login.jsp // 登陆页面
register.jps // 注册页面

我们在浏览器中输入地址 (注意: 地址的内容):
http://localhost:8080/MyApp/jsp/login.jsp
这时候, 浏览器会链接到 "登陆页面" (login.jsp)
在login.jsp文件内包含了如下 "部分代码":
<a href="jsp/register.jsp">注册用户 </a>

那么,如果我们点击这个链接,就会在浏览器地址栏中, 出现如下错误链接:
http://localhost:8080/MyApp/jsp/jsp/register.jsp

看~~
为什么会出现"/jsp/jsp/register.jsp"呢?
因为, 网页中的"相对链接", 是相对于你所 "请求的URL路径" 所决定的.

即:

因为这里请求路径是:http://localhost:8080/MyApp/jsp/login.jsp

那么, 浏览器 就会在这个路径下(即:http://localhost:8080/MyApp/jsp/)去找

jsp/register.jsp
所以就会出现如下错误内容:
http://localhost:8080/MyApp/jsp/jsp/register.jsp

上面的问题,就是调用页面和被调用页面的URL不同所造成的,
此类错误也常常会出现在2个页面之间进行 "转发"(forward) 操作的时候。
因为forward是在后台进行的,对客户端来说是透明的。(即: URL不改变,而数

据内容却是另一个页面返回来的。。。)

那么如何解决这问题呢?

(一)方法一:直接采用绝对路径 (不推荐)
在JSP页面端,获得本项目的绝对地址(如果你的项目叫MyApp,那么获得到的地

址就是 http://localhost:8080/MyApp/):
代码如下:
<!-- **************方法一***************** -->
<%@ page language="java" pageEncoding="GBK"

contentType="text/html;charset=gbk" isELIgnored="false"%>
<%
String path = request.getContextPath();
// 获得本项目的地址(例如: http://localhost:8080/MyApp/)赋值给basePath

变量
String basePath = request.getScheme()+"://"+request.getServerName()

+":"+request.getServerPort()+path+"/";
// 将 "项目路径basePath" 放入pageContext中,待以后用EL表达式读出。
pageContext.setAttribute("basePath",basePath);
%>
<html>
<head> </head>
<body>
<a href="${pageScope.basePath}jsp/register.jsp">
</body>
</html>
<!-- *************************************-->

我们可以看到,在标签 <a>中的href属性内,我们直接采用了
“本项目路径 ${pageScope.basePath}” 加上 "jsp/register.jsp" ,
从而构成一个绝对路径(即: http://localhost:8080/MyApp/jsp/register.jsp)

但是这样做有一个很不好的地方,那就是我们必须要在每个链接的前面都要加上

“${pageScope.basePath}”
如果这样做的话,将是一件很可怕的事情。

(二)方法二: 利用html中的 <base>标签(推荐)
下面是对html中的 <base>的介绍:
base 元素可规定页面中所有链接的基准 URL
默认情况下,页面中的链接(包括样式表、脚本和图像的地址)都是相对于当前

页面的地址(即:浏览器地址栏里的请求URL)。
我们可以使用 <base>标签中的href属性来设置,所有的“相对基准 URL”。

上面说的是什么意思呢?我们来看看代码就知道咯~~

这是JSP端的代码
下面的代码 (十分类似上面 "方法一" 中的JSP代码)
但是这里我们并没有采用 ${pageScope.basePath}+"相对路径地址" 的方法,
而是采用了html文件中的 <base>标签:
代码如下:
<!-- *************JSP代码******************-->
<%@ page language="java" pageEncoding="GBK"

contentType="text/html;charset=gbk" isELIgnored="false"%>
<%
String path = request.getContextPath();
// 获得项目完全路径(假设你的项目叫MyApp,那么获得到的地址就是

http://localhost:8080/MyApp/):
String basePath = request.getScheme()+"://"+request.getServerName()

+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<!-- base需要放到head中 -->
<base href=" <%=basePath%>">
</head>
// 这里我们就可以直接使用相对路径(即: 相对于base标签)
<a href="jsp/login.jsp">Login </a>
</html>
<!-- *************************************-->

大概看完了上面的代码,或许您还是有些疑惑 *_*~~
不过当您看到了,下面的代码,可能就豁然开朗了 (*^__^*) 嘻嘻……。

当我们去执行上面的那段JSP代码后,我们可以在浏览器中可以查看,他所返回

给客户端的html代码:
执行完上述JSP后,所返回的html代码如下:
<html>
<head>
<base href="http://localhost:8080/MyApp/">
</head>
// 设置了 <base>后,相对路径,相对于的就是base中的路径,而不再是浏览器

地址的请求路径啦~~~
<a href="jsp/login.jsp">Login </a>
</html>

我们可以看到JSP返回的html代码中,包含了 <base

href="http://localhost:8080/MyApp/">内容。
也就是说,在本html文件中,遇到的所有 “相对链接(例如: <a

href="jsp/login.jsp">)”,都是相对于base
的路径(即:http://localhost:8080/MyApp/),所以我们就可以进行的使用 相对

链接,而不必担心,
转发操作(forward)或 请求地址不同不同所造成的页面无法找到的错误啦~(即:

HTTP: 404)。。。

本文来自CSDN博客,转载请标明出处:

http://blog.csdn.net/liuboscu/archive/2009/08/23/4475520.aspx

这个代码不是必须的,很多时候你的页面不会用到,它是用来获取当前页面路径的。
建议楼主看点JSP,Servlet之类基础的书。

在新建的jsp页面里有这段代码basePath变量是获取当前页面的绝对路径,其实你没有用的,可以把它去掉。。

获得绝对路径

jsp出现这准情况是怎么回事~

404是找不到路径。地址栏不能有中文的,你看你的地址栏有中文

如果是springmvc,那么直接在web.xml或者其他读取的xml里添加webapp xmlns等一串话
我现在用spring tool suite也碰到同样的情况,但我这里都没有web.xml,不知道怎么办

SP代收费是啥?我是滴滴小王卡有5元SP代收费?
答:2、您可登陆手机营业厅客户端,点击服务>查询>其他业务查询>SP代收费,即可查询近5个月的SP代收费信息。3、如需了解详情,建议您可联系归属地联通人工客服咨询,实际情况以当地政策为准。———超越7待,沃更精彩,iPhone7优惠热卖中!您可直接点击 http://www.10010.com/037SO 进入活动页面(温馨...

sp代收费是什么意思?
答:由于不同SP代收费业务具体退订方式不尽相同,如上述方式无法退订,建议联系号码归属地的联通客服了解。———超越7待,沃更精彩,iPhone7优惠热卖中!您可直接点击 http://www.10010.com/037SO 进入活动页面(温馨提示:各地市优惠活动不尽相同,具体以活动页面为准。)您可能还关注:优惠大赠送!【4G...

电信sp业务是什么意思
答:是指在原有通信网的基本业务(电话、电报业务)以外开发的业务,如数据库检索、数据处理、电子数据互换、电子信箱、电子查号和电子文件传输等业务。目前我国电信网上开放的主要增值业务有:(1)电子信箱,也称电子邮件。最新一代的电子信箱是消息处理系统(MHS),可实现异种计算机之间互通。电子信箱为用户...

sp代收费是什么?
答:1、SP代收费是指联通公司为第三方服务经营者代收的费用,包括代收联通在信信息费、代收信息台信息费以及其他增值业务代收的信息费。2、9089021400产品代码对应的业务是“通话助理”,是针对被叫用户不便接听、无法接听来电、换号等场景设计的增值业务,通过语音和短信实现对主被叫的提示,改善主被叫的通话...

什么是sp代收费业务?
答:SP代收费是指联通公司为第三方服务经营者代收的费用,包括代收联通在信信息费、代收信息台信息费以及其他增值业务代收的信息费。———超越7待,沃更精彩,iPhone7新品首发!您可直接点击 http://www.10010.com/037SO 进入活动页面(温馨提示:各地市优惠活动不尽相同,具体以活动页面为准。)您可能还...

拉卡拉sp620初次使用
答:这个时候我们按一下确认键,会显示一个有拉卡拉的logo的页面,这个是欢迎页,这个时候我们再按一下确认,就进入主页面了。2.刷卡操作 进入主页面以后,会有多个数字按键的选项,其中“1.消费”,这个是我们平时最常用的一个选项,需要刷卡的时候,我们就点一个这第一个“消费”,然后属于金额,然后按确认键,...

2016年12月sp代收费是什么?_?
答:1、SP代收费是指联通公司为第三方服务经营者代收的费用,包括代收联通在信信息费、代收信息台信息费以及其他增值业务代收的信息费。2、您可通过以下渠道查询增值业务详单进行核对:【1】登录网上营业厅http://www.10010.com/01HBZ 点击“自助服务”>“查询”>“其他业务查询”>“增值业务详单”;【...

微信怎么加密防止别人查看
答:微信密码锁,其实就是应用锁,下面我就以我的oppo k3为例,教你如何设置密码。具体操作如下: 1、打开手机设置,找到并点击【隐私】 2、进入【隐私】选项界面后,点击【应用锁】 3、进入页面后,首先要你输入隐私密码(因为系统保护隐私截图不了),输入后,找到微信app,将按钮点亮就可以了。 希望能够帮助到你! 1 评论...

什么是sp代收费,
答:SP代收费是指联通公司为第三方服务经营者代收的费用,包括代收联通在信信息费、代收信息台信息费以及其他增值业务代收的信息费。由于各类业务退订方式有所不同,如需退订增值业务,您可尝试登录网上营业厅http://www.10010.com/首页点击“业务办理”>“其他业务”>“增值业务”>“我的新业务”>“业务...

网页设计中DIV是什么意思?
答:在HTML网页源代码中DIV是什么意思,出现很多DIV,究竟有什么作用和功能?在网页html中查看源代码会看到很多代码,包括DIV、span、h1、b加粗、strong等标签组成。html中div使用截图一段HTML源代码截图其中包括div span h1标签使用 培训是针对那些有条件的人来说,很多小伙伴更喜欢的是自学。但是一个人自学...