Servlet简介

Servlet简介

介绍

  • 课外小知识:没有注解前,Spring是通过xml文件实现依赖注入、配置等功能的
  • Servlet是一个用来处理服务端请求和响应的组件
  • 它是JavaEE的规范之一,也就是一个Java接口,由Web服务器负责运行,也就是说Tomcat服务器也就是Servlet容器

快速入门

  • 实现Servlet接口即可使用它来处理请求并响应

  • 使用:Servlet接口的五个方法,顾名思义,无需多言

    @WebServlet("/dish")
    public class ServletDemo implements Servlet {
        // 按照配置初始化
    	void init(ServletConfig servletConfig) { }
        // 通过读取xml文件或注解等获得配置信息(如数据库连接信息等)
        public ServletConfig getServletConfig() { return null; }
        // 处理请求并响应,业务逻辑
        public void service(ServletRequest servletRequest, ServletResponse servletResponse)
        { System.out.println("Hello"); }
        // 提供关于Servlet的简短描述如版本等或者用来调试
        public String getServletInfo() { return ""; }
        public void destroy() { }
    }
    

再深一点(

  • 在实际开发时,我们为了简化开发专注于业务逻辑,往往通过继承HttpServlet来处理请求并响应

  • HttpServlet已经实现了Servlet接口,并实现了service()方法,源码如下

        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            String method = req.getMethod();
            long lastModified;
            if (method.equals("GET")) {
                lastModified = this.getLastModified(req);
                if (lastModified == -1L) {
                    this.doGet(req, resp);
                } else {
                    long ifModifiedSince = req.getDateHeader("If-Modified-Since");
                    if (ifModifiedSince < lastModified) {
                        this.maybeSetLastModified(resp, lastModified);
                        this.doGet(req, resp);
                    } else {
                        resp.setStatus(304);
                    }
                }
            } else if (method.equals("HEAD")) {
                lastModified = this.getLastModified(req);
                this.maybeSetLastModified(resp, lastModified);
                this.doHead(req, resp);
            } else if (method.equals("POST")) {
                this.doPost(req, resp);
            } else if (method.equals("PUT")) {
                this.doPut(req, resp);
            } else if (method.equals("DELETE")) {
                this.doDelete(req, resp);
            } else if (method.equals("OPTIONS")) {
                this.doOptions(req, resp);
            } else if (method.equals("TRACE")) {
                this.doTrace(req, resp);
            } else {
                String errMsg = lStrings.getString("http.method_not_implemented");
                Object[] errArgs = new Object[]{method};
                errMsg = MessageFormat.format(errMsg, errArgs);
                resp.sendError(501, errMsg);
            }
        }
    
  • 而我们只需要重写doGet()、doPost()等方法即可

    @WebServlet("/demo")
    public class ServletDemo extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //TODO GET 请求方式处理逻辑
            System.out.println("get...");
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //TODO Post 请求方式处理逻辑
            System.out.println("post...");
        }
    }
    

参考文章:都2023年了,Servlet还有必要学习吗?一文带你快速了解Servlet_servlet用得多吗-CSDN博客

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值