java后端-servlet超详细入门

news2024/11/16 12:36:42

java后端介绍

今天我正式开始了一个新话题,那就是 Web。目前我主要会介绍后端。作为后端的老大哥 java,也有很多后端框架,比如大家耳熟能详的 spring 等。今天来带大家入门 servlet,不管是学生,刚毕业或是已经工作自学编程的人群都能看懂。

准备工作

目前我们使用的服务器是 Tomcat,大家可以先安装 Tomcat,这一步网上有很多教程,我不再说了。然后还需要下载 idea,配置 Tomcat 和 jdk,这些网上都有,如果配置遇到问题可以私信我。

Servlet项目创建

大家先用idea 创建 web 项目,创建好后应是这样。

现在在你的 src 目录下创建一个package,并命名为 com.xxxx.servlet。

然后在这个包下面创建一个 java类,名叫 servlet(你也可以自己起名字)

Servlet的基础使用

导入包

package com.xxxx.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

主要是导入了 servlet 的基本方法。

创建 java 类,并继承自HttpServlet 类

因为我们后面还要重写 HttpServlet 类中的方法,所以要继承这个类。

public class servlet extends HttpServlet{

}

重写 service 方法

因为我们要处理请求,所以要重写服务类来处理请求,否则处理不了请求。

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }

设置访问路径

@WebServlet("/servlet01")

这行代码加在类前面,这样我们就可以通过 /servlet01 路径来访问。

内容

这里我们在控制台(idea下面)和网页(浏览器访问)里分别打印一句话 "Hello Servlet!"

System.out.println("Hello Servlet");
//通过流输出内容
resp.getWriter().write("Hello Servlet");

实例完整代码

package com.xxxx.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/*
* 实现 Servlet
* 1.创建 web 项目,配置 Servlet 和 Tomcat
* 2.创建普通 Java 类
* 3.继承 HttpServlet 类
* 4.重写 service 方法(处理请求,Ctrl+o,选择倒数第二个钥匙的)
* 5.处理请求
* 6.设置注解,指定访问路径
* 7.配置,见https://blog.csdn.net/Samzz33/article/details/116311106
* */
@WebServlet("/servlet01")
public class servlet extends HttpServlet{
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.service(req, resp);
        //打印内容在控制台
        System.out.println("Hello Servlet");
        //通过流输出内容
        resp.getWriter().write("Hello Servlet");
    }
}

运行

点击 idea 右上角运行图标

然后 idea 会打开 http://localhost:8080/servlet_war_exploded/

但是你看不到任何内容,因为你没有访问你刚才设置的路径。

访问 http://localhost:8080/servlet_war_exploded/servlet01

你会看到

这就成功了

servlet的生命周期

类加载->实例化->服务->销毁

类加载

类加载在服务器启动时就执行,一次一个生命周期只执行一次。

实例化

开始生命周期时,服务器判断有没有实例化,如果没有则实例化。

写一个函数 init(),在实例化时执行。

@Override
    public void init() throws ServletException {
        System.out.println("Servlet被创建");
    }

当实例化是,会在控制台输出文字。

服务

当收到请求就开始服务,一个生命周期执行多次。

@Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Servlet被调用");
    }

销毁

一个生命周期执行一次,在服务器停止时执行,也就是你停止运行程序时。

@Override
    public void destroy() {
        System.out.println("Servlet被销毁");
    }

完整代码

package com.xxxx.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


/*
* Servlet生命周期: 类加载->实例化->服务->销毁
* */
@WebServlet("/servlet02")
public class servlet02 extends HttpServlet{
    /*
    * 一个生命周期只执行一次,服务器判断是否存在,不存在则创建实例,自动调用
    * */
    @Override
    public void init() throws ServletException {
        System.out.println("Servlet被创建");
    }

