Request常用方法

Request常用方法原文地址一、HttpServletRequest介绍  HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。二、Request常用方法2.1、获得客户机信息  getRequestURL方法返回客户端发出请求时的完整URL。   getRequestURI…

大家好,又见面了,我是你们的朋友全栈君。

原文地址

一、HttpServletRequest介绍

  HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。

二、Request常用方法

2.1、获得客户机信息

  getRequestURL方法返回客户端发出请求时的完整URL。 
  getRequestURI方法返回请求行中的资源名部分。 
  getQueryString 方法返回请求行中的参数部分。 
  getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。 
  getRemoteAddr方法返回发出请求的客户机的IP地址。 
  getRemoteHost方法返回发出请求的客户机的完整主机名。 
  getRemotePort方法返回客户机所使用的网络端口号。 
  getLocalAddr方法返回WEB服务器的IP地址。 
  getLocalName方法返回WEB服务器的主机名。

2.2、获得客户机请求头

  getHeader(string name)方法:String 
  getHeaders(String name)方法:Enumeration 
  getHeaderNames()方法

2.3、获得客户机请求参数(客户端提交的数据)

getParameter(String)方法(常用) 
getParameterValues(String name)方法(常用) 
getParameterNames()方法(不常用) 
getParameterMap()方法(编写框架时常用)

3.6、提交中文数据乱码问题总结

  1、如果提交方式为post,想不乱码,只需要在服务器端设置request对象的编码即可,客户端以哪种编码提交的,服务器端的request对象就以对应的编码接收,比如客户端是以UTF-8编码提交的,那么服务器端request对象就以UTF-8编码接收(request.setCharacterEncoding(“UTF-8”))

  2、如果提交方式为get,设置request对象的编码是无效的,request对象还是以默认的ISO8859-1编码接收数据,因此要想不乱码,只能在接收到数据后再手工转换,步骤如下:

  1).获取获取客户端提交上来的数据,得到的是乱码字符串,data=”???è?????”

   String data = request.getParameter(“paramName”);

  2).查找ISO8859-1码表,得到客户机提交的原始数据的字节数组

   byte[] source = data.getBytes(“ISO8859-1”);

  3).通过字节数组以指定的编码构建字符串,解决乱码

   data = new String(source, “UTF-8”);

  通过字节数组以指定的编码构建字符串,这里指定的编码是根据客户端那边提交数据时使用的字符编码来定的,如果是GB2312,那么就设置成data = new String(source, “GB2312”),如果是UTF-8,那么就设置成data = new String(source, “UTF-8”)

四、Request对象实现请求转发

4.1、请求转发的基本概念

  请求转发:指一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理。 
  请求转发的应用场景:MVC设计模式

  在Servlet中实现请求转发的两种方式:

  1、通过ServletContext的getRequestDispatcher(String path)方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发。

例如:将请求转发的test.jsp页面

1 RequestDispatcher reqDispatcher =this.getServletContext().getRequestDispatcher(“/test.jsp”); 
2 reqDispatcher.forward(request, response); 
  2、通过request对象提供的getRequestDispatche(String path)方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发。

例如:将请求转发的test.jsp页面

1 request.getRequestDispatcher(“/test.jsp”).forward(request, response); 
  request对象同时也是一个域对象(Map容器),开发人员通过request对象在实现转发时,把数据通过request对象带给其它web资源处理。

 request对象作为一个域对象(Map容器)使用时,主要是通过以下的四个方法来操作

setAttribute(String name,Object o)方法,将数据作为request对象的一个属性存放到request对象中,例如:request.setAttribute(“data”, data); 
getAttribute(String name)方法,获取request对象的name属性的属性值,例如:request.getAttribute(“data”) 
removeAttribute(String name)方法,移除request对象的name属性,例如:request.removeAttribute(“data”) 
getAttributeNames方法,获取request对象的所有属性名,返回的是一个,例如:Enumeration attrNames = request.getAttributeNames(); 
4.2、请求重定向和请求转发的区别

  一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理,称之为请求转发/307。 
  一个web资源收到客户端请求后,通知浏览器去访问另外一个web资源进行处理,称之为请求重定向/302。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147270.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • k8s 很多pod evicted状态

    k8s 很多pod evicted状态k8s许多pod出现evicted状态。evicted状态是pod被驱逐无法起来问题原因:资源问题,资源不够解决办法:删除一些没用的大文件,然后将pod删除重建kubectlgetpods-ningress-nginx|awk‘{print$1}’|xargskubectldeletepods-ningress-nginxkubectlgetpods|grepEvicted|awk‘{print$1}’|xargskubectldelet

    2022年5月17日
    54
  • 常见的RuntimeException

    常见的RuntimeException常见的RuntimeException                    RuntimeException是开发中最容易遇到的,下面列举一下常见的RuntimeException:1、NullPointerException:见的最多了,其实很简单,一般都是在null对象上调用方法了。   Strings=null;   bo…

    2022年7月25日
    15
  • 小区智能化设计方案简述_智慧设计

    小区智能化设计方案简述_智慧设计在智慧城市大前提下的智慧小区的建设势必将借助高精尖技术的帮助,产业的发展带来大数据、人工智能技术、智能安全机器人、云计算和物联网等相关技术的突破,技术的成熟应用又为智慧小区提供强有力的技术保障,产业的繁荣将为智慧小区满足规模化应用条件,最终促进产业升级、经济发展,为城市注入新活力。实现汇聚社区内出入口、公共区域监控、单元门、单位大门等区域结构化摄像机、车辆卡口、人脸智能门禁等智能前端,真正做到“人过留影、车过留牌”,不仅对社区安全进行全方位安全保障,同时为公安部门情报研判、人口管理提供前提条件,实现事前预警

    2022年10月17日
    4
  • 51单片机驱动继电器模块点灯

    51单片机驱动继电器模块点灯51单片机驱动继电器模块点灯的使用ESP32与ESP8266简介ESP8266接口视图ESP32功能框图基于arduino的ESP32/ESP8266开发环境搭建基于arduino的ESP32/ESP8266开发环境烧录固件官方FLASH下载软件烧录固件总结

    2022年6月24日
    27
  • 京东金融大数据竞赛猪脸识别(3)- 图像特征提取之二

    京东金融大数据竞赛猪脸识别(3)- 图像特征提取之二深度网络既然在图像识别方面有很高的准确率,那将某一层网络输出数据作为图像特征也应该是可行的。该程序给出了使用Alexnet第七层作为激活层提取图像特征的示例。代码如下:clear;trainPath=fullfile(pwd,’image’);trainData=imageDatastore(trainPath,…’IncludeSubfolders’,true…

    2022年6月21日
    28
  • 蓝奏云直链解析api源码_全部免费软件蓝奏云网盘

    蓝奏云直链解析api源码_全部免费软件蓝奏云网盘介绍蓝奏云下载地址解析API模拟蓝奏云真实操作获取下载地址.软件架构1.支持检测文件是否被取消2.支持带密码的文件分享链接但不支持分享的文件夹3.支持生成直链或直接下载4.支持ios应用在线安装获取地址使用说明url:蓝奏云外链链接type:是否直接下载值:downpwd:外链密码(1)内部调用方法include(‘lanzou.clsss.php’);$lz=newlanzou;$re…

    2025年8月19日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号