• 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

  • 相关阅读:
    解决svn working copy locked问题
    如何:给代码加上书签
    Ext Gantt Web甘特图自定义任务树
    Ext Gantt Web甘特图数据结构
    配置Apache服务器(2)
    Ext Gantt Web自定义条形图
    安装Apache服务器(1)
    IF YOU HAVE A DREAM, GO FOR IT RIGHT NOW
    发现自己是这么不理智
    这班上的
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/13498554.html
Copyright © 2020-2023  润新知