zoukankan      html  css  js  c++  java
  • Servlet 04: 什么是重定向

    以RegisterServlet.java为例:

      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        int age = Integer.parseInt(request.getParameter("age"));
        String gender = request.getParameter("gender");

        gender = new String(gender.getBytes("iso-8859-1"), "utf-8");

        boolean isSuccess = DBUtil.addUser(username, password, age, gender);
        if(isSuccess){
          request.setAttribute("message","你注册成功了,请登录!");

          // 请求转发 (至login.jsp)
          // request.getRequestDispatcher("login.jsp").forward(request,response);

          // 重定向 (也可以跳转至login.jsp页面)

          response.sendRedirect("login.jsp");
        }else{
          request.setAttribute("message","很遗憾, 由于用户名重复, 注册失败了, 请你重新注册!");
          request.getRequestDispatcher("register.jsp").forward(request,response);
        }
    }

    效果:

     

    重定向和转发的区别:

    <1>  首先, 界面上没有提示信息 (注册成功,请登录!)

    <2>  其次, URL发生了变化 (login.jsp vs. register_do)

    图解

     在重定向中, 不能通过request对象来传递数据。

    类比

      类似于打10086, 请求转发类似于转接服务

      而重定向相当于打了10086后, 又打了12315

  • 相关阅读:
    c# 测试篇之Linq性能测试
    F# 笔记
    c# DataSource和BindingSource
    .net中配置的保存格式笔记
    泛型约束(转)
    c# 调用showDialog后需要Dispose
    c# 实现ComboBox自动模糊匹配
    c# 二进制或算法实现枚举的HasFlag函数
    C# WinForm自定义控件整理
    微软中文MSDN上的一些文章链接
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/13498554.html
Copyright © 2011-2022 走看看