动态web开发核心--servlet

servlet简单概述

引出servlet:

假设我们要设计一个网站,需要实现用户留言、购物等功能时,用前端三件套(html、css、js)是不行的。这时候就引进servlet。

用一句话说:servlet就是为了引入动态网页(能与用户交互的过程)。

tomcat是支持servlet的。

servlet很重要,它是SpringMVC的基石。

servlet的特点

  1. 它是由服务器调用和执行的(就是tomcat解析和执行)

  1. 它是由Java程序编写的,本身就是java类

  1. 它是按照Servlet规范开发的。

  1. 功能强大,几乎可以完成所有的网站功能。

servlet3.0 前使用 web.xml , servlet3.0 版本以后(包括 3.0)支持注解, 同时支持 web.xml 配置

servlet生命周期

主要有三个方法:

下图是比较形象的示意图,可以记住。

● 初始化阶段 Servlet 容器(比如: Tomcat)加载 Servlet,加载完成后,Servlet 容器会创建一个 Servlet 实例 并调用 init()方法,init()方法只会调用一次, Servlet 容器在下面的情况装载 Servlet:

1. Servlet 容器(Tomcat)启动时自动装载某些 servlet,实现这个需要在 web.xml 文件中添加 1 1 表示装载的顺序 2. 在 Servlet 容器启动后,浏览器首次向 Servlet 发送请求 3. Servlet 重新装载时(比如 tomcat 进行 redeploy【redeploy 会销毁所有的 Servlet 实例】), 浏览器再向 Servlet 发送请求的第 1 次

● 处理浏览器请求阶段(service 方法) 1. 每收到一个 http 请求,服务器就会产生一个新的线程去处理[线程] 2. 创建一个用于封装 HTTP 请求消息的 ServletRequest 对象和一个代表 HTTP 响应消息的 ServletResponse 对象 3. 然后调用 Servlet 的 service()方法并将请求和响应对象作为参数传递进去

● 终止阶段 destory 方法(体现 Servlet 完整的生命周期) 当web 应用被终止,或者Servlet 容器终止运行,或者Servlet 类重新装载时,会调用 destroy() 方法 , 比如重启 tomcat ,或者 redeploy web 应用

get和post请求的分发处理

开发 Servlet, 通常编写 doGet、doPost 方法。来对表单的 get 和 post 请求进行分发处理。

比如下方代码(html)的form标签,里面有method=“post”,就是会发送post请求。

<body>
<h1>注册用户</h1>
<form action="http://localhost:10000/hspedu_servlet/ok" method="post">
u: <input type="text" name="username"/><br><br>
<input type="submit" value="注册用户"/>
</form>
</body>

这是浏览器发送请求给服务器到服务器返回数据给浏览器的大致流程。

*1. service 方法处理浏览器的请求(包括 get/post) * 2. 当浏览器每次请求 Servlet 时,就会调用一次 service * 3. 当 tomcat 调用该方法时,会把 http 请求的数据封装成实现 ServletRequest 接口 韩顺平 Java 工程师 的 request 对象 * 4. 通过 servletRequest 对象,可以得到用户提交的数据 * 5. servletResponse 对象可以用于返回数据给 tomcat->浏览器

servlet注意事项和细节

1. Servlet 是一个供其他 Java 程序(Servlet 引擎)调用的 Java 类,不能独立运行

2. 针对浏览器的多次 Servlet 请求,通常情况下,服务器只会创建一个 Servlet 实例对象, 也就是说 Servlet 实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至 web 容器退出/或者 redeploy 该 web 应用,servlet 实例对象才会销毁 【示意图】

servlet对象实例驻留内存中

3. 在 Servlet 的整个生命周期内,init 方法只被调用一次。而对每次请求都导致 Servlet 引 擎调用一次 servlet 的 service 方法。

4. 对于每次访问请求,Servlet 引擎都会创建一个新的 HttpServletRequest 请求对象和一个 新的 HttpServletResponse 响应对象,然后将这两个对象作为参数传递给它调用的 Servlet 的 service()方法,service 方法再根据请求方式分别调用 doXXX 方法

ServletConfig和ServletContext

了解即可

(1)ServletConfig 基本介绍

1. ServletConfig 类是为 Servlet 程序的配置信息的类 2. Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建 3. Servlet 程序默认是第 1 次访问的时候创建,ServletConfig 在 Servlet 程序创建时,就创 建一个对应的 ServletConfig 对 象

ServletConfig 类能干什么 1. 获取 Servlet 程序的 servlet-name 的值 2. 获取初始化参数 init-param 3. 获取 ServletContext 对象

(2)ServletContext 基本介绍

1. ServletContext 是一个接口,它表示 Servlet 上下文对象 2. 一个 web 工程,只有一个 ServletContext 对象实例 3. ServletContext 对象 是在 web 工程启动的时候创建,在 web 工程停止的时销毁

4. ServletContext 对象可以通过 ServletConfig.getServletContext 方法获得对 ServletContext 对象的引用,也可以通过 this.getServletContext()来获得其对象的引用。 5. 由于一个 WEB 应用中的所有 Servlet 共享同一个 ServletContext 对象,因此 Servlet 对象 之间可以通过 ServletContext 对象来实现多个 Servlet 间通讯。ServletContext 对象通常也被 称之为域对象。【示意图】

ServletContext 可以做什么 1. 获取 web.xml 中配置的上下文参数 context-param [信息和整个 web 应用相关,而不是 属于某个 Servlet] 2. 获取当前的工程路径,格式: /工程路径 =》 比如 /servlet 3. 获 取 工 程 部 署 后 在 服 务 器 硬 盘 上 的 绝 对 路 径 4. 像 Map 一样存取数据, 多个 Servlet 共享数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值