Servlet 入门—请求转发和重定向

入门案例以登录为例子,介绍了servlet 的概念以及请求响应模型。实际的工程中,登录后通常都会跳转到新的页面。挑战就是我们今天要学习的新的知识点。

请求转发

1.  从 index.jsp 复制一个新的页面,作为登录成功后跳转的新页面

页面内容:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>首页</title>
  </head>
  <body>
        欢迎您, <%= request.getAttribute("username") %>
  </body>
</html>

2. 修改后台 servlet

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // req 对象获取客户端发送过来的请求参数
        // 解决请求参数乱码
        req.setCharacterEncoding("utf-8");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println("Your Input: " + username + "/" + password);
        // 解决响应参数乱码
        resp.setContentType("text/html;charset=utf8");
       // resp.getWriter().write("登录成功!");
        // 请求转发
        // 1. 携带登录成功的用户名到页面
        req.setAttribute("username", username);
        // 2. 通过请求转发的方式,跳转到 success.jsp 页面
        req.getRequestDispatcher("success.jsp").forward(req, resp);

    }

3. 启动 tomcat 验证

 输入用户名密码,点击登录后:

重定向

1. 修改 success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>首页</title>
  </head>
  <body>
        欢迎您, <%= session.getAttribute("username") %>
  </body>
</html>

2. 修改后台 servlet

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // req 对象获取客户端发送过来的请求参数
        // 解决请求参数乱码
        req.setCharacterEncoding("utf-8");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println("Your Input: " + username + "/" + password);
        // 解决响应参数乱码
        resp.setContentType("text/html;charset=utf8");
       // resp.getWriter().write("登录成功!");

        // 重定向
        // 1. 携带登录成功的用户名到页面
        req.getSession().setAttribute("username", username);
        // 2. 通过重定向的方式,跳转到 success.jsp 页面
        resp.sendRedirect("success.jsp");
    }

3. 启动 tomcat ,验证

区别 

跳转页面可以通过请求转发和重定向中的任意一种方式实现,具体区别:

1.  请求转发是 request 对象的方法,重定向是 response 的方法;

2. 请求转发,转发的是同一个请求,request.setAttribute 后,页面中还能通过 request 获取传参;

    重定向,是让浏览器发第二次请求,所以无法继续通过 request 传递参数,需要借助 session !

3. 浏览器地址栏变化:请求转发地址栏不会变化,重定向地址栏会变成新的地址!


 如果觉得还不错的话,关注、分享、在看(关注不失联~), 原创不易,且看且珍惜~

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

【非典型Coder】

赏个鸡腿吧

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

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

打赏作者

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

抵扣说明:

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

余额充值