zoukankan      html  css  js  c++  java
  • 3. 请求与响应

    • 取得请求参数与标头
    • 处理中文字符请求与响应
    • 设置与取得请求范围属性
    • 正确使用转发、包含、重定向

    Web容器做了什么

    Web容器做了几件事:创建 Servlet 实例,并完成 Servlet 名称注册以及 URL 模式的对应。在请求到来的时候转发正确的 Servlet 来处理请求。

    当浏览器请求 HTTP 服务器时,而 HTTP 服务器转交请求给容器时,容器会创建一个代表当次请求的 HttpServletRequest 对象,并将请求相关信息设置给该对象。同时,容器会创建一个 HttpServletResponse 对象,作为稍后要对客户端进行响应的 Java 对象。

    接着,容器会根据读取的 @WebSerlvet 标注或 web.xml 的设置,找出处理该请求的 Servlet,,调用它的 service() 方法,将创建的 HttpServletRequest 对象、HttpServletResponse 对象作为参数传入。service() 会根据 HTTP 请求的烦事,调用相应的 doXXX() 方法。在 doXXX() 方法中,可以使用 HttpServletRequest 对象、HttpServletResponse 对象。

    之后,容器将 HttpServletRequest 对象、HttpServletResponse 对象销毁回收,该次请求响应结束。

    因为 HTTP 是基于请求/响应、无状态的协议,每一次的请求/响应之后,服务器端就不会记得任何客户端的信息了。所以容器每次请求都会创建新的 HttpServletRequest 对象、HttpServletResponse 对象,响应后将销毁该次的 HttpServletRequest 对象、HttpServletResponse 对象。下次请求时创建的请求/响应对象就和上次无关了。所以,对HttpServletRequest 对象、HttpServletResponse 对象的设置,时不能延续至下一次请求的。

    请求参数的编码处理

    要分 post 和 get 两种情况来处理

    POST 请求参数编码处理

    Content-Type

    在 getParameter() 之前调用 setCharacterEncoding()

    GET 请求参数编码处理

    setCharacterEncoding() 对 GET 请求方法不起作用

    通过 String 的 getBytes() 指定编码来取得字符粗的字节数组,然后再重新构造为正确编码的字符串

    获取 Body 内容

    • getReader()、getInputStream()
    • getPart()、getParts() 取得上传文件
  • 相关阅读:
    Hash
    字符串hash
    NOIp 2014解方程
    NOIp2014 寻找道路
    NOIp2013火柴排队
    用scanf("%d",)读入long long类型
    lis问题
    西江月·证明
    计算系数
    积木大赛&PLA-Postering
  • 原文地址:https://www.cnblogs.com/okadanana/p/5940628.html
Copyright © 2011-2022 走看看