一、Servlet简介
- 官方文档:https://tomcat.apache.org/tomcat-8.0-doc/servletapi/index.html
- 什么是Servlet:Servlet 在开发动态 WEB 工程中,得到广泛的应用,Servlet是SpringMVC的基础
- Servlet的特点
- 由服务端调用和执行的
- 用Java语言编写的,本质就是Java类
- 按照Servlet规范开发
二、简单实现一个Servlet
- 使用idea创建一个工程。
- 配置好Tomcat。
- 添加servlet-api.jar到工程,该jar包在Tomcat文件lib目录下
- 在src目录下创建代码的包和java文件,实现Servlet接口
package com.study.servlet;/*
@author Tmac
@version 1.0
*/
import javax.servlet.*;
import java.io.IOException;
public class StudyServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init() 方法被调用");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Service方法被调用");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
- 在web.xml中配置StudyServlet,提供StudyServlet对外访问地址
<servlet>
<servlet-name>StudyServlet</servlet-name>
<servlet-class>com.study.servlet.StudyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>StudyServlet</servlet-name>
<url-pattern>/study</url-pattern>
</servlet-mapping>
#servlet标签给Tomcat配置Servlet程序
#servlet-name标签是给Servlet程序起一个名字
#servlet-class是Servlet程序全类名
#servlet-mapping标签是给Servlet程序配置访问地址
- 浏览器访问配置好的URL地址
- 返回控制台,可看见方法被调用
三、Servlet流程
文章来源:https://www.toymoban.com/news/detail-814731.html
- 如果是第一次请求
- 查询web.xml
- 查看请求的资源,web.xml里配置的url-pattern
- 找到url-pattern得到Servlet-name
- 查询该Servlet的实例
- 如果没有查询到该Servlet对应的id,即没有这个Servlet实例
- 根据Servlet-name得到Servlet-class:类的全路径
- 使用反射,将Servlet实例化
四、Servlet生命周期
- 主要有三个方法
- init()初始化阶段
- service()处理浏览器请求阶段
- destroy()终止阶段
初始化阶段
Servlet 容器(比如: Tomcat)加载 Servlet,加载完成后,Servlet 容器会创建一个 Servlet 实例 并调用 init()方法,init()方法只会调用一次, Servlet 容器在下面的情况装载 Servlet:文章来源地址https://www.toymoban.com/news/detail-814731.html
- Servlet 容器(Tomcat)启动时自动装载某些 servlet,实现这个需要在 web.xml 文件中添加 1 1 表示装载的顺序
- 在 Servlet 容器启动后,浏览器首次向 Servlet 发送请求
- Servlet 重新装载时(比如 tomcat 进行 redeploy【redeploy 会销毁所有的 Servlet 实例】),浏览器再向 Servlet 发送请求的第 1 次
Service阶段
- 每收到一个 http 请求,服务器就会产生一个新的线程去处理[线程]
- 创建一个用于封装 HTTP 请求消息的 ServletRequest 对象和一个代表 HTTP 响应消息的 ServletResponse 对象
- 然后调用 Servlet 的 service()方法并将请求和响应对象作为参数传递进去
destory终止阶段
- 当 web 应用被终止,或者 Servlet 容器终止运行,或者 Servlet 类重新装载时,会调用 destroy()方法
五、GET和POST请求的分发处理
- 开发 Servlet, 通常编写 doGet、doPost 方法。来对表单的 get 和 post 请求进行分发处理
public void service(ServletRequest servletRequest,
ServletResponse servletResponse) throws ServletException,
IOException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; String method = httpServletRequest.getMethod();
if("GET".equals(method)) {
doGet(); //用 doGet() 处理 GET 请求
} else if("POST".equals(method)) {
doPost(); //用 doPost() 处理 POST 请求
}
}
public void doGet() {
System.out.println("doGet() 被调用..");
}
public void doPost() {
System.out.println("doPost() 被调用..");
}
到了这里,关于Javaweb学习之Servlet的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!