response

response

服务器处理请求的流程:
服务器每次收到请求时,都会为这个请求开辟一个新的线程。
服务器会把客户端的请求数据封装到request对象中,requesr就是请求数据的载体(袋子)
服务器还会创建response对象,这个对象与客户端链接在一起,它可以用来向客户端发送响应(手机)


状态码:

  • 200表示成功
  • 302重定向
  • 400
  • 404表示客户端错(访问资源不存在)
  • 500表示服务器端错误
    响应头:
  • Context-Type
  • Refresh
  • Location
    案例:
    发送302,设置Location头,完成重定向
    定时刷新:设置Refresh头
    禁用浏览器缓存:Cache-Control,pragma,expires
    标签可以代替相应头
    相应体:通常是html,也可以是图片
    response的两个流:
  • ServletOutputStream,用来向客户端发送字节数据
  • PrintWriter用来向客户端发送字符数据!需要设置编码
    **两个流不能同时使用
    案例:
    使用PrintWriter发送字符数据
    使用ServletOutputStream发送字节数据(图片)
    重定向
    设置302,设置Location!其中变化的只有Location,所以java提供了一个快捷方法,完成重定向
    sendRedirect(String location)方法
    sendRedirect()方法

request

回忆一下http协议!请求协议中的数据都可以通过request对象来获取
获取常用信息
获取客户端IP,案例:封IP
请求方式
案例:
通过User-Agent识别用户浏览器类型
防盗链:如果请求不是通过本站的超链接发出的,发送错误的状态码404.Referer

  • 通过request来获取url的相关方法

        response.getWriter().print(request.getScheme()+ "
    ");//获取请求协议 response.getWriter().print(request.getServerName()+ "
    ");//获取服务器名称 response.getWriter().print(request.getServerPort()+ "
    ");//获取服务器端口号 response.getWriter().print(request.getContextPath()+ "
    ");//获取项目名称 response.getWriter().print(request.getServletPath()+ "
    ");//获取Servlet路径 response.getWriter().print(request.getQueryString()+ "
    ");//获取参数

请求转发和重定向的区别:

  • 请求转发是一个请求一次相应,而重定向是两次请求两次相应
  • 请求转发地址栏不变化,而重定向会显示后一个请求的地址
  • 请求转发只能转发到本项目其他Servlet路径,而重定向需要给出requestRUI,即包含项目名
  • 请求转发和重定向效率是转发高!因为是一个请求!
    编码
    常见字符编码:iso-8859-1(不支持中文),gbk(系统默认编码,中国的国标码),UTF-8(万国码,支持全世界的编码,所以我们使用这个)
    相应编码:


    图片.png

    路径:
    web.xml中路径,(叫它Servlet路径!)
    要么以 * 开头,要么为 / 开头
    转发和包含路径
    以*开头:相对当前项目路径
    不以/开头:相对当前Servlet路径
    重定向路径(客户端路径):
    以/开头:相对当前主机
    与重定向相同,都是客户端路径!需要添加项目名

你可能感兴趣的:(response)