什么是Servlet

Servlet是java Web开发者的基础,与平台无关的服务器组件,它是运行在Servlet容器(Web) 应用服务器(Tomcat)负责与客户端进行通信

Servlet功能

1、 创建并返回基于客户请求的动态HTML页面

2、 与数据库进行通信

如何使用Servlet

Servlet本身是一组接口,自定义一个类,并实现Servlet接口,这个类就具备了接受客户端请求及作出响应的功能

在src文件下新建一个包
在这里插入图片描述
在这个包下再新建一个Servlet类
在这里插入图片描述
继承Servlet接口,继承完是这样的
在这里插入图片描述

如果没有servlet类因为External Library中没有引入Tomcat,重新创建一个项目即可
在这里插入图片描述

默认访问地址

在这里插入图片描述
可以看到这里网页并非我们文件的绝对地址,其是通过打包现有文件,在out文件中访问的
在这里插入图片描述
要想访问Servlet文件,需要设置一个地址映射

在此处写入
在这里插入图片描述
url-pattern是客户端请求的地址,其映射到MyServlet,而MyServlet又与文件中的类相映射
所以可以通过 http://localhost:8080/myservlet
来访问MyServlet这个类

如果访问出现404

第一次访问大概率会出现在这里插入图片描述
把这两处的红色尾缀去掉
在这里插入图片描述
在这里插入图片描述
即可

Servlet应答

如果按照上述程序进行访问是无法有页面内容显示的
可以在MyServlet中添加代码
在这里插入图片描述
其在终端就能显示出是否侦测到请求
在这里插入图片描述
前端也是有语句显示
在这里插入图片描述
如果语句含有中文会出现问号,在回复前设置内容格式
在这里插入图片描述
即可实现中文显示
在这里插入图片描述

前端传递参数

http://localhost:8080/myservlet?name=maker

前端在网址后?+“参数名称=内容”可以对Servlet传递参数

Servlet用ServletRequest.getParameter()获取参数

在这里插入图片描述

基于注解方式配置Servlet

以上是基于XML配置Servlet(比较麻烦),以下是基于注解

在Servlet类中添加如下注解即可
在这里插入图片描述
就能轻松访问了
在这里插入图片描述

Servlet生命周期

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

生命周期的方法:无参构造函数、init、service、destory

  1. 无参构造函数只调用一次、创建对象
  2. init只调用一次,初始化对象
  3. service调用N次,执行业务方法
  4. destory只调用1次,释放对象

在这里插入图片描述
先创建 再初始化 后执行业务功能 再次刷新也是执行业务功能(因为已经存在了对象)
最后释放对象

ServletConfig

这是一个接口,用于描述 Servlet 的信息

getServletName()

返回Servlet的名称(带包名的全类名)

getInitParameter(String key)

返回初始化的信息(web.XML中配置的内容,很少用)

getInitParameterNames()

返回所有的initParameter的name值,以便用作遍历初始化参数

getServletContext()

返回ServletContext对象,是Servlet上下文,整个Servlet的管理者
获取ServletContext对象后,可以调用以下方法

ServletConfig和ServletContext区别
ServletConfig作用于某个Servlet实例,每个Servlet都有对应的ServletConfig,
ServletContext作用于整个Web应用,一个Web应用只有一个ServletContext

Servlet层级结构

Servlet→GenericServlet→HttpServlet

回顾上面Servlet接口诸多方法中,只有service是真正有用的,现有5个方法而只有一个有用,这就很浪费了,为了减少代码冗余 可以考虑继承HttpServlet

GenericServlet实现Servlet接口,同时为子类屏蔽了很多不常用的方法,子类只需要重写service方法即可
HttpServlet继承GenericServlet,根据其你去类型竞选分发出来,GET进入doGet方法,post进入doPost方法
实际使用时继承HTTPServlet即可

HTTP请求有很多类型,通常有4种
GET 读取
POST 保存
PUT 修改
DELETE 删除

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