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.init();
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
        System.out.println("doGet...");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
        doGet(request,response);
    }
}

Servlet的声明配置

声明配置的实现

通过这个注解@WebServlet实现声明配置

或者将声明配置通过web.xml(在WEB-INF里)里实现

WEB-INF这个文件名不能改!!改了就不是配置文件了

@WebServlet的属性

在这里插入图片描述

loadOnStartup:之前实例化是在第一次请求访问servlet路径时,loadOnStartup可以通过配置在容器一启动就实例化(更改顺序)

Servlet应用与特性

发带参数的请求(超链接)

链接文本

请求转发

请求转发是指将请求再转发到其他地址,转发过程中使用的是同一个request请求,转发后浏览器地址栏内容不变。

在这里插入图片描述

你访问XXX(路径是XXX),实际上你跳转的是xxx(内容是xxx)

request.getRequestDispatcher().forword()

重定向

重定向是指原请求地址重新定位到某个新地址,原有的request请求失效,客户端看到的是新Request请求的响应结果,客户端浏览器地址栏变为新请求地址

在这里插入图片描述

response.sendRedirect()

请求转发和重定向的区别:

请求转发(大部分页面跳转都用这个,因为它发的请求的次数少):

request.getRequestDispatcher("/hello.jsp").forword(request,response);
  • 地址栏:http://localhost:8080/test

  • 源文件和目标文件,是同一个request对象(共用同一个Request)

  • 跳转在服务器端进行,只有一次请求

  • 只能在当前web应用的内部(本地-文件)做跳转,不能跳转到其他应用(不同服务器,同一服务器不同应用也不行)

重定向:

response.sendRedirect("/hello.jsp");
  • 地址栏:http://localhost:8080/hello.jsp

  • 源文件和目标文件,不是同一个request对象(每一次请求,生成一个心新的request对象)

  • 返回目标文件地址,客户端重新发送请求到目标文件,有两次请求

  • 可以跳转到另外一台服务器上(访问不是存在本地的“网页”)

在这里插入图片描述

在这里插入图片描述

Servlet接口

ServletContext接口

ServletContext(Servlet上下文)–代表当前servlet运行环境

xxxcontext也就是xxx上下文

所用用户,请求、页面都可以,所有对象可用。全局可用

例:网站访问次数计数(不管是不是不同用户,访问了也能再访问,只记次数)

ServletContext 
  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值