• 说一下Servlet里面得request和response


    当一个servlet被调用的时候,我们一般继承带协议的httpServlet,大方向上是下图这样

    在这里面request和response起了什么作用呢?

    来细究一下。

    request:
    1.封装了客户端所有的请求数据:

    请求行,请求头,请求体(get没体)

    2.而当涉及到http协议时,我们还可以利用request获取协议的信息:

    获取客户端ip:request.getRemoteAddr()

    获取请求方式:request.getMethod()

     获取http请求头:

    String getHeader(String name) ,适用于单值头

    int getIntHeader(String name),适用于单值int类型的请求头

    long getDateHeader(String name) ,适用于单值毫秒型的请求头

    Enumeration<String> getHeaders(String name) 适用于多只请求头

    获取请求url

    getRequestURL():获取请求url,等于不包含参数的整个请求路径

    getScheme():获取请求协议

    getServerName():获取服务器名

    getServerPort():获取服务器端口号

    getContextPath():获取项目名

    getServletPath():获取Servlet路径

    getRequestURI():获取请求URI,等于项目名加Servlet路径

    getQueryString():获取请求参数

    3.获取请求参数,请求参数有一个值或多个值的。

    String getParameter(String name) 获取单值参数

    String[] getParameterValues(String name) 获取多值参数

    Enumeration<String> getParameterNames() 获取所有参数名

    Map<String,String[]> getParameterMap() 获取所有参数,key为参数名,value为参数值

    4.请求转发和请求包含

      需要使用

       RequestDispatcher rd=request.getRequestDispatcher(''/MyServlet'');

    请求转发:rd.forward(request,response);

    请求包含:rd.include(request,response):

    有时候一个客户端要求分给A和B两个Servlet干同一件事,但是A和B都做不了,A是怎么做的呢,他和C说,我把这件事给你做,我设置设置响应头,你把响应体给我写了,你别告诉头,然后C做完了把响应体返回给A,A就拿着去交差了,这就是请求转发;而B呢,他会和C说,我自己做不了这件事,你和我一起做吧,我把响应头和响应体分分,你写一些我写一些,两者一起做完了,B拿着去交差了,这就是请求包含。

     

     

    5.request域

    在同一个请求内使用request.setAttribute(),request.getAttribute()来传值,前一个存,后一个取。

    response

    涉及到http协议时,

    1.可以通过response发送状态码:200(成功),404(资源未找到),302(转发重定向,会伴着一个URL一起发送回去),304(浏览器有缓存),500(服务器端错误)

    response.sendErr(int sc)

    response.sendErr(int sc,String ms)

    response.setStatus(int sc)

    2.响应头

    response.setHeader(String name,String value)

    response.addHeader(String name,String value)

    response.setIntHeader(String name,int value)

    response.addIntHeader(String name,int value)

    response.setDateHeader(String name,long value)

    response.addDateHeader(String name,long value)

    3.respone的两个流

    ServletOutputStream:用来向客户端发送字节数据

    PrintWriter:用来向客户端发送字符数据,需要设置编码

    4.重定向

    respone.sendRedirect("地址") 重定向

    相当于

      response.setHeader("Location","地址");

     response.setStatus(302);

  • 相关阅读:
    模拟实现bind、call、apply函数
    模拟实现ECMAScript5新增的数组方法
    HBuilder mui页面间传值的几种方式
    手机端软键盘弹出挤压页面的问题
    js获取当前时间
    原生js根据class获取元素的方法
    jquery之获取select选中的值
    原生js获取元素属性值方法
    利用javascrit获取url传递的参数
    jQuery图片预加载(延迟加载)之插件Lazy Load
  • 原文地址:https://www.cnblogs.com/wxw7blog/p/7780198.html
Copyright © 2020-2023  润新知