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)
上一篇 2022年6月13日 下午5:36
下一篇 2022年6月13日 下午5:36


相关推荐

  • matlab直方图归一化_matlab归一化函数normalize

    matlab直方图归一化_matlab归一化函数normalize直方图规定化直方图均衡化的优点是能自动增强整个图像的对比度,但它的具体增强效果不易控制,处理的结果总是得到全局的均衡化的直方图.实际工作中,有时需要变换直方图使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度,这时可采用比较灵活的直方图规定化方法.直方图规定化增强处理的步骤如下:令Pr(r)和Pz(z)分别为原始图像和期望图像的灰度概率密度函数。如果对原始图像和期望图像均作直

    2022年10月19日
    5
  • 白话空间统计二十四:地理加权回归(二)

    白话空间统计二十四:地理加权回归(二)六千多字的大篇……诚意满满啊……橘生淮南则为橘,生于淮北则为枳,叶徒相似,其实味不同。所以然者何?水土异也。——《晏子春秋·内篇杂下》水土不服、南北差异,(包括地域歧视)是自古以来的一个大命题……正如在(伪)吃货的眼中,中国的地图是这样的:为什么说上面是伪?吃货呢,因为在真?吃货眼中的中国地图,是这样的:这就是具有全局眼(胃)光(口)和局部眼(胃)光(口),

    2022年10月7日
    4
  • Windows之IOCP

    1.简介IOCP模型属于一种通讯模型,适用于Windows平台下高负载服务器的一个技术。在处理大量用户并发请求时,如果采用一个用户一个线程的方式那将造成CPU在这成千上万的线程间进行切换,后果是不

    2021年12月28日
    42
  • Spring Boot常用注解(绝对经典)

    Spring Boot常用注解(绝对经典)一 Spring 常用注解 Spring 常用注解 绝对经典 二 Jpa1 Entity Table name 表明这是一个实体类 一般用于 jpa 这两个注解一块使用 但是如果表名和实体类名相同的话 Table 可以省略 2 MappedSuperC 基于代码复用和模型分离的思想 在项目开发中使用 jpa 的 MappedSuperC 注解 将实体类的多个属性分别封装到不同的非实体类中 例如 数据库表中都需要 id 来表示编号 id 是这些映射实体类的通用属性 交给 jpa 统

    2026年3月19日
    2
  • 软件需求分析文档模版

    软件需求分析文档模版软件需求分析文档模版 转载自国家计算机标准和文件模板 软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化 分析各种可能的解法 并且分配给各个软件元素 需求分析是软件定义阶段中的最后一步 是确定系统必须完成哪些工作 也就是对目标系统提出完整 准确 清晰 具体的要求 软件需求分析的任务是 深入描述软件的功能和性能 确定软件设计的约束和软件同其他系统元素的接口细节 定义软件的其他有效性需求 借助于当前系统的逻辑模型导出目标系统逻辑模型 解决目标系统 做什么 的问题 需求分析可分为需求提出 需求描述

    2026年3月17日
    2
  • laravel 学习笔记blog后台

    laravel 学习笔记blog后台

    2021年10月24日
    53

发表回复

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

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