JavaWeb基础 (二):Servlet

本文介绍了Servlet的基础知识,包括Servlet的功能、工作流程、如何使用Servlet及其相关接口如ServletRequest、ServletResponse、ServletConfig和ServletContext。Servlet的主要层级结构由Servlet -> GenericServlet -> HttpServlet构成,HttpServlet简化了开发步骤,提供doGet和doPost方法处理HTTP请求。
摘要由CSDN通过智能技术生成


JavaWeb基础 (二):Servlet

Servlet API的主要类型
在这里插入图片描述

  1. Servlet接口是所有Servlet直接或间接实现的一个接口。

  2. Servlet接口定义了Servlet与Servlet容器(Web服务器/Tomcat)之间的契约,Servlet运行在 Servlet容器/Web应用服务器/tomcat,负责与客户端通信。

  3. 在一个应用程序中,每种Servlet类型只能有一个实例

Servlet的功能:

  1. 创建并返回基于客户请求的动态HTML页面
  2. 与数据库进行通信

Servlet工作流程

Servlet的工作流程也可看作是 Servlet的生命周期

  1. 当浏览器访问Servlet时,Tomcat会查询当前Servlet的实例化对象是否存在,若不存在,则通过反射机制动态创建对象(无参构造函数),如果存在,则直接执行service
  2. 调用init方法完成初始化操作
  3. 调用service方法完成业务逻辑操作
  4. 关闭Tomcat时,调用destroy方法,释放当前对象所占用的资源

如何使用Servlet

Servlet本身是一组接口,javax.servlet包下,定义Java类实现Servlet接口,这个类就具备接受客户端请求以及做出响应的功能

Servlet接口中定义了以下5个方法:

  • public void init(ServletConfig servletConfig) throws ServletException {}

  • public ServletConfig getServletConfig() {return null;}

  • public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {}

  • public String getServletInfo() {return null;}

  • public void destroy() {}

ServletRequest

对于每一个HTTP请求,Servlet容器都会创建一个ServletRequest实例,并将它传给Servlet的Service方法。 ServletRequest封装了关于这个请求的信息。

getParameter是在ServletRequest中最常用的方法,该方法通常用于返回HTML表单域的值。

getParameter也可以用于获取查询字符串的值。

例如,利用URI调用Servlet:

http://xx/xxx//xx?id=123

用下面这个语句,可以通过Servlet内部获取id值:

String id = request.getParameter(“id”);

如果该参数不存在,getParameter将返回 null

ServletResponse

javax.servlet.ServletResponse接口表示一个Servlet响应。在调用Servlet的Service方法前,Servlet容器首先创建一个ServletResponse,并将它作为第二个参数传给Service方法。ServletResponse隐藏了向浏览器发送响应的复杂过程。

ServletConfig 和 ServletContext

对于每一个应用程序,Servlet容器还会创建一个ServletContext实例。这个对象中封装了上下文(应用程序)的环境详情。每个上下文只有一个ServletContext。 每个Servlet实例也都有一个封装Servlet配置的ServletConfig。

  1. ServletConfig作用于某个Servlet实例,每个Servlet都有对应的ServletConfig
  2. ServletContext作用于整个Web应用,一个Web应用对应一个ServletContext,多个Servlet实例对应一个ServletContext

下面一段代码 描述了ServletConfig和ServletContext 之间的区别

ServletConfig 中 getInitParameterNames() 和 getInitParameter() 获取到的参数是Web.xml里的<servlet> 标签中的 <init-param> 中的属性。

ServletContext中的 getInitParameterNames() 和 getInitParameter() 获取到的参数是Web.xml里的 <context-param>标签中的属性。

这也说明了,ServletConfig是属于单个Servlet实例的,而ServletContext是属于整个Web应用的,多个Servlet共用

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
   
        System.out.println("[MyServlet init()] init()...");
        // <servlet-name>MyServletDemo</servlet-name>
        System.out
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值