Javaweb基础概念

目录--“供自己回看的粗略笔记”

!!是markdown文件导入,存在格式问题,可直接看附件文档

Servlet概述

servlet简介

Servlet是运行在Servlet容器中的Java类,能处理Web客户端的HTTP请求,并产生HTTP响应

servlet 请求和访问过程

(servlet本身不做业务处理,通过调用其他类处理)

步骤:

  • 接收HHTP请求
  • 取得请求信息,包括请求头部信息和请求参数数据
  • 调用其他Java类方法,完全具体的业务功能
  • 实现到其他Web组件的跳转(包括重定向或请求转发
  • 生成HTTP响应(包括HTML或非HTML响应)

servlet特点

高效、方便、功能强大、可移植性好

servlet是Java EE(java 企业级的开发技术,一套规范)的基础,随Java EE规范一起发布,是Java EE的一部分

页面跳转

  • (主要)请求转发:jsp不能直接传值,需要通过HttpServletRequest request对象传值,forward

  • 重定向:response对象提供的:重定向redirect

servlet容器

servlet容器也就是Servlet所运行的环境

  • servlet容器先接受请求,通过请求找到对应的servlet,再实例化servlet类对象(servlet不需要手动实例化,容器可以自动实例化

  • tomcat是servlet容器之一

  • servlet运行需要在容器里运行

Serlvet API

servlet是使用Serlvet API(应用程序设计接口)及相关类和方法的Java程序

Serlvet API 包含两个软件包:

  • javax.servlet包
  • javax.servlet.http包

接口

javax.servlet.Servlet

所有的Servlet都必须直接或间接地实现javax.servlet.Servlet接口(继承父类)

❗❗Servlet接口中的重要方法

​ 跟生命周期相关的方法重要!

  • init方法初始化:在servlet实例化,由**servlet容器调用的对servlet进行初始化;servlet实例只能被调用一次**

  • service方法:处理用户请求的方法,然后判断调用什么方法

  • destroy方法销毁方法:servlet一旦被实例化之后就一直在内存当中,容器在终止servlet服务前调用此方法(tomcat正常停止运行后)

​ …config:调用servlet配置信息

javax.servlet.http.HttpServlet

HttpServlet指能够处理HTTP请求的Sevlet,它在原有Servlet接口上添加了对HTTP协议的处理

HttpServlet中的重要方法

​ service

​ doGet

​ doPost

❗❗servlet生命周期

Servlet生命周期是指Servlet实例从创建到响应客户请求,直至销毁的过程.

Servlet程序本身不直接在Java虚拟机上运行,由Servlet容器负责管理其整个生命周期

这些方法在哪执行,执行几次要会

  • 构造方法:执行一次

  • inti():执行一次

  • sevice()可能被多次调用:执行多次

  • destroy():执行一次

可划分为四个阶段:加载和实例化、初始化、处理请求、销毁!!!!!!

image-20230925143846891

简单来说,实例化调用servlet构造方法,初始化调用init方法,合为servlet创建过程

当请求到了tomcat里tom会先找对象,没找到就实例化,然后实例化

请求处理完毕之后,不会立即销毁,先存放在容器之中,后续可能还会访问到

service:会为每个用户的请求创建一个线程(每一个请求都在一个线程调用一次service)(一个实例多线程)

测试例子

重写方法,加个输出

右键 - > Gennerate - > override

TestServlet.java

package com.example.web_demo3;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "TestServlet", value = "/test")
public class TestServlet extends HttpServlet {
   

    //重写这些方法,加一个打印输出让我看到这些方法运行过程
    public TestServlet() {
   
        super();
        System.out.println("TestServlet Constructor");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        super.service(req, resp);
        System.out.println("Service method");
    }

    //一般在这一般不会调用,停止tomcat时会执行
    @Override
    public void destroy() {
   
        System.out.println("Destroy method");
        super.destroy();
    }

    @Override
    public void init() throws ServletException {
   
        System.out.println("Init method");
        super
  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值