Servlet---请求转发

在这里插入图片描述

servlet1

public class Servlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");

        req.setAttribute("key1","servlet1 的key1");

        RequestDispatcher requestDispatcher = req.getRequestDispatcher("/s2");

        requestDispatcher.forward(req,resp);
    }
}

servlet2

public class Servlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");

        System.out.println("servlet2:  "+username);

        Object key1 = req.getAttribute("key1");

        System.out.println("servlet是否处理:"+key1);

        System.out.println("servlet2处理自己的业务");
    }
}
请求转发的特点
  1. 浏览器地址栏没有发生变化
  2. 他们是一次请求
  3. 他们共享的是request域中的数据
  4. 可以转发到WEB-INF目录下
  5. 不能访问工程外的资源

请求转发后跳转到上级目录则会发生404,因为

 <a href="../../index.html">跳转到../../index.html</a>

..是参照浏览器中的地址栏进行跳转的,但是请求转发后地址栏是http://localhost:8080/JavaWEB/f
如果使用相对路径跳转会出现错误。
此时要在head标签下引入base标签,base标签的作用就是设置页面相对路径工作时的参考地址,href属性就是参数的地址值

<head>
    <meta charset="UTF-8">
    <title>chtml</title>
    <base href="http://localhost:8080/JavaWEB/a/b/">
</head>

其中<base href="http://localhost:8080/JavaWEB/a/b/">中的 b后面的 / 一定要注意,代表b是一个目录

WEB中 / 斜杠的不同意义

在web中 / 斜杠是一种绝对路径
/ 斜杠如果被浏览器解析,得到的地址是:

http://ip:port/
<a href="/">斜杠</a>

/ 斜杠如果被服务器解析,得到的地址是:

http://ip:port/工程路径
  1. /servlet1
  2. servletContext.getRealPath("/");
  3. request.getRequestDispatcher("/");

特殊情况:
response.sendRediect("/");
把斜杠解析得到 http://ip:port/

两个输出流的说明:
字节流 getOutputStream(); 常用语下载(传递二进制数据)
字符流 getWirter(); 常用回传字符串(常用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想成为大牛的渣渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值