栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

javaweb基础:servlet第三篇 -----补充base标签

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

javaweb基础:servlet第三篇 -----补充base标签

在聊这标签的作用的时候,首先说一个tomcat默认的行为,其实这个行为在很多web服务器部署网站的时候都是这样一个逻辑,那就是在部署的网站的时候,默认会启动index.html ,而在javaweb中用的是index.jsp来实现这个功能,所以为了方便演示,直接将index.jsp删除缓存一个index.html.

然后启动tomcat访问:http://localhost:8080/javaweb/

然后再web下创建一个路径:html / test

然后创建一个a.html




    
    Title


返回首页


然后创建index.html




    
    首页


跳转到a页面


然后演示一个在html中访问一个文件资源然后返回首页的效果。

但是如果servlet进行转向呢?

而且将index.html修改:




    
    首页


 跳转到a页面

通过servlet跳转到a页面

如下测试写一个servle

@WebServlet("/test1")
public class test1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 
        req.getRequestDispatcher("/html/test/a.html").forward(req,resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);

    }
}

然后测试:

发现通过servle访问的a.html无法返回到首页的,提示404.

为什么会出现这种情况呢?

首先看聊一下同html标签进行跳跃时候网址:

第一步: 当我们访问http://localhost:8080/javaweb/index.html或 http://localhost:8080/javaweb 然后出现了首页的html。

第二步: 当我们点击跳转的时候,看网页地址为:http://localhost:8080/javaweb/html/test/a.html

第三步:然后再点击返回首页看网址为:http://localhost:8080/javaweb/index.html

可以看出这个是一种完整的网页跳转。

看一下通过servlet进行跳转的路径为:

第一步: 当我们访问http://localhost:8080/javaweb/index.html或 http://localhost:8080/javaweb 然后出现了首页的html。

第二步: 当我们点击跳转的时候,看网页地址为:http://localhost:8080/javaweb/test1  这个是通过servlet配置url然后转发到a.html

第三步:然后再点击返回首页看网址为:http://localhost:8080/index.html

 然后报错了

通过这个可以看出两者区别,这个就涉及到 (…/…/index.html)

前面聊过再相对路径中的 (…) 默认是两个一目录,而这个依托于浏览器的地址:http://localhost:8080/javaweb/test1

可以如下看:

http://localhost:8080/javaweb/test1   https://blog.csdn.net/u011863822/index.html

先消掉第二个 ..  等于如下
http://localhost:8080/javaweb    https://blog.csdn.net/u011863822/article/index.html

先消掉第一个 ..  等于如下
http://localhost:8080     /index.html

所以得到的路径就是:http://localhost:8080/index.html

通过上面的描述,明白为什么要会报错,毕竟没有这个资源路径。

当然如果根据上面的理解可以通过相对路径满足servlet的请求跳转


返回首页

但是这样的相对路径不会满足html标签跳转。

当然如果a.html中如果称绝对路径就没有这个给问题了,修改如下:

 
 
返回首页

但是如果非要用相对路径,而且要满足两个请求方式的话,就可以使用 base这个标签了。

base标签可以设置当前页面所有相对路径工作时,参照那个路径进行跳转,也就是说可以不通过url上的路径进行相对路径跳转。

所以可以将a.html修改为:




    
    Title

    


返回首页


暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017600.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号