【JavaWeb】Servlet的应用全面讲解(一)
2023-09-11 14:18:28 时间
【JavaWeb】Servlet的应用全面讲解
一、Servlet的初步应用
应用Servlet,我们要以Java类去实现或继承相关类和接口去实现。常用的方法是继承HttpServlet类,来应用Servlet。除此之外,我们需要知道的是,HttpServlet也是通过继承GenericServlet类来实现符合http协议的Servlet应用。并且,GenericServlet类是通过实现Servlet接口来应用Servlet。因此,我们除了常规地可以继承HttpServlet类,还可以通过继承GenericServlet类或者实现Servlet接口来进行Servlet的初步应用。
(一)继承HttpServlet的应用
1. 步骤
/**
* 实现servlet
* 1. 创建普通Java类
* 2. 实现Servlet的规范,继承HTTPServlet类
* 3. 重写service方法,用来处理请求
* 4. 设置注解@WebServlet(),指定访问的路径
*/
2. 代码演示
//@WebServlet的用法
//@WebServlet(name = "Servlet01",value = "/ser01")
//@WebServlet(name = "Servlet01",value = {"/ser01","/ser02"})
//@WebServlet(name = "Servlet01",urlPattens = "/ser01")
//@WebServlet(name = "Servlet01",urlPattens = {"/ser01","/ser02"})
@WebServlet("/ser01") // 路径中的‘/’ 不要忘记
public class Servlet01 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 打印内容在控制台
System.out.println("Hello Servlet!");
//通过流输出数据到浏览器
resp.getWriter().write("Hello Servlet?");
}
}
(二)继承GenericServlet类的应用
1. 代码演示
@WebServlet("/ser02")
public class Servlet02 extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("继承GenericServlet类...");
}
}
(三)实现Servlet接口的应用
1. 代码演示
@WebServlet("/ser03")
public class Servlet03 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("实现Servlet接口...");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
二、Servlet的方法
service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。本质上Service()方法才是servlet中真正用于处理请求的方法。
每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
(1)service()
//若Servlet存在service方法,则优先调用service方法处理get/post请求
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("service...");
}
(2)doGet()
//处理Get方法的请求
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Get请求...");
}
(3)doPost()
//处理Post方法的请求
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Post请求...");
//可以调用Get请求
doGet(req,resp);
}
(4)Servlet的生命周期
/**
* 演示Servlet生命周期
*/
@WebServlet("/ser05")
public class Servlet05 extends HttpServlet {
/**
* 就绪/服务方法(处理请求数据)
* 系统方法,服务器自动调用
* 当有请求到达Servlet时,就会调用该方法
* 方法可以被多次调用
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Servlet被调用了...");
}
/**
* 销毁方法
* 系统方法,服务器自动调用
* 当服务器关闭或应用停止时,调用该方法
* 方法只会执行一次
*/
@Override
public void destroy() {
System.out.println("Servlet被销毁了...");
}
/**
* 初始化方法
* 系统方法,服务器自动调用
* 当请求到达Servlet容器时,Servlet容器会判断该Servlet对象是否存在,如果不存在,则创建实例并初始化
* 方法指挥执行一次
* @throws ServletException
*/
@Override
public void init() throws ServletException {
System.out.println("Servlet被创建了...");
}
}
相关文章
- 【导出导入】% 在导入导出中的应用。
- 【华为云分享】应用系统迁移华为云评估
- swoole运行模式加速laravel应用的详细介绍
- spring: spittr实例 构建简单的web应用 Test测试用例
- ehcache、redis应用场景比较
- SAP UI5 应用中的 sap.ui.require 使用场景
- 如何将bsp应用添加到SAP Fiori Launchpad里
- DataScience:机器学习中特征工程之WOE编码(离散变量编码/有监督)的简介、计算过程、案例应用之详细攻略
- CV之OD之YOLOv3:基于Tensorflow框架利用YOLOv3算法实现目标检测(以热播新剧《庆余年》为例)案例应用
- 云图说 | MSSI之应用业务模型ABM,搭建业务与技术的数据治理桥梁
- 在Ubuntu平台上创建Cordova Camera HTML5应用
- 异或运算的应用
- Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】
- Servlet第四篇【request对象常用方法、应用】