zoukankan      html  css  js  c++  java
  • Response 部分功能

    设置状态码的方法:
        void setStatus(int sc)
        void setStatus(int sc, String sm)  


    设置响应头的方法:
        void setHeader(String name, String value)
        void setDateHeader(String name, long date)
        void setIntHeader(String name, int value)
        void addDateHeader(String name, long date)
        void addHeader(String name, String value)
        void addIntHeader(String name, int value)
                
    设置响应内容的方法:
        ServletOutputStream getOutputStream()
        PrintWriter getWriter()

      细节问题:

        getOutputStream()和getWriter() 这两个方法是互斥的, 在一次请求当中调用了其中的一个, 就不能再调用另一个!!!

                在调用完getOutputStream()或getWriter()方法之后, 不需要手动去关闭流, 服务器会自动帮我们去关闭!!!
                
                这个两个方法获取到的流并不是指向客户端的流, 而是指向response缓冲区的流, 通过流将数据写入response缓冲区, service方法执行结束, 请求回到服务器, 由服务器将数据组织成响应消息打给浏览器!!

      乱码问题:

        不管是字符流还是字节流, 解决乱码问题, 可以用一行代码搞定:
                response.setContentType("text/html;charset=utf-8")

    response主要功能:

      实现重定向 (!!)
            重定向的原理就是302+location, 通过设置状态码302和location响应头就可以实现重定向的效果
            response.setStatus(302);
            response.setHeader("Location", "/Day09/index.jsp");
            这两行代码等价于
            response.sendRedirect("/Day09/index.jsp");

      实现定时刷新(与重定向的唯一区别就是多了个计数器然后再重定向)
          定时刷新是通过Refresh响应头, 可以实现在多少秒之后跳转到另外一个资源
          response.setHeader("Refresh", "3;url=/Day09/index.jsp");

      控制浏览器缓存:

        由于不同的浏览器的缓存行为可能是不同的, 我们可以在服务器中通过设置响应头来控制浏览器的缓存行为!!
                  控制浏览器不要缓存:(3种方法)
                      1.setDateHeader("Expires", -1);
                      2.setHeader("Cache-control", "no-cache");
                      3.setHeader("Pragma", "no-cache");

                  控制浏览器要缓存: (两种方法)--缓存至明天
                       1.setDateHeader("Expires", System.currentTimeMillis()+1000*60*60*24);
                       2.setHeader("Cache-control", "max-age=60");

     

  • 相关阅读:
    Linux和widow下 Docker开启远程连接访问
    关于Vue+ElementUI 动态表单验证无效的问题解决
    关于Vue中,fullpage全屏滚动插件的使用方法
    关于小程序云开发数据库的增删改查操作
    关于Echarts柱状图点击事件的实现方法
    关于Vue中,使用watch同时监听多个值的实现方法
    关于Vue+ElementUI中,给input手动赋值之后无法修改的问题解决
    关于微信小程序分享/转发功能的实现方法
    关于微信小程序iOS端时间格式兼容问题
    关于Vue+ElementUI修改默认样式不成功问题解决
  • 原文地址:https://www.cnblogs.com/tongxuping/p/6896119.html
Copyright © 2011-2022 走看看