Request与Response

Request与Response

  1. request和sresponse对象原来

    ​	request和sresponse对象时由服务器创建的。我们来使用他们
    
    ​	request都西昂时来获取请求消息,response对象是来设置响应消息的
    
  2. request继承体系结构

    ​	ServletRequest   ---   接口
    
    ​				|    继承
    
    ​    HTTPSservletRequest  ---    接口
    
    ​				|   继承
    
    ​	org.apache.catalina.connector.RequestFacade类(tomcat中)
    
  3. request功能

    ​		获取请求消息
    
    ​			获取请求行数据
    
    ​				获取请求方式:String getMethod()
    
    ​				(*)获取虚拟目录:String   getContextPath()
    
    ​				获取Servlet路径:String getServletPath()
    
    ​				获取get方式请求参数:String   getQueryString()
    
    ​				(*)获取请求URI:
    
    ​						String   getRequestURI()        /demo1/demo
    
    ​						StringBuffer   getRequestURL()         http://lcoalhost /demo1/demo
    
    ​						URL:统一资源定位符      http://lcoalhost /demo1/demo
    
    ​						URI:统一资源标识符         /demo1/demo
    
    ​				获取协议版本:String   getProtocol()
    
    ​				获取客户机ip:String   getRemoteAddr()
    
    ​			获取请求头数据
    
    ​					方法:
    
    ​							(*)String    getHeader(String   name)  通过请求头获取请求头的值
    
    ​							Enumeration<String>  getHeaderName();    获取所有的请求头名称
    
    ​			获取请求体数据
    
    ​					请求体:只有post方式才会有请求体,在请求体中封装了post请求参数
    
    ​					步骤:
    
    ​							1.获取流对象
    
    ​										BufferedReader    getReader()   获取字符输入流,只能操作字符数据
    
    ​										ServletInputStream   getInputStream()获取字节输入流,可以操作所有类型数据
    
    ​							2.在从流对象中获取数据
    
    ​			其他功能
    
    ​					获取请求参数(通用方式)
    
    ​							String   getParameter(String   name) 根据参数名获取参数值
    
    ​							String[]   getParameters(String   name) 根据参数名获取参数值的数组
    
    ​							Enumeration<String>  getParameterNames() 获取请求的所有参数名称
    
    ​							Map<String,String[]>   getParameterMap()   获取所有参数的map集合
    
    ​							中文乱码问题:tomcat8已将get方式乱码解决完成,post方式会乱码,解决方法是转换编码:request.setCharacterEncoding(“utf-8”)
    
    ​					请求转发:一种在服务器内部资源跳转的方式
    
    ​							步骤:
    
    ​									通过request对象获取请求转发器对象:RequestDispatcher   getRequestDispatcher(String  path)
    
    ​									使用RequestDispatcher对象进行转发,forward(ServletRequest   request,ServletResponse   response)
    
    ​							特点
    
    ​								浏览器地址栏路径不发生变化
    
    ​								只能转发到当前服务器内部资源
    
    ​								转发是一次请求
    
    ​					共享数据
    
    ​							域对象:一个有作用范围的对象,可以在范围内共享数据
    
    ​							request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
    
    ​							方法:
    
    ​									void   setAttribute(String name,Object  obj)存储数据
    
    ​									Object   getAttribute(String name)  通过键获取值
    
    ​									void    removeAttribute(String  name) 通过键移除键值对
    
    ​					获取 ServletContext
    
    ​							ServletContext  getServletContext ()
    
  4. Response对象

    ​		功能:设置响应消息
    
    ​				设置响应行
    
    ​						格式:  HTTP/1.1 200  ok
    
    ​						设置状态码:setStatus(int   sc)
    
    ​				设置响应头:setHeader(String  name,String   value)
    
    ​				设置响应体
    
    ​						使用步骤
    
    ​								设置返回流编码respose.setCharacterEncoding(“utf-8”)
    
    ​								设置响应头,告诉浏览器使用的编码respose.setHeader(“content-type”,“text/html;charset=utf-8”),上一步可以不设置,只设置这一个编码,也可以也可以使用respose.setContentType(“text/html;charset=utf-8”);
    
    ​								获取输出流
    
    ​										字符输出流:PrintWriter   getWriter()(不需要刷新)
    
    ​										字节输出流:ServletOutputStream    getOutputStream()
    
    ​								使用输出流,将数据输出到客户端浏览器
    
  5. 重定向

    ​		response.setStatus(302);//设置状态码为302
    
    ​		response.setHeader(“location”,“/demo/test1”);//设置响应头location
    
    ​	
    
    ​		response.setRedirect(“location”,“/demo/test1”);//简单的重定向
    
    ​		重定向的特点:
    
    ​					地址栏发生变化
    
    ​					可以访问其他服务器资源
    
    ​					是两次请求,不可以使用request共享数据
    
  6. 路径写法:

    ​	路径分类:
    
    ​			相对路径:通过相对路径不可以确定唯一资源,不以/开头,以.开头,./当前目录,../  后退一级目录
    
    ​			绝对路径:通过绝对路径可以确定唯一资源,以/开头,客户端使用加虚拟目录,服务器使用不加,如:转发
    
    ​	动态获取虚拟目录   String   path = request.getContextPath();
    
  7. ServletContext

    ​		概念:代表整个web应用,可以和程序的容器(服务器)进行通信
    
    ​		获取该对象
    
    ​				通过request获取   request.getServletContext()
    
    ​				通过httpServlet获取   this.getServletContext()
    
    ​		功能:
    
    ​				获取MIME类型:在物联网通信过程中定义的一种问价拿数据类型
    
    ​						格式:    大类型/小类型      text/html
    
    ​						方法:  String getMimeType(String   file)
    
    ​				域对象:共享数据,范围:所有用户的数据,使用要谨慎
    
    ​						方法:
    
    ​									void   setAttribute(String name,Object  obj)存储数据
    
    ​									Object   getAttribute(String name)  通过键获取值
    
    ​									void    removeAttribute(String  name) 通过键移除键值对
    
    ​				获取文件的真实路径(服务器路径)
    
    ​							获取文件的服务器路径   
    
    ​									 String  path = context.getRealPath(“/a.txt”);//在web目录下
    
    ​									 String  path = context.getRealPath(“/WEB-INF/a.txt”);//在WEB-INF目录下
    
    ​									 String  path = context.getRealPath(“/WEB-INF/classes/a.txt”);//在src目录下
    

青春短暂,我在路上
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值