码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • HttpServletRequest对象与RequestDispatcher对象


     一、HttpServletRequest对象

    1.介绍

    在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息。由于HTTP请求消息分为请求行、请求消息头和请求消息体三部分,因此,在HttpServletRequest接口中定义了获取请求行、请求头和请求消息体的相关方法。

    2.获取请求行信息的相关信息

    当访问Servlet时,会在请求消息的请求行中,包含请求方法、请求资源名、请求路径等信息,为了获取这些信息,在HttpServletRequest接口中,定义了一系列用于获取请求行的方法,如表所示。

    3.获取请求消息行信息案例代码 

    4.获取请求消息头的相关方法

    当请求Servlet时,需要通过请求头向服务器传递附加信息,例如,客户端可以接收的数据类型,压缩方式,语言等等。为此,在HttpServletRequest接口中定义了一系列用于获取HTTP请求头字段的方法,如表所示。

    5.读取HTTP请求消息头字段案例代码

    6.利用Referer请求头防止“盗链”

    二、HttpServletRequest应用

    1.获取请求参数及解决中文乱码

    2.通过Request对象传递数据

    public interface HttpServletRequest extends ServletRequest

    在ServletRequest中

    a.setAttribute(String name, Object o)

    该方法用于将一个对象与一个名称关联后存储进ServletRequest对象中

    需要注意的是,如果ServletRequest对象中已经存在指定名称的属性,setAttribute()方法将会先删除原来的属性,然后再添加新的属性。如果传递给setAttribute()方法的属性值对象为null,则删除指定名称的属性,这时的效果等同于removeAttribute()方法。

    b.getAttribute(String name)

    该方法用于从ServletRequest对象中返回指定名称的属性对象

    c.removeAttribute(String name)

    该方法用于从ServletRequest对象中删除指定名称的属性

    d.Enumeration getAttributeNames()

    该方法用于返回一个包含ServletRequest对象中的所有属性名的Enumeration对象

    需要注意的是,只有属于同一个请求中的数据才可以通过ServletRequest对象传递数据。

    数据传递原理看下面的请求转发。

    三、RequestDispatcher对象的应用

    1.RequestDispatcher接口

    当一个Web资源收到客户端的请求后,如果希望服务器通知另外一个资源去处理请求,这时,除了使用sendRedirect()方法实现请求重定向外,还可以通过RequestDispatcher接口的实例对象来实现。在ServletRequest接口中定义了一个获取RequestDispatcher对象的方法,如表所示。

    获取到RequestDispatcher对象后,最重要的工作就是通知其它Web资源处理当前的Servlet请求,为此,在RequestDispatcher接口中,定义了两个相关方法,如表所示

    表中列举的两个方法中,forward()方法可以实现请求转发,include()方法可以实现请求包含。

    2.请求转发

    3.请求包含

     

  • 相关阅读:
    如何入行软件开发——常见问题及岗位分工
    机器学习的分类
    【cartographer_ros】七: 主要配置参数说明
    计算图片中两个任意形状多边形相交部分的大小
    设A和B是两个单链表(带头结点),其中元素递增有序。设计一个算法从A和B中的公共元素产生新链表C,要求不破坏A,B。
    醒悟的日子,我是怎么一步一步走向软件测试的道路
    【oj刷题记】【1366】【KMP字符串模式匹配算法】【next【】数组的细致研究】【探讨ne[]数组0,1开头和-1,0开头的区别】
    【Python机器学习】零基础掌握StackingClassifier集成学习
    【数仓建设系列之五】数仓选型架构概览
    基于机器视觉的移动消防机器人(一)--功能设计
  • 原文地址:https://blog.csdn.net/daqi1983/article/details/133768993
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号