Web后端开发概述环境搭建项目创建servlet生命周期
Web开发概述
web开发指的就是网页向后再让发送请求,与后端程序进行交互
web后端(javaEE)程序需要运行在服务器中
这样前端才可以对其进行进行访问
什么是服务器?
解释1:
服务器就是一款软件,可以向其发送请求,服务器会做出一个响应.可以在服务器中部署文件,让他人访问
解释2:
也可以把运行服务器软件的计算机也可以称为服务器
web交互流程图如下:

web服务器指的是驻留在因特网上某种类型计算机的程序
可以向浏览器等web客户端提供文档,也可以放置网站文件,让全世界哦浏览;它是一个容器,是一个链接用户与程序之间的中间件
web服务器有很多,流行的web服务器有Tomcat,WebSphere,WebLogic,Jboss
在小型的应用系统或者有特殊需求的系统重视,可以使用一个免费的Web服务器:Apache的Tomcat,该服务器支持全部JSP以及Servlet规范
APacha软件基金会(Apache Software Foundation)是专门为运作一个开源软件项目的Apache的团体提供支持的非盈利性组织
Web开发环境搭建
服务器软件安装
Tomcat
Tomcat是一个基于Java的HTTP服务器,它是Sun通过Java Community Process开发并用servlet和JavaServer Page(JSP)技术的正式参考实现。Tomcat的安装和配置都需要一定的步骤,但是在Eclipse集成环境下,可以更加方便地进行开发和调试
首先到官网下载tomcat安装包
Tomcat官方站点:http://tomcat.apache.org
安装JDK
配置环境变量
首先打开环境变量页面

新建一个JAVA_HOME系统变量

将JAVA_HOME的路径设置为bin的上一级路径
若是没配置过Path中的java\bin路径
则需要打开Path

将java的bin路径配置在其中

解压Tomcat压缩文件
Tomcat文件结构


在Tomcat文件中的bin目录中 双击startup.bat命令启动

出现这个页面就代表启动成功

访问
自己的ip地址 :8080

更改启动端口地址
打开conf文件夹

打开server.xml文件

找到该区域,将port改为想要的端口号

创建并发布web项目
在idea中集成Tomcat(修改代码后,会自动将项目重新部署到Tomcat中)
首先创建一个javaEE项目

勾选web profile选项 命名创建

创建完成后需要配置Tomcat
打开configurations页面,选择Tomcat中的local,在右边文件夹中选择Tomcat文件里bin的上一级,并对该配置进行改名,取消勾选After launch


创建完成后只需要点击绿色三角形就能启动

重写java中的方法
在java文件夹中创建包,在包中创建一个类继承HttpServlet

/*
创建一个类 继承HttpServlet ,这个类就是一个javaEE程序
在web.xml文件配置,想歪提供一个访问地址,就可以在浏览器中访问,找到对应的程序
*/
public class DemoServlet extends HttpServlet {/*
无参构造方法,默认是存在,初始化创建的对象
只被调用一次(始终只创建一个对象),在第一次访问servlet程序由服务器创建执行
*/public DemoServlet(){System.out.println("无参构造方法");}/*init()初始化,在构造方法执行完成后,立即被调用执行完成一些servlet程序的初始化(例如,读取配置文件中参数)也是只执行一次init方法在没有需要初始化操作时,可以不用重写,服务器会调用父类中的init方法*/@Overridepublic void init(ServletConfig config) throws ServletException {System.out.println("init");}/*service()用来接受前端请求,为前端提供服务每次前端发送的请求都会调用service(),多次调用HttpServletRequest rea: 表示请求对象,前端提交过来所有的数据都由服务器封装在此对象中HttpServletResponse resp : 表示相应对象,用来向前端相应数据*/@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("service");}/*destroy(),当服务器关闭的时候.如果程序想要最终执行某些操作,就可以在destroy方法中实现在没有最终执行的一一些操作时,也可以不用重写,但是服务器会调用父类中空的destroy方法*/@Overridepublic void destroy() {System.out.println("destory");}}
servlet对象的生命周期
servlet对象在第一次访问servlet程序时由服务器创建
初始化阶段:在构造方法执行完成后,调用init方法执行一些初始化操作
服务阶段:每一次请求调用service方法
销毁阶段:服务器关闭时,销毁servlet对象,并且在销毁对象时会自动调用destroy方法,执行一些最终操作
之后还需要在webapp中的WEB-INF文件夹里打开web.xml
配置servlet程序和访问地址

