Review——第一次知识回顾

Review——1

编码设置

//post提交方式下的设置编码,防止中文乱码
request.setCharacterEncoding("utf-8");
//get提交方式,tomcat8 开始,编码不需要设置
//tomcat8 之前,get 方式设置比较麻烦
String fname = request.getParameter("fname");
byte[] bytes = fname.getBytes("iso-8859-1");
fname = new String(bytes,"UTF-8");

Servlet 继承关系以及生命周期

  1. Servlet 接口:init(),service(),destory(),

    • GenericServlet抽象子类:abstract service();

    • HttpServlet 抽象子类:

      • 实现了 service 方法,在 service 内部通过 request.getMethod() 来判断请求的方式,然后根据请求的方式去调用内部的 do 方法
      • 每一个 do 方法都进行了简单实现,主要是如果请求方式不符合,泽报 405 错误。
      • 目的是让我们的 Servlet 子类去重写对应的方法(如果重写的不对,则使用父类的 405 错误实现)
  2. 生命周期:实例化、初始化、服务、销毁

    • tomcat 负责维护 Servlet 实例的生命周期
    • 每个 Servlet 在 Tomcat 容器中只有一个实例,它是线程不安全的
    • Servlet 的启动时机: 数值越小,则越先启动,最小是0
    • Servlet 从 3.0 开始支持注解:@WebServlet

HTTP 协议

  • 有 Request 和 Response 两部分组成
  • 请求包含了三部分:请求行、请求消息行、请求主体
    • 请求主体:get 方式没有请求主体,post 方式 - form data ,json 方式 - request payload ( 请求负载 ),普通 get - query string
    • 响应:响应行、相应消息头、响应主体
  1. HttpSession

    • HttpSession :表示 会话
    • 为什么需要 HttpSession ,原因是 HTTP 协议是无状态的
    • Session 保存作用域 :一次会话范围都有效;void session.setAttribute( key , value ) ,object session.getAttribute( key )
    • 其他的 API :session.getId() ,session.isNew() ,session.getCreationTime() ,session.invalidate() 强制使某个 session 会话失效, 等
  2. 服务器端转发和客户端重定向

    • 服务器端转发(内部跳转):request.getRequestDispatcher("index.html").forward(request,response); 浏览器地址栏不变,服务器内部执行
    • 客户端重定向 :response.sendRedirect("index.html"); 服务器地址栏变化,外部执行
  3. thymeleaf 的部分标签

    • 使用步骤:添加 jar 包 ,新建 ViewBaseServlet (有两个方法),配置两个 :view-prefix 前缀、view-suffix 后缀

    • 部分标签:

      <th:if> <th:unless> <th:each> <th:text>
      
posted @ 2022-05-15 23:51  ppqppl  阅读(17)  评论(0编辑  收藏  举报