博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
request对象
阅读量:4102 次
发布时间:2019-05-25

本文共 2132 字,大约阅读时间需要 7 分钟。

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里做包含
你可能感兴趣的文章
Jenkins 启动命令
查看>>
剑指offer算法题分析与整理(三)
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
java LinkedList与ArrayList迭代器遍历和for遍历对比
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Java8 HashMap集合解析
查看>>
自定义 select 下拉框 多选插件
查看>>
fastcgi_param 详解
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
MODULE_DEVICE_TABLE的理解
查看>>
No devices detected. Fatal server error: no screens found
查看>>
db db2_monitorTool IBM Rational Performace Tester
查看>>
postgresql监控工具pgstatspack的安装及使用
查看>>
【JAVA数据结构】双向链表
查看>>
【JAVA数据结构】先进先出队列
查看>>
谈谈加密和混淆吧[转]
查看>>
乘法逆元
查看>>
Objective-C 基础入门(一)
查看>>