Servlet学习笔记(一)

Servlet学习

一. Servlet概述

Servlet(Server + Applet) 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

在这里插入图片描述

二. Servlet API

主要Servlet API介绍

  • javax.servlet.Servlet接口
    所有Java Servlet的基础接口类,规定了必须由Servlet具体类实现的方法集
  • javax.servlet.GenericServlet类
    是Servlet的通用版本,是一种与协议无关的Servlet
  • javax.servlet.http.HttpServlet类
    在GenericServlet基础上扩展的基于Http协议的Servlet

通常使用HttpServlet来处理Http请求:

public class MyServlet extends HttpServlet {

}

三. Serlvet的生命周期

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:

生命周期谁来做何时做
实例化Serlvet容器当Servlet容器启动或者容器检测到客户端请求时
初始化Serlvet容器实例化后, 容器调用Servlet的init()初始化对象
处理请求Serlvet容器得到客户端请求并做出处理时
销毁Serlvet容器当程序中的Servlet对象不再使用的时候, 或者Web服务器停止运行的时候

在这里插入图片描述

1. init方法

init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化,就像 Applet 的 init 方法一样。

Servlet 创建于用户第一次调用对应于该 Servlet 的 URL 时,但是您也可以指定 Servlet 在服务器第一次启动时被加载。

当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。

2. doGet() 方法

doGet()方法用来处理GET请求

public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
    // Servlet 代码
}

3. doPost() 方法

doPost()方法用来处理POST请求

public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
    // Servlet 代码
}

4.service()方法

service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。

每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。

public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
	// Servlet 代码
}

5. destory()方法

destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。通常将代码的清理和关闭代码写在其中

  public void destroy() {
    // 终止化代码...
  }

示例:

public class MyServlet extends HttpServlet {

  public void init() throws ServletException{
      // 执行必需的初始化
  }

  public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
      // 处理GET请求
  }
      public void doPostt(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
      // 处理POST请求
  }
  
  public void destroy(){
     // Servlet销毁时执行
  }
}

四. Servlet的部署

现在我们创建了Servlet类, 但是服务器如何知道用户的请求要交给哪个Servlet来处理呢? 创建了Servlet之后, 还需要web.xml文件中配置相关信息

在xml文件中进行如下配置

<!--配置servlet类路径 -->
<servlet>
    <servlet-name>ms</servlet-name>		<!-- 对Servlet相对路径起个别名 -->
    <servlet-class>com.MyServlet</servlet-class>	<!-- Servlet的相对路径 -->
    <load-on-startup>1</load-on-startup>            <!-- 数字表示加载顺序,该Servlet在服务器启动时就会初始化完成 -->
</servlet>

<!--配置访问方式 -->
<servlet-mapping>
    <servlet-name>ms</servlet-name>		<!-- Servlet的别名,已经在上方定义  -->
    <url-pattern>/hello</url-pattern>	<!-- 请求地址 -->
</servlet-mapping>

如何理解: 浏览器请求url地址后, url比对XML中的url-pattern中的地址, 如果有对应的url-pattern, 则在servlet中找到与url-pattern成对的servlet-name, 最后就可以得到

servlet-name对应的唯一的servlet-class, 获取了这个Servlet的相对路径, 就可以让这个Servlet来处理响应的请求了

注意:

  • servlet-name和servlet-class 必须一一对应
  • url-pattern中必须有斜杠
  • servlet-class必须是正确的相对路径

任何配置信息的错误都有可能让Tomcat无法启动或无法处理请求. 配置web.xml后必须重启服务器.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值