概述
Servlet(Server Applet),全称Java Servlet,未有中文译文。是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将Servlet 理解为后者
Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于HTTP协议的Web服务器。
简单理解:
Servlet 是 Java Web 服务端的一个小程序,主要用户数据的交互,Web 数据展示和数据传递,这里的 Servlet 是一个动态资源。
Servlet 程序可以应对所有类型的请求和响应,Servlet 主要还是用于HTTP 协议的WEB服务器程序实现。
工作模式【重点】
- 浏览器端发送请求至服务器
- 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器
- 服务器将响应返回客户端
tomcat 和 servlet 的关系【了解】
Tomcat 是 Web 应用服务器,是一个 Servlet/JSP 容器。Tomcat 作为 Servlet 容器,负责处理客户请求,把请求传送给 Servlet,并将 Servlet 的响应传送回给客户。而Servlet是一种运行在支持 Java 语言的服务器上的组件。Servlet 最常见的用途是扩展 Java Web 服务器功能,提供非常安全的,可移植的,易于使用的 CGI 替代品。
1、Tomcat将http请求文本接收并解析,然后封装成HttpServletRequest类型的request对象,所有的HTTP头数据读可以通过request对象调用对应的方法查询到。
2、Tomcat同时会要响应的信息封装为HttpServletResponse类型的response对象,通过设置response属性就可以控制要输出到浏览器的内容,然后将response交给tomcat,tomcat就会将其变成响应文本的格式发送给浏览器
Java Servlet API 是 Servlet容器 (tomcat) 和 servlet 之间的接口,它定义了 serlvet 的各种方法,还定义了 Servlet 容器传送给 Servlet 的对象类,其中最重要的就是 ServletRequest 和 ServletResponse。所以说我们在编写servlet 时,需要实现 Servlet 接口,按照其规范进行操作。
初识
步骤
1、创建类并继承自HttpServlet
2、重写doGet和doPost方法(两个方法实际是一个)
3、声明@WebServlet并加上默认属性(访问路径)
案例代码
html页面
【注意】
- Servlet代码中的@WebServlet注解中的属性值前必须要加 /
- HTML页面中跳转页面不要加 /
servlet 核心接口和类
【重点】HttpServlet 中的 doGet 和 doPost 方法
三种创建 Servlet 的方式
【注意】不管是哪种方式都一定要加上@WebServlet注解!!!
实现 servlet 接口【鸡肋】
太过繁琐,需要关注的东西太多,pass
继承 GenericServlet 类【鸡肋】
相比于实现 Servlet,友好太多,但是还不够友好,因为没有对应Http协议请求的处理方法
继承 HttpServlet 类【重点】
【注意】一定要重写 doGet 和 doPost 方法
使用继承 HttpServlet 类的优点
HttpServlet 在实现 Servlet 接口的时候,已经实现了 servlet 中所有方法,因此继承自 HttpSrvlet 的类,不需要再去重写相应的生命周期等方法,并且支持 HTTP 协议
Servlet 生命周期
- Servlet 构造方法被执行
- 然后使用 init 方法进行初始化。
- 浏览器端对 service 方法的任何调用都将被处理
- Servlet 退出,使用 destroy 方法进行销毁,然后垃圾收集并完成。
案例代码
两种配置方式【重点】
通过 @WebServlet 注解
@WebServlet注解用于标注在一个继承了HttpServlet类之上,属于类级别的注解
【注意】Servlet3.0之后允许使用注解方式配置!!!
常用格式
常用属性描述
属性 | 类型 | 是否必须 | 描述 |
---|---|---|---|
asyncSupported | boolean | 否 | 指定Servlet是否支持异步操作 |
displayName | String | 否 | 指定Servlet显示名称 |
initParams | WebInitParam[] | 否 | 配置初始化参数 |
loadOnStartup | int | 否 | 标记容器是否在应用启动时就加载这个Servlet,默认 -1,选择加载 1 |
name | String | 否 | 指定Servlet名称 |
urlPatterns | String[] | 是/否 | 允许当前Servlet有多个匹配方式,和value互斥 |
value【重点】 | String[] | 否/是 | url资源匹配方式,和urlPatterns互斥 |
案例代码
通过 web.xml 文件
核心内容
XML 配置文件
案例代码
两种方式比较
@WebServlet注解 配置简单,直观,高效 url-pattern 冲突问题,并且是在Tomcat启动时发现,需要注意细节 web.xml配置文件 繁琐,麻烦,步骤繁多 url-pattern 一旦写错或者冲突,web.xml文件会提示错误!!!
版权属于:不冷
本文链接:https://www.buleng.xyz/archives/95/
转载时须注明出处及本声明
文章中的实用建议和操作指南,让读者受益匪浅,值得珍藏。