<!--.xml文件:ml结尾,是一种标记语言,设计的目的是用来在项目中存储配置信息的,制定好可以使用那些标签即可web.xml文件:存储web后端项目配置信息,在服务器启动时由服务器加载读取的--><!-- 配置servlet程序,把我们开发的servlet程序注册对服务器,有服务器启动时加载,在第一次访问时,由服务器创建对象--><servlet><servlet-name>demo</servlet-name>--> <!-- 定义对象名 --><servlet-class> com.ffyc.dormServer.web.DemoServlet</servlet-class> <!-- 注册servlet程序 --><init-param> <!-- 向servlet中配置一些参数 --><param-name>count</param-name><param-value>10</param-value></init-param></servlet><!--为servlet配置访问地址--><servlet-mapping><servlet-name>demo</servlet-name> <!-- 为指定name的servlet程序配置访问地址 --><url-pattern>/demo</url-pattern> <!-- 配置的供额外 --></servlet-mapping>
注意,在配置servlet访问地址时,url-pattern内部的地址前需要加/
配置完成后访问直接用
ip地址:端口/项目名/demo(访问地址)
此时打开控制台就会发现调用了之前重写的方法

相关文章:
Web后端开发概述环境搭建项目创建servlet生命周期
Web开发概述 web开发指的就是网页向后再让发送请求,与后端程序进行交互 web后端(javaEE)程序需要运行在服务器中 这样前端才可以对其进行进行访问 什么是服务器? 解释1: 服务器就是一款软件,可以向其发送请求,服务器会做出一个响应.可以在服务器中部署文件,让…...
Java 位运算详解
位运算是一种直接在二进制位上进行操作的方式。位运算符包括按位与 (&)、按位或 (|)、按位异或 (^)、按位非 (~)、左移 (<<)、右移 (>>) 和无符号右移 (>>>)。这些操作符用于操作整型数据类型,如 int 和 long。 一、按位与 (&) 按位…...
智能体实战:开发一个集成国内AI平台的GPTs,自媒体高效智能助手
文章目录 一,什么是GPTs二,开发GPTs1,目标2,开发2.1 打开 GPTS:https://chat.openai.com/gpts2.2 点击 Create 创建一个自己的智能体 2.3 配置GPTs2.4 配置外挂工具2.4.1 配置Authentication-授权2.4.1.1 生成语聚AI的…...
完美世界|单机版合集(共22个版本)
前言 我是研究单机的老罗,今天给大家带来的是完美世界的单机版合集,一共22个版本。本人亲自测试了一个版本,运行视频如下: 完美世界|单机版合集 先看所有的版本的文件,文件比较大,准备好空间,差…...
Jenkins的一些记录
设置环境变量 在 Jenkins 流水线中,取决于使用的是声明式还是脚本式流水线,设置环境变量的方法不同。 声明式流水线支持 environment 指令,而脚本式流水线的使用者必须使用 withEnv 步骤。 pipeline {agent anyenvironment { CC clang}stag…...
讲讲js中的prototype和__proto__
在Javascript中,prototype和__proto__是两个重要的概念,在对象的原型链中扮演重要的角色。 prototype prototype是js函数的内置属性,每个函数都有一个prototype属性,它是一个指针,指向一个对象(原型对象&a…...
JavaScript的学习之DOM的查询(一)
一、获得元素 通过document对象调用: getElementById():通过id属性获取一个元素节点对象getElementsByTagName():通过标签名获取一组元素节点对象getElementsByName():通过name属性来获取一组元素节点对象 核心学习代码 <scrip…...
充电宝哪个品牌比较好一点?多维度实测西圣、绿联、倍思充电宝!
在这个快节奏的时代,智能手机已成为我们日常生活不可或缺的一部分,而充电宝作为其能量补给站,重要性不言而喻。面对市场上琳琅满目的充电宝品牌与型号,如何挑选一款既实用又高效的充电伴侣,成为了许多消费者的难题。今…...
ubuntu安装QT
以QT5.15.14为例 下载地址:Index of /archive/qt 安装步骤: 解压qt-everywhere-src-5.15.14运行: cd qt-everywhere-src-5.15.14 mkdir build cd build ../configure -prefix /opt/qt5.15.14 -opensource -confirm-license make -j16 sudo…...
DataGrip 2024 po for Mac 数据库管理工具解
Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件(适合自己的M芯片版或Intel芯片版),将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功3、打开访达,点击【文…...
《C++ Primer》导学系列:第 13 章 - 拷贝控制
13.1 拷贝、赋值与析构函数 拷贝控制是C++中类设计的重要组成部分,用于管理对象的复制、赋值和销毁过程。理解并正确实现拷贝控制函数(拷贝构造函数、拷贝赋值运算符和析构函数)对于编写健壮和高效的C++程序至关重要。 13.1.1 拷贝构造函数 拷贝构造函数用于创建对象的副…...
c++ 图论2 深度优先算法和广度优先算法
修改一下深度优先算法和广度优先算法,标出每一个节点相对于遍历起始位置的层级,遍历起始起点为第一层,和第一层相连的节点为第二层,以此类推 定义一个新的结构 struct NodeWithLevel {TreeNode* node;int level;NodeWithLevel(T…...
【Qt】初识QtQt Creator
一.简述Qt 1.什么是Qt Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的,很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模式,开发者可以通过简单的拖拽和组合来实现…...
Android 11.0 修改系统显示大小导航栏消失
Android 11.0 修改系统显示大小导航栏消失 1.显示大小设置为大时,导航栏图标不显示。 设置为大,较大,最大时,导航栏图标不显示。 2.开始怀疑是导航栏被隐藏了,各种折腾无效。 3.发现: frameworks/base/pa…...
RocketMQ源码学习笔记:Producer启动流程
这是本人学习的总结,主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Overview1.1、创建MQClientInstance1.1.1、检查1.1.1、MQClientInstance的ID 1.2、MQClientInstance.start() 1、Overview 这是发送信息的代码样例, DefaultMQProducer produ…...
Node.js 和浏览器环境中都使用 WebSocket
使用WebSocket为什么不适配双端 浏览器环境本身就支持 WebSocket,直接使用 JavaScript 内置的 WebSocket 对象来建立连接。 Node中本身并没有内置 WebSocket 协议的支持,所以需要使用第三方库 ws来实现 WebSocket 功能。 一. 使用跨平台 WebSocket 库 …...
css美化滚动条样式
效果展示 实现 滚动条宽,高度 /* 整体滚动条 */ ::-webkit-scrollbar {width: 10px; }/* 滚动条轨道 */ ::-webkit-scrollbar-track {background-color: #ffffff;border-radius: 6px; }/* 滚动条滑块 */ ::-webkit-scrollbar-thumb {background-color: #888;borde…...
由浅入深,走进深度学习(补充篇:转置卷积和FCN)
本期内容是针对神经网络层结构的一个补充,主要内容是:转置卷积和全连接卷积网络 相关内容: 由浅入深,走进深度学习(2)_卷积层-CSDN博客 由浅入深,走进深度学习(补充篇:…...
Linux基础篇——目录结构
基本介绍 Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录"/",然后在根目录下再创建其他的目录 在Linux中,有一句经典的话:在Linux世界里,一切皆文件 Linux中根目录下的目录 具体的…...
星际编码:Swifter.Json,.NET宇宙中的数据处理新星
概述 在数字化的星辰大海中,数据是宇宙的通用语言。在.NET这一广袤的星系中,JSON作为信息交换的媒介,扮演着至关重要的角色。今天,我们要探索的是一颗新星——Swifter.Json,一个功能全面且性能卓越的JSON序列化和反序列…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
