【Web后端】servlet基本概念

1.ServletAPI架构

  • HttpServlet继承GenericServlet
  • GenericServlet实现了Servlet接口,ServletConfig接口,Serializable接口
  • 自定义Servlet继承HttpServlet

2.Servlet生命周期

  • 第一步:容器加载Servlet
  • 第二步:调用Servlet的无参构造方法,实例化
  • 第三步:调用init()方法,完成初始化操作(在servlet生命周期中,只执行一次)
  • 第四步:调用service()方法,处理浏览端发送的请求,(HttpServlet中,可以调用doGet或doPost)
  • 第五步:调用destroy()方法,销毁线程

3.Servlet执行过程

Servlet是在Web服务器上运行的小程序,用于扩展服务器功能。Servlet通常用于交互式网页,在服务器上生成动态网页内容。

Servlet的执行过程通常如下:

  1. 客户端发送请求至服务器
  2. 服务器接收到请求后,根据请求中的URL确定应当由哪个Servet处理这个请求。
  3. 如果Servlet尚末被加载,则服务器加载这个Servlet,并创建一个Servlet实例。
  4. 服务器创建一个请求对象,该对象封装了客户端的请求信息,并创建一个响应对象。
  5. 服务器调用Servlet的 service 方法,传入请求和响应对象。
  6. service 方法根据请求的类型(GET、POST等),调用相应的方法( doGet、doPost 等)
  7. Servlet处理完请求后,将响应返回给服务器,
  8. 服务器将响应发送回客户端。

以下是一个简单的Servlet示例,它响应GET请求并返回“Hello,World!”:

  • 在这个例子中,doGet方法是处理GET请求的方法,它设置响应的内容类型为text/html,并通过PrintWriter输出HTML内容。当Servlet容器(如Apache Tomcat)接收到一个针对这个Servlet的请求时,它会调用service方法,service方法再进一步调用doGet方法。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
 
public class HelloWorldServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println("<html><body><h1>Hello, World!</h1></body></html>");
    }
}

4.Http协议

  • 是基于TCP/IP协议之上的应用层协议
  • 使用请求-响应模式
  • 请求从客户端浏览器发出,由服务器端响应该请求,并返回给浏览器端。
  • 无状态:自身不对请求和响应之间的通信状态进行保存。
  • 无连接:限制每次连接只处理一个请求。服务器处理完浏览器的请求,并收到浏览器应答后,就断开连接。

相关推荐

  1. web——netbeans ide +jsp+servlet开发学习总结

    2024-05-11 19:56:08       9 阅读
  2. Servlet基础之HTTP概述

    2024-05-11 19:56:08       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-11 19:56:08       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-11 19:56:08       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-11 19:56:08       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-11 19:56:08       18 阅读

热门阅读

  1. Hive优化(1)——分桶采样

    2024-05-11 19:56:08       9 阅读
  2. Django调用SECRET_KEY对数据进行加密

    2024-05-11 19:56:08       10 阅读
  3. 905. 按奇偶排序数组

    2024-05-11 19:56:08       10 阅读
  4. vue2 与vue3的差异汇总

    2024-05-11 19:56:08       10 阅读
  5. SpringBoot MybatisPlus 配置动态表名&多数据源

    2024-05-11 19:56:08       7 阅读
  6. MacOS安装Go

    2024-05-11 19:56:08       10 阅读
  7. MySQL中获取指定日期区间内所有日期

    2024-05-11 19:56:08       9 阅读
  8. 面向过程和面向对象

    2024-05-11 19:56:08       10 阅读
  9. C++ 一款纯C实现的打砖块小游戏

    2024-05-11 19:56:08       9 阅读
  10. 如何设计与管理一个前端项目

    2024-05-11 19:56:08       11 阅读