zoukankan      html  css  js  c++  java
  • Servlet(五):请求转发和重定向

    请求转发:

      问题:
        服务器在接收到浏览器的请求后,仅仅使用一个 Servlet进行请求处理,会造成不同的Servlet逻辑代码 冗余,Servlet的职责不明确。

      解决:
        使用请求转发。
      特点:
        一次请求
        地址栏信息不改变。

    Request 对象作用域
      问题:

        使用请求转发后,不同的 Servlet 之间怎么进行数据的共享呢?或者说数据怎么从一个 servlet 流转给另外一个 Servlet 呢?
      解决:

        使用 request 对象的作用域
      使用:
        request.setAttribute(objectname,Objectvalue);
        request.getAttribute(Objectobj)
      作用:

        解决了一次请求内的不同 Servlet 的数据(请求数据+其他数据)共享问题。

      作用域:基于请求转发,一次请求中的所有 Servlet 共享。
      注意:
        使用 Request 对象进行数据流转,数据只在一次请求内有效。
      特点:
        服务器创建
        每次请求都会创建
        生命周期一次请求

    重定向
      问题:
        如果当前的请求,Servlet 无法进行处理怎么办?
        如果使用请求转发,造成表单数据重复提交怎么办?
      解决:
        使用重定向
      使用:
        response.sendRedirect(“路径”).
        本地路径为:uri
        网络路径为:定向资源的 URL 信息
      特点:
        两次请求
        浏览器地址栏信息改变
        避免表单重复提交

    Servlet流程总结:
     *         浏览器发起请求到服务器(请求)
     *      服务器接受浏览器的请求,进行解析,创建request对象存储请求数据
     *      服务器调用对应的servlet进行请求处理,并将request对象作为实参传递给servlet的方法
     *      servlet的方法执行进行请求处理
     *              //设置请求编码格式
     *              //设置响应编码格式
     *              //获取请求信息
     *              //处理请求信息
     *                  //创建业务层对象
     *                  //调用业务层对象的方法
     *              //响应处理结果
     *请求转发学习:
     *        作用:实现多个servlet联动操作处理请求,这样避免代码冗余,让servlet的职责更加明确。
     *        使用:
     *                req.getRequestDispatcher("要转发的地址").forward(req, resp);
     *                地址:相对路径,直接书写servlet的别名即可。
     *        特点:
     *            一次请求,浏览器地址栏信息不改变。
     *        注意:
     *            请求转发后直接return结束即可。
     *reuqet作用域:
     *        解决了一次请求内的servlet的数据共享问题
     *重定向:
     *        解决了表单重复提交的问题,以及当前servlet无法处理的请求的问题。
     *        使用:
     *            resp.sendRedirect(String uri);
     *        示例:
     *            resp.sendRedirect("/login/main");
     *        特点:
     *            两次请求,两个request对象。
     *            浏览器地址栏信息改变
     *        时机:
     *            如果请求中有表单数据,而数据又比较重要,不能重复提交,建议使用重定向。
     *            如果请求被Servlet接收后,无法进行处理,建议使用重定向定位到可以处理的资源。    
     *
  • 相关阅读:
    2018年最新整理ios APP审核被拒的常见原因
    在线一键生成安卓证书keystore文件
    iOS证书的类型功能和申请介绍
    【2018】ios app真机调试到上架App Store完整教程
    预防SQL注入
    Python模块——HashLib(摘要算法)与base64
    Python加密与解密
    PostgreSQL常用命令
    二级子目录(后台目录)设置二级域名
    积累
  • 原文地址:https://www.cnblogs.com/jiulonghudefeizhai/p/10105799.html
Copyright © 2011-2022 走看看