JavaWeb 12 Response 重定向

5.3 Response 重定向


直接一句代码:resp.sendRedirect("重定向的路径");

resp.sendRedirect("/yzm");

发生错误:在这里插入图片描述

明显是,我们 缺了一部分的 路径字符串。

package com.muquanyu.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

public class RedirectServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.sendRedirect("/reponse_war/yzm");

        //super.doGet(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //super.doPost(req, resp);
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
你会发现 Location 就是我们的 重定向 路径。而 状态码 就是 302。这就是 重定向的一个 头协议。那么 这些我们只去设置 头协议,是否 就可以 实现 相应的 功能呢?答: 是可以的!实际上 sendRedirect() 方法 就是 设置这些 头协议 进行的封装。

在这里插入图片描述


5.3.1 面试题:请你聊聊重定向和转发的区别

相同点:

  • 页面都会实现跳转

不同点:

  • 请求转发的时候,url 不会发生变化。
  • 请求转发的时候,url 会发生变化。

主要是因为 转发 是 请求的资源 再去请求 另一个资源,然后最后 反馈 给你的是 最后请求的那个资源。而 重定向 是 请求的资源 提供给你 另一个 资源的 地址,让你去 重新请求 提供的这个 地址的资源!所以 才会 出现 相同点 和 不同点 。


5.3.2 index.jsp 利用表单去提交数据

  1. 先写一个 接收这个提交数据的 网页
package com.muquanyu.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

public class loginTest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setCharacterEncoding("utf-8");
        resp.getWriter().print("提交成功!");
        //super.doGet(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //super.doPost(req, resp);
    }
}
  1. 写一下 表单
<html>
<body>
<h2>Hello World!</h2>
<%@page pageEncoding="utf-8"%>
<form action="${pageContext.request.contextPath}/login" method="get">
    用户名:<input type="text" name="username"><br>
    密码:<input type="password" name="psw"><br>
    <input type="submit">
</form>

</body>
</html>

${pageContext.request.contextPath} 获取 当前 项目的路径

<%@page pageEncoding="utf-8"%> 设置页面 编码显示

在这里插入图片描述

在这里插入图片描述
3. 进行 数据的 获取 和 使用数据,并且 再次 尝试 重定向到 jsp 文件。

package com.muquanyu.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

public class loginTest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        //resp.getWriter().print("提交成功!");
        String username = req.getParameter("username");
        String password = req.getParameter("psw");

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

        resp.sendRedirect("/reponse_war/success.jsp");
        //super.doGet(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //super.doPost(req, resp);
    }
}
  • success.jsp
<%--
  Created by IntelliJ IDEA.
  User: muqua
  Date: 2021/8/12
  Time: 9:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>success</h1>
</body>
</html>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值