• Servlet API && 表白墙


    Servlet API 详解

    主要三个:

    1.HttpServlet

    2.HttpServletRequest

    3.HttpServletResponse

    1.HttpServlet

    方法名称

    调用时机

    init

    HttpServlet 实例化之后被调用一次

    destroy

    HttpServlet 实例不再使用的时候调用一次

    service

    收到 HTTP 请求的时候调用

    doGet

    收到 GET 请求的时候调用( service 方法调用)

    doPost

    收到 POST 请求的时候调用( service 方法调用)

    doPut/doDelete/doOptions/...

    收到其他请求的时候调用( service 方法调用)

    • Init 创建HttpServlet实例会调用一次, 首次被访问会被实例化, 作用就是用来初始化 --- 就很像懒汉模式
    • Destroy 不一定真的调用到,tomcat关闭,则不再调用HttpServlet
    • Service tomcat收到请求,实际先调用service,再在service里根据方法,调用不同doXXX,实际很重少写service,直接重写doXXX

    谈谈Servlet的生命周期

    • 当一个请求从HTTP服务器转发给Servlet容器时,容器检查对应的Servlet是否创建,没有创建就实例化该Servlet,并调用init()方法,init()方法只调用一次,之后的请求都从第二步开始执行;
    • 请求进入service()方法,根据请求类型转发给对应的方法处理,如doGet, doPost, 等等
    • 容器停止前,调用destory()方法,进行清理操作,该方法只调用一次,随后JVM回收资源

     

    2.HttpServletRequest

    方法

    描述

    String getProtocol()

    返回请求协议的名称和版本。

    String getMethod()

    返回请求的 HTTP 方法的名称,例如,GETPOST PUT

    String getRequestURI()

    返回该请求的 URL 的一部分。

    String getContextPath()

    返回指示请求上下文的请求 URI 部分。

    String getQueryString()

    返回包含在路径后的请求 URL 中的查询字符串。

    Enumeration getParameterNames()

    返回一个 String 对象的枚举,包含在该请求中包含的参数的名
    称。

    String getParameter(String name)

    以字符串形式返回请求参数的值,或者如果参数不存在则返回
    null

    String[] getParameterValues(String name)

    返回一个字符串对象的数组,包含所有给定的请求参数的值,
    如果参数不存在则返回 null

    Enumeration getHeaderNames()

    返回一个枚举,包含在该请求中包含的所有的头名

    String getHeader(String name)

    以字符串形式返回指定的请求头的值。

    String getCharacterEncoding()

    返回请求主体中使用的字符编码的名称。

    String getContentType()

    返回请求主体的 MIME 类型,如果不知道类型则返回 null

    int getContentLength()

    以字节为单位返回请求主体的长度,并提供输入流,或者如果
    长度未知则返回 -1

    InputStream getInputStream()

    用于读取请求的 body 内容. 返回一个 InputStream 对象

     

     

    3.HttpServletResponse

    void setStatus(int sc)

    为该响应设置状态码。

    void setHeader(String name,String value)

    设置一个带有给定的名称和值的 header. 如果 name 已经存在,覆盖旧值.

    void addHeader(String name, String value)

    添加一个带有给定的名称和值的 header. 如果 name 已经存在,不覆盖旧的值, 旧值新值同在

    void setContentType(String type)

    设置被发送到客户端的响应的内容类型。

    void setCharacterEncoding(String charset)

    设置被发送到客户端的响应的字符编码

    void sendRedirect(String location)

    使用指定的重定向位置 URL 发送临时重定向响应到客户端。

    PrintWriter getWriter()

    用于往 body 中写入文本格式数据.

    OutputStream getOutputStream()

    用于往 body 中写入二进制格式数据.

    后两个 -> http响应是什么样的数据(显示在浏览器上的)

     

     

     

    一个表白墙~~~

    唉芝士的融合后很好吃,就是有点难融合

    1 首先, 介绍一下功能~

    • 你发送消息,谁,对谁,说什么 (比如: 小明 小芳 爱你)
    • 这个表白墙是用来 提交 谁对谁 说了什么 并且把数据保留(上一次发的数据,再次打开这个界面能显示)~

    2. 实现什么,交互:

    • 当前端发送了消息点击了’提交’, 数据一定要发一份给服务器
    • 再打开这个页面, 要从服务器获取到之前的信息

    3. 探讨细节:

    发送给服务器的

    • 我们用post方法(里面有body)
    • Content-Type 用json
    • 数据的格式
    • 响应返回200

    获取数据的

    • 用get方法
    • 响应
    • 格式

    4. okk我们看图

     

     就这些+数据库的JDBC 大功告成

     

  • 相关阅读:
    Android基础第七天 | 字节跳动第四届青训营笔记
    RK3568开发笔记(九):开发板buildroot固件调通RS485口,运行项目中RS485协议调试工具Demo
    Jenkins插件Parameterized Scheduler用法
    Ubuntu22.04安装Mongodb7.0
    Codeforces Round 916 (Div. 3)(A~E题解)
    【已拿offer】最新AI产品经理大厂面经(含百度&腾讯&科大讯飞&商汤&蚂蚁金服)
    Spring核心和设计思想
    日常Bug排查-连接突然全部关闭
    Frustum PointNets for 3D Object Detection from RGB-D Data(2018)
    tomcat热加载、热部署-源码解析
  • 原文地址:https://blog.csdn.net/m0_63501066/article/details/128113435