• #Servlet——Web之间跳转和信息共享、三大作用域对象


    为什么需要Servlet之间的交互?

    1.Web组件(Servlet/JSP)的交互:
        Web组件之间的跳转,数据共享.
            1.ListServlet:
                1.接收请求参数
                2.调用业务逻辑处理请求    List<Student> list=dao.list()
                3.直接通过输出流对象输出到list.jsp页面,负责输出所有的学生信息 req.getRequestDispatcher("/list.jsp").forward(req,resp)
                    把student传递jsp页面,跳转到jsp,负责输出student信息
            2.list.jsp
                1.获取到student对象
                2.将student信息展示
                3.把参数传递给DeleteServlet
            3.DeleteServlet
                1.获取请求参数
                2.调用业务逻辑处理请求
                3.跳转到ListServlet页面 resp.sendRedirect("/listServlet")(重新查询所有的学生信息,重新把信息转发到list.jsp)
            ![](https://img2020.cnblogs.com/blog/1668748/202004/1668748-20200426192229808-309800312.jpg)
    

    Web之间的跳转和信息共享

    1.Web组件之间的跳转方式
        *请求转发(forward) req.getRequestDispatcher("str").forward(res,resp)
        *重定向(redirect) resp.sendRedirect("str")
        *请求包含(include)
    
    2.请求转发
        *从Servlet1,请求转发到Servlet2. Servlet1完成一部分功能,再跳转到Servlet2继续完成剩下的功能.
            1.语法:
                req.getRequestDispatcher("str").forward(req,resp);
                参数: path,表示跳转的目标的路径(资源的名称)
                注意: 不要忘了forward
            2.特点:
                1.请求转发只发出一次请求
                2.地址栏不会发生变化
                3.响应效果由Servlet2决定
                4.请求转发不可以跨域共享资源,只能跳转到当前应用的资源
                5.共享同一个请求的资源
                6.请求转发可以访问WEB-INF下的资源
        ![](https://img2020.cnblogs.com/blog/1668748/202004/1668748-20200426194815175-1144608610.png)
    

    URL重定向

    1.语法:
        respond.sendRedirect(String url)
    2.特点:
        1.浏览器的地址栏发生改变
        2.重定可以跨区域访问,向发出两次请求
        3.重定向可以访问外部资源
        4.重定向不可以访问WEB-INF下的资源
        5.因为重定向是两次请求,所以不可以共享请求资源
        6.最终响应给浏览器的效果由Servlet2决定
        ![](https://img2020.cnblogs.com/blog/1668748/202004/1668748-20200426202708161-109977267.png)
    

    Servlet三大作用域对象

    1.目的: 共享数据
        1.request
        类型:HttpServletRequest
        每一个请求都是一个新的request,如果想共享同一请求的资源,只能使用请求转发
        2.session
        类型:HttpSession
        每一次会话都是一个新的Session对象,如果想在一次对话多次请求中共享数据,只能使用Session
        3.application
        类型: ServletContext
        应用对象,Tomcat启动到Tomcat结束表示一个应用,在一个应用中有且只有一个application对象,作用整个Web应用,可以实现多次会话之间的数据共享
    

    作用域对象如何共享数据:

    1.设置作用域中的共享数据.
        作用域对象.setAttribute(String name,Object value)
    2.获取作用域的共享数据
        作用域对象.getAttribute(String name)
    3.删除作用域的共享数据
        作用域.removeAttribute(String name)
    
    注意:在哪个作用域中设置值,就只能从该作用域中获取值
  • 相关阅读:
    cocos2dx A* + tiledMap
    cocos2dx A*算法
    A*算法
    在VS2012中使用GitHub
    史上最全设计模式导学目录(完整版)
    IT之家
    各种与视频编解码以及视频图像处理的应用相关的新技术,新方法,各种软件开发相关的算法,思想。
    linux下vim命令详解
    两篇很牛的vim使用技巧
    (转)linux下导入、导出mysql数据库命令
  • 原文地址:https://www.cnblogs.com/linjing111/p/12783021.html
Copyright © 2020-2023  润新知