request对象

本文详细介绍了HttpServletRequest对象的功能,包括如何获取客户端信息、头信息、请求参数等,并探讨了解决乱码问题的方法。此外还讲解了请求转发及MVC设计模式的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Request简介
    HttpServletRequest对象代码客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象,可以获取客户这些的信息
    
reques对象里的方法
    1.获取客户机信息
  •     getRequestURL():返回客户端发出请求完整URL  例: 
         getRequestURI():返回请求行中的资源名部分,在权限控制中常用  例:
  •      getMethod():获取请求的方式(get,post)
         getQueryString():方法返回请求行中的参数部分
         
         getRemoteAddr:方法返回发出请求的客户机ip地址
         getRemoteHost():方法返回发出请求的客户机的完整主机名
         getRemotePort():方法返回客户机所使用的网络端口号
         getLocalAddr():方法返回WEB服务器的IP地址
         getLocalName():方法返回WEB服务器的主机名
        
  •     getCookies():获得cookie信息
         getScheme():获取协议(http)
         getServerName():获取主机名
         getServletPort():获取服务器的端口
         getServletPath():获取路径 中 除上下文后的其他路径
         
         getContextPath:获取上下文路径  
           
  2.获取头信息
  •     getHeader(String name):获取指定头的值
  •     getHeaderNames():获取指定所有头的名称
  •     getHeaders(String name):获取指定头的所有值
  •     getDateHeader(String name):获取日期型头的值

  3.获取请求参数
  •    getParameter(String name):获取指定名称的值
  •   getParameterMap():获取所有的请求数据组成的Map集合
  •    getParameterValues(String name):获取同名name的一组参数值
  •    getParameterNames():获取所有请求数据的名称和值
 4.文件上传
      getInputStream():获取输入流   通过流去获取数据(文件上传)
获取请求参数时乱码问题
    request.setCharacterEncoding("UTF-8");
    此种方式只对Post方式提交有效。
    对于Get方式提交的数据,就只能手动解决乱码:
  •     String newName = new String(name.getBytes("ISO8859-1"),"UTF-8");
  • 此种方法对Post方式同样有效。
    
对于乱码还可以在tomcat里面解决
  •     找到tomcat里conf文件夹下的server.xml文件
    
    配置连接器的URIEncoding可以指定服务器在获取请求参数时默认使用的编码,从而一劳永逸的决绝获取请求参数时的乱码问题。
    
    第二种方式也可以(不推荐使用)
注意:但是这俩属性都不推荐使用,因为发布环境往往不允许修改此属性。  
reqyest实现请求转发和mvc设计模式
    request对象实现请求转发:
  •     请求转发指一个WEB资源收到客户端请求后,通知服务器去调用另外一个WEB资源进行处理。
    请求转发的应用场景:
  •     MVC设计模式
  • request对象提供了一个getRequestDispatcher方法,该方法返回一个RequestDispatcher对象,调用这个方法的forward方法可 以实现请求转发。

request对象同时也是一个域对象,开发人员通过request对象在实现转发时,把数据通过request对象带给其他WEB资源处理。
    setAttribute方法
    getAttribute方法
    removeAttribute方法
    getAttributeNames方法
    

请求转发的细节
    forward方法用于将请求转发到RequestDispatcher对象封装的资源
    如果在调用forward方法之前,在Servlet程序中写入的部分内容已经被真正地传送到了客户端,forward方法将抛出IllegalStateException异常

避免:在每次跳转之后 return  结束方法

    如果在调用forward方法之前向Servlet引擎的缓冲区(response)中写入了内容,只要写入到缓冲区中的内容还没有被真正输出到客户端,forward方法就可以被正常执行,原来写入到输出缓冲区中的内容将被清空,但是,已经写入HttpServletResponse对象中的响应头字段信息保持有效
    
请求转发的特点
    1.客户端只发一次请求,而服务器有多个资源调用
    2.客户端浏览器地址栏没有变化
RequestDispatcher 
include方法:
      RequestDispatcher.include方法用于将RequestDispatcher对象封装的资源内容作为当前响应内容的一部分包含进来,从而实现可编程的服务器端包含功能。
     被包含的Servlet程序不能改变响应消息的状态码和响应头,如果它里面存在这样的语句,这些语句的执行结果将被忽略
     通常在jsp里做包含

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值