美文网首页
Request和Response

Request和Response

作者: 于无声处写写写 | 来源:发表于2019-05-29 19:55 被阅读0次

    请求转发:一种在服务器内部的资源跳转方式

    步骤

    1、通过request对象获取请求转发器对象:RequestDispatcher getDispatcher(String path)
    2、使用RequestDispatcher对象来进行转发:forward(ServletRequest request,SerbletResponse response)

    特点

    1、浏览器地址栏路径没有发生变化
    2、只能转发到当前服务器内部资源中
    3、转发是一次请求

    共享数据

    • 域对象:一个有作用范围的对象,可以在范围内共享数据
    • request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
    • 方法:
      1、setAttribute(String anme,Object obj):存储数据
      2、Object getAttrbute(String anme):通过键获取值
      3、void removeAttrbute(String name):通过键移除键值对

    获取ServletContext

    • request.getServletContext();

    Response 对象

    • 功能:设置响应消息
      1、设置相应行
    • 格式:HTTP/1.1 200 ok
    • 设置状态码:setStatus(int sc)
      2、设置响应头:setHeader(String name,String value)
      3、设置响应体:
    • 使用步骤
      1、获取输出流
    • 字符输出流:PrintWriter getWriter()
    • 字节输出流:ServletOutputStream getOutPutStream()
      2、使用输出流

    重定向

    sendRedriect(String location);

    重定向特点

    转发特点:

    • 转发地址栏路径不变
    • 转发只能访问当前服务器资源
    • 转发是一次请求

    重定向特点

    • 地址栏发生变化
    • 重定向可以访问其他站点的资源
    • 重定向是两次请求

    路径写法

    路径分类

    相对路径

    :通过相对路径不可以确定唯一资源(确定访问当前资源和目标资源之间的相对位置关系)
    ./代表当前目录
    ../后退一级目录
    JSP推荐使用绝对路径

    绝对路径:

    通过绝对路径可以确定唯一资源

    • 绝对路径的规则:判断定义的路径是给谁用的
    • 给客户端浏览器使用:需要加虚拟目录
    • 给服务器使用:不需要加虚拟目录

    服务器输出字符数据到浏览器

    步骤

    • 获取字符输出流
      PrintWriter pw=response.getWriter()
    • 输出数据
      pw.write("hello");

    中文乱码

    原因

    • 编码和解码所用的码表不一样

    解决方法

    在获取流对象之前,设置流的默认编码:ISO-8859-1 设置为GBK
    response.setCharacterEncoding("GBK")
    告诉浏览器,服务器所发送的消息体数据的编码。建议浏览器使用该编码解码
    response.setHeader("content-type","text/html;charset=utf-8")
    最终在获取字符流之前,一定要设置编码,上述都可以不管,下面的代码要注意

    • response.setContentType("text/html;charset=utf-8")

    服务器输出字节数据到浏览器

    • 获取字节输出流
      ServletOutputStream out=response.getOutputStream();
    • 输出数据
      out.write("hello".getBytes())
    • 也可能存在中文乱码问题,结局方法如下
    • response.setContentType("text/html;charset=utf-8")

    验证码

    • 本质是一张图片
    • 防止恶意表单注册

    ServletContext对象

    • 代表整个web应用,可以和程序的容器(服务器)来通信

    功能

    • 获取MIME类型
    • 域对象:共享数据
    • 获取文件的真实路径(服务器路径)

    获取ServletContext

    1、通过request.getServletContext();
    2、通过HttpServlet获取
    this.getServletContext();

    获取MIME类型

    • MIME:在互联网通信过程中定义的一种文件数据类型
    • 格式: 大类型/小类型 例如text/html image/jpeg
    • 方法: String getMimeType(String file)

    域对象

    1、setAttrbute(String name,Object value)
    2、getAttrbute(String name)
    3、removeAttrbute(String name)

    • ServletContext对象范围:所有用户所有请求的数据

    获取文件真实路径

    相关文章

      网友评论

          本文标题:Request和Response

          本文链接:https://www.haomeiwen.com/subject/jaljtctx.html