IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> servlet的概述 -> 正文阅读

[Java知识库]servlet的概述

Servlet(javaEE 、javaWEB)

servlet -----> server + applet
意为用java编写的服务器端程序

它运行在web服务器中,web服务器负责Servlet和客户的通信以及调用Servlet方法,Servlet和客户通信采用“响应/请求”的模式。

web开发的流程图:
请添加图片描述

Servlet的作用:
● 接受用户发送的请求
● 调用其他的java程序来处理请求
● 根据处理结果,服务器将响应返回给客户端

一般情况下javaweb中将架包都是放在的WEB-INF中的lib包里
右键选中所要的架包,然后选择Add as Library… 选项


重写父类的方法
在这里插入图片描述


构造方法
只被执行一次,只创建了一个对象,此对象由服务器创建的,
默认是在客户端第一次访问该servlet时创建servlet对象

init()方法
初始化
当servlet对象创建后,服务器会自动调用init()方法
完成一些初始化操作
init中加载时就拿到配置文件中的servlet的参数数据
如果我们没有需要初始化的操作,也可以是不用重写的,但是服务器依然会调用,调用父类的init()

service()方法
服务
为请求提供服务,每一次HTTP请求都会调用service(请求对象,响应对象)

destroy()方法
销毁
当servlet这个对象销毁的时候,服务器会调用destroy(),
让我们完成一些最终的操作,(例如保存日志…)
如果没有请求的话,这个方法也是可以不用写的,但是依然会调用,调用父类的destroy

页面执行时调用这个servlet中的语句

package com.student.firstweb.servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class DemoServlet extends HttpServlet {
    //    构造方法,初始化对象
    //    只被执行一次,只创建了一个对象,此对象由服务器创建的,
    //    默认是在客户端第一次访问该servlet时创建servlet对象
    //    <load-on-startup>0</load-on-startup>当在配置文件中值>=0时,会在服务器启动时加载
    //                                        默认情况下值=-1
    public DemoServlet() {
        System.out.println("DemoServlet构造方法");
    }

    //    初始化
    //    当servlet对象创建后,服务器会自动调用init()方法
    //    完成一些初始化操作
    //    <load-on-startup>0</load-on-startup>当在配置文件中值>=0时,会在服务器启动时加载
    //                                        默认情况下值=-1
    //    init中加载时就拿到配置文件中的servlet的参数数据
    //    如果我们没有需要初始化的操作,也可以是不用重写的,但是服务器依然会调用,调用父类的init()
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init");
        config.getInitParameter("name");    //通过这个方法就可以拿到配置文件中的信息
    }

    //    服务
    //    为请求提供服务,每一次HTTP请求都会调用service(请求对象,响应对象)
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service");
    }

    //    销毁
    //    当servlet这个对象销毁的时候,服务器会调用destroy(),
    //    让我们完成一些最终的操作,(例如保存日志....)
    //    如果没有请求的话,这个方法也是可以不用写的,但是依然会调用,调用父类的destroy
    @Override
    public void destroy() {
        System.out.println("destroy");
    }
}

.xml配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--
        xml: 都属于的是标记语言   html是标记内容指导内容如何显示
            xml可扩展标记语言 用来保存数据   保存配置文件数据
        web.xml: 就是web程序的配置文件,保存各种配置信息,在服务器启动时,由服务器读取
    -->
    <!--配置servlet-->
    <!-- 把servlet配置进来,服务器就知道有这么一个类-->
    <servlet>
        <servlet-name>demo</servlet-name><!--为servlet对接定义一个名字,这个名字随便取-->
        <!--配置类的地址,让服务器使用反射地址创建对象-->
        <servlet-class>com.student.firstweb.servlet.DemoServlet</servlet-class><!--给的是全类名-->
        <!--配置的参数-->
        <init-param>
            <param-name>name</param-name>
            <param-value>tom</param-value>
        </init-param>
        <!--配置servlet何时被加载-->
        <!--当在配置文件中值>=0时,会在服务器启动时加载。默认情况下值=-1为第一次访问-->
        <load-on-startup>0</load-on-startup>
    </servlet>


    <!--为servlet配置一个供前段访问的映射地址-->
    <servlet-mapping><!--映射的意思 demo的映射-->
        <servlet-name>demo</servlet-name>
        <!--地址以/开头 /表示项目的根目录-->
        <url-pattern>/demourl</url-pattern><!--前端点击的连接就是与这个做连接相对应-->
    </servlet-mapping>
</web-app>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>我的第一个web程序</title>
</head>
<body>
<a href="demourl">列表</a><!-- 这里的demo就指向了web.xml中的映射中的demo -->
<form action="demourl">
    账号:<input type="text">
    密码:<input type="password">
    <input type="button" value="保存">
</form>

</body>
</html>

页面发起请求,通过.xml访问到服务器中,调用到服务器中应调用到的代码。
在这里插入图片描述
在这里插入图片描述

只有第一次调用时才会调用init函数,在之后的买一次调用时,只访问到service函数,关闭服务器最后才会调用这个destroy函数

打开服务器中时,默认调用的MTML页面是默认为index.html网页页面
在这里插入图片描述

servlet的生命周期

1、实例化
构造方法:只被调用一次,只有第一次访问Servlet时或服务器启动时创建Servlet实例
2、初始化
init方法:只被调用一次,在Servlet实例创建好实例后立即执行,用于执行一些初始化Servlet的操作
3、服务
service方法:多次调用,每次请求都调用service方法,根据请求方式调用doGet()或doPost()方法。
4、消亡
destroy方法:只被调用一次,在服务器关闭时调用,执行一些操作。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-12 23:18:12  更:2021-10-12 23:20:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:43:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码