    /*
    * 服务方法,自动调用,当接收到请求就会调用该方法,可以被多次调用
    * */
    @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,拜拜~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/170800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【倍增】魔力小球

今天最后一篇,该睡了,怕猝死QwQ学校OJ上的一道模板题,去年不会做,今年还是不会做嘻嘻,还好最后调出来了,错的原因竟然是题目有歧义这个小球i的i是他喵的小球编号,不是id!出题人是懂出…

Win11的两个实用技巧系列之电脑system占用高的解决办法

Win11 system占用cpu过高是什么原因? Win11电脑system占用高的解决办法Win11 system占用cpu过高是什么原因?Win11系统遇到system占用cpu很高,该怎么解决呢?下面我们就来看看Win11电脑system占用高的解决办法System占用cpu过高导致电脑卡顿&a…

2023年中职网络安全技能竞赛网页渗透(注入版)

竞赛任务书内容 (一)拓扑图 网页渗透 任务环境说明: 服务器场景:Server2121 服务器场景操作系统:未知(封闭靶机) 用户名:未知 密码:未知 1.访问服务器网站目录1,根据页面信息完成条件,将获取到的flag提交; 2.访问服务器网站目录2,根据页面信息完成条件,将获…

学生写字台灯用什么牌子的好?高品质学生台灯品牌推荐

学生写字台灯,很明显就是为学生而设计的,针对学生长时间学习,用眼强度大的特点,这种学生台灯在设计上对灯光的亮度、样式、护眼技术都是很有讲究的,为的就是保护学生眼睛,在一定程度上缓解眼部疲劳的作用。…

进程概念理解

既然要了解计算机的进程,那么就需要先了解一下计算机的底层结构 目录 冯洛伊曼体系结构 操作系统 系统调用接口 进程 PCB task_struct 内容 操作系统如何组织进程 冯洛伊曼体系结构 想了解计算机的底层结构,那么必定绕不开冯洛伊曼体系结构&…

19/365 java 多线程

1. 基础概念 程序:指令集和数据的集合。(静态) 进程:对程序的一次执行。(动态) 对同一个程序,执行两次,那就是两个进程。 进程是系统资源分配的基本单位 线程:一个进程…

gma 1.1.2 (2023.01.14) 更新日志(重大更新:开始支持空间绘图)

重大更新:从本版本开始, gma 逐步 支持空间绘图功能(依赖 matplotlib)! 获取 gma 1.1.2 1、百度网盘: 链接:https://pan.baidu.com/s/1eT2rJRiUDJuJkWeLJNL-cw?pwdb07n 提取码:b…

基于SIMULINK的动力电池CAN通信仿真教程

在真实的整车开发过程中,整车厂一般会先设计出整车网络架构,并依据此架构及ECU之间的功能交互设计网络总线数据库(Database), 作为重要的技术文档,可以根据需 要全部或部分地公开给各个ECU供应商。也存在一些特殊情况&…

【渗透测试】web端姿势-前端利用

目录 前端 存在问题 关于密码重置 jwt攻击 jwt介绍 工具使用 学习来源 前端 存在问题 任意用户注册 未授权访问,直接访问对应链接,可得到系统权限 可爆破用户名 爆破用户名,密码 用户名注入 万能密码 用户名Xss 修改返回包信息&#…

(三)计算机组成原理——总线

文章目录(三)计算机组成原理——总线总线的基本概念单总线双总线面向CPU以存储器为中心总线的分类片内总线系统总线数据总线地址总线控制总线通信总线总线特性及性能指标总线特性机械特性电气特性功能特性时间特性性能指标总线标准总线结构单总线多总线双…

3.1 python高阶应用

文章目录闭包装饰器设计模式单例模式工厂模式多线程进程、线程和并行执行多线程编程网络编程服务端开发客户端开发正则表达式基础匹配元字符匹配递归闭包 def account_create(inital_account 0) :def atm(num:int,deposite:bool True) :# 声明inital_account是外部声明的init…

【Ajax】服务器的基本概念

一、客户端与服务器上网的目的通过互联网的形式来获取和消费资源。2. 服务器上网过程中,负责存放和对外提供资源的电脑,叫做服务器。3. 客户端上网过程中,负责获取和消费资源的电脑,叫做客户端。二、URL地址URL地址的概念URL&…

工业互联网2022:第一梯队成型、专精玩家突围

文|智能相对论作者|沈浪回顾2022年,市场依旧对工业互联网领域保持着高度的热情与专注。近期,IDC、Gartner等各大国际研究机构接连发布多份工业互联网相关报告,包括《2022年度中国工业互联网平台企业侧市场分析报告》《2022年度工业互联网平台…

唯一杰出级!百度智能云曦灵获信通院权威认证

​中国信通院公布“数字人系统评测结果” 百度智能云曦灵平台 继首批通过48项基础能力评测后 在第二轮性能分级评测中 以超高分获得行业唯一“杰出级”证书 代表了当前数字人的最高标准 该评测标准依托国际电信联盟(ITU)、中国通信标准化协会&#xff08…

JNPF低代码开发平台 全新版本 使用讨论 多用户商城系统源码 框架源码部署文档

JNPF快速开发平台是一套成熟的快速开发框架, JNPF作为承重墙,强大支撑保障,提供所有操作系统的生长土壤,JNPF快速开发平台采用前后端分离技术、采用B/S架构开发,形成一站式开发多端(APPPC)使用&…

【手写 Vue2.x 源码】第二十九篇 - diff算法-节点比对

一,前言 上篇,diff 算法问题分析与 patch 方法改造,主要涉及以下几点: 初始化与更新流程分析;问题分析与优化思路;新老虚拟节点比对模拟;patch 方法改造; 下篇,diff 算…

Mysql的锁问题:

Mysql的锁问题: 1.1锁的概述: ​ Mysql锁的机制比较简单,不同的存储引擎支持不同的锁机制:MyISAM和MEMORY存储引擎支持表级锁;DBD支持页面锁,但是它也支持表级锁;InnoDB既支持行级锁也支持表级…

23-1-18 文件上传

步骤 file01 / file02 分别是两台java服务 功能: 主要负责接收用户上传的文件存储在指定目录 并记录(上传时间、上传人、文件信息(大小,源文件名,存储后的文件名 ....) 文件权限(共享、私有))。负责接收处理用户的下载请求,用户可以根据文件…

【开发Log】C++QT连连看

1.10开发的初衷是闲来无事开了把宠物连连看,然后发现打了几遍第一关都过不去,于是想自己写个,这样就可以任意使用提示次数了(bushi。其实今天正好是老妈生日,问了下老妈她竟然还玩连连看,还ak了orz。于是乎…

分布式理论

目录 1.定义 2.关键技术 3.关键问题 4.基本定理 4.1.CAP定理 4.2.BASE定理 1.定义 分布式的本质是一系列计算机集群通过网络共同完成一串连贯的任务。 2.关键技术 分布式主要关注的几个关键点技术是: 性能容错通信 性能: 可扩展性&#xff0c…