JavaWeb-Servlet学习

servlet前后端传递参数的编码格式


servlet的继承关系以及service()方法-重点

  • 继承关系

    javax.servlet.Servlet接口
    ————javax.servlet.GenericServlet抽象类
    ————————javax.servlet.http.HttpServlet抽象子类

  • 相关方法

    javax.servlet.Servlet接口:
    · void init(config) - 初始化方法
    · void service(request,response) - 服务方法
    · void destory() - 销毁方法

    javax.servlet.GenericServlet抽象类:
    · void service(request,response) - 仍然是抽象的

    javax.servlet.http.HttpServlet 抽象子类:
    · void service(request,response) - 不是抽象的

      //1. String method = req.getMethod(); 获取请求的方式
      //2. 各种if判断,根据请求方式不同,决定去调用不同的do方法
         if (method.equals("GET")) {
             this.doGet(req,resp);
         } else if (method.equals("HEAD")) {
             this.doHead(req, resp);
         } else if (method.equals("POST")) {
             this.doPost(req, resp);
         } else if (method.equals("PUT")) {
        
       //3. 在HttpServlet这个抽象类中,do方法都差不多:
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            String protocol = req.getProtocol();
            String msg = lStrings.getString("http.method_get_not_supported");
            if (protocol.endsWith("1.1")) {
                resp.sendError(405, msg);
            } else {
                resp.sendError(400, msg);
            }
        }

小结

  1. 继承关系: HttpServlet -> GenericServlet -> Servlet
  2. Servlet中的核心方法: init() , service() , destroy()
  3. 服务方法:
    当有请求过来时,service方法会自动响应(其实是tomcat容器调用的)
    在HttpServlet中我们会去分析请求的方式:到底是get、post、head还是delete等等
    然后再决定调用的是哪个do开头的方法
    那么在HttpServlet中这些do方法默认都是405的实现风格-要我们子类去实现对应的方法,否则默认会报405错误
  4. 因此,我们在新建Servlet时,我们才会去考虑请求方法,从而决定重写哪个do方法
posted @ 2022-07-02 23:44  JayerListen  阅读(17)  评论(0编辑  收藏  举报