当前位置: 首页 > news >正文

javaEE——Servlet

1.web开发概述

所谓web开发,指的是从网页中向后端程序发送请求,与后端程序进行交互

2.java后端开发环境搭建

 web后端(javaEE)程序需要运行在服务器中的,这样前端才可以访问得到

3.服务器是什么?

①服务器就是一款软件,可以向其发送请求,服务器会做出一个响应,可以在服务器中部署文件,让其他人访问

②也可以把运行服务器软件的计算机也可以称为服务器

4.Tomcat安装步骤

第一步: 安装服务器软件

官网地址: https://tomcat.apache.org/

第二步:安装JDK

需要配置两个环境变量


①path D:\work\Java\bin

 首先此电脑右键选择“属性”进入——点击“高级系统设置”

 点击“环境变量”

 在系统变量中选定Path路径,点击编辑

 

 点击新建,将自己安装的jdk里的bin的目录粘贴上去(以我的的目录为例: D:\work\Java\bin),点击确定,就OK啦!

②JAVA_HOME D:\work\Java

首先此电脑右键选择“属性”进入——点击“高级系统设置”

 点击“环境变量”

 在环境变量中,点击“新建”

 

 将自己安装的jdk中bin目录上一级的目录复制下来粘贴到变量值上(以我的的目录为例: D:\work\Java),变量名为JAVA_HOME,完成点击确定,就OK啦!

第三步:解压安装tomcat
   

在官网下载好tomcat安装包后进行解压,解压完成后在bin目录中找到startup.bat 文件,双击启动命令

 会弹出下面这样一个小黑框,打印出来很多日志,这样就说明服务器已经正常启动了

 访问方式:

①http://localhost:端口号
②http:127.0.0.1:端口号
③局域网ip:端口号

浏览器输入http:127.0.0.1:8080,就可以访问到这个服务器默认的管理程序了,如下图所示

注意!!!服务启动了以后,小黑框默认是不能关的,如果关了 ,就说明服务器关闭了


附:tomcat目录层次结构


5. 创建web后端项目

①创建javaweb项目

第一步:在IDEA中新建javaEE项目,自己设置一个名字,点击下一步

第二步: Version选择Java EE 8,Denpendencies中勾选Web Profile

第三步: 创建成功后,在pom.xml文件中找到junit依赖,选择后删除

第四步: 在文件目录中找到test删除

第五步: 在webapp目录下创建一个html文件,在body中随便写一句话用于测试,这样一个web后端项目就创建好了!

②发布web应用到服务器

需要发布web后端项目到tomcat中,在idea中集成tomcat(修改代码后,会自动将项目重新部署到tomcat中)

第一步:在顶部导航中,找到view—Appearance—Toolbar

第二步: 点击加号,在Add New Configuration 中找到Tomcat Server—Local

 

第三步:将HTTP  port修改为8088,JRE选择自己的JDK

​​​​​​

第四步:在Application server选择刚才解压的tomcat中bin目录上一级的地址 

第五步: 取消勾选After launch 

第六步:选择Deployment 把项目部署进来

点击加号,选择第一个Artifact

 选择dormServer:war,点击OK

 在下方的App;ication context中选定"_war"删除,最后点击OK

  

第七步:点击启动之后,在网站中输入127.0.0.1:8088/dormServer/index.html 进行访问(dormServer是项目名,index.html是刚才在webapp目录下创建一个html测试文件

 

出现我们刚才在html文件中输入的文字,这样就代表项目成功部署到了tomcat里啦!!!

6.Servlet概述

①概述

Servlet是 Server Applet 的简称,意思为用Java编写的服务器端的程序,它运行在 web服务器 中,web服务器 负责Servlet和客户的通信以及调用Servlet方法

②Servlet的作用

● 接收用户发送的请求数据
● 调用其他的java程序来处理请求
● 根据处理结果,将结果响应给客户端

● 创建javaEE程序

7.Servlet创建和使用

①web.xml文件

● Web.xml文件为web应用的配置文件,它必须 放在web应用目录WEB-INF目录下
● Web.xml文件用于对 web应用下的web资源进行配置 ,服务器在 启动时会读取web.xml文件中的内容

②步骤

● 创建一个类继承javax.servlet.http包下的HttpServlet 这个类就是一个javaEE程序,在web.xml文件配置,向外提供一个访问地址,就可以在浏览器中访问,找到对应javaEE程序)
● 在web.xml文件中配置Servlet( 把我们开发的servlet程序注册到服务器,由服务器启动时加载,在第一次访问时,由服务器创建对象)
● 运行Servlet程序
● 通过浏览器访问http:localhost:8080/ 项目名/配置的url

Servlet配置

<servlet>元素用于注册Servlet,它包含有两个主要的子元素:
<servlet-name> <servlet-class> ,分别用于设置Servlet的注册名称和Servlet的完整类名
②一个 <servlet-mapping> 元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素: <servlet-name><url-pattern> ,分别用于指定Servlet的注册名称和Servlet的对外访问路径

8.Servlet对象的生命周期

①创建:第一次访问Servlet程序时,由服务器创建

②初始化:在构造方法执行完成后,调用init()执行的一些初始化操作

③服务:每次请求调用service()

④销毁:服务器关闭时,会销毁servlet对象,并且在销毁servlet对象时,会自动调用destroy(),执行一些最终操作

9.http协议

什么是HTTP?

● 超文本传输协议 (HyperText Transfer Protocol)服务器传输超文本到本地浏览器的传送协议,是互联网上应用最为流行的一种网络协议,用于定义客户端浏览器和服务器之间交换数据的过程
● HTTP是一个基于TCP/IP通信协议来传递数据
● HTTP是一个属于应用层的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统

10.http请求

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个http请求

①请求包括什么?

请求行,请求头,请求体 
●  请求行包含http请求方式,请求资源名称,http版本
●  请求头包含主机地址,以及客户端的一些环境信息,以键值对的形式传递
Host: 127.0.0.1:8088 请求的主机地址
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
浏览器能够处理的内容类型
Accept-Encoding: gzip, deflate, br 浏览器能够处理的压缩编码
Accept-Language: zh-CN,zh;q=0.9 浏览器当前设置的语言
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/69.0.3497.100 Safari/537.36 使用的浏览器和操作平台信息
Connection: keep-alive 浏览器与服务器之间连接的类型
●  请求体代表着浏览器在post请求方式中传递给服务器的参数,请求体中参数以键值形式传递,多个用&链接,服务器接收到后再解析
    username=admin&userpwd=123

②GET方式

● 超链接访问,默认是GET方式
● f orm提交,不指定method,默认为GET方式

③POST方式

● for m提交,指定method=“POST”

④Get方式与post方式的区别

● Get方式主要是从服务器获取信息;post主要是想服务器提交信息
● Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在请求体中提交
● GET方式提交的数据大小受限制一般1kb(不同浏览器也会有不同);而POST则没有此限制

相关文章:

javaEE——Servlet

1.web开发概述 所谓web开发,指的是从网页中向后端程序发送请求,与后端程序进行交互 2.java后端开发环境搭建 web后端(javaEE)程序需要运行在服务器中的&#xff0c;这样前端才可以访问得到 3.服务器是什么&#xff1f; ①服务器就是一款软件&#xff0c;可以向其发送请求&#…...

Kotlin扩展函数(also apply run let)和with函数

also apply run let with的使用例子 private fun testOperator() {/*** also*/val person Person("ZhangSan", 18)person.also {// 通常仅仅打印使用, 也可以通过it修改it.name "ZhangSan1"println("also inner name: " it.name)}println(&qu…...

C语言笔记27 •单链表介绍•

1.链表的概念及结构 链表是⼀种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表 中的指针链接次序实现的。 2. 顺序表带来的问题 (1)中间/头部的插⼊删除&#xff0c;时间复杂度为O(N) (2)增容需要申请新空间&#xff0c;拷⻉数据&#xff…...

C++编程(五)单例模式 友元

文章目录 一、单例模式&#xff08;一&#xff09;概念&#xff08;二&#xff09;实现方式1. 饿汉式2. 懒汉式 二、友元&#xff08;一&#xff09;概念&#xff08;二&#xff09;友元函数1.概念2.语法格式3. 使用示例访问静态成员变量访问非静态成员变量 &#xff08;三&…...

012-GeoGebra基础篇-构造圆的切线

前边文章对于基础内容已经悉数覆盖了&#xff0c;这一篇我就不放具体的细节&#xff0c;若有需要可以复刻一下 目录 一、成品展示二、算式内容三、正确性检查五、文章最后 一、成品展示 二、算式内容 A(0,0) B(3,0) c: Circle(A,B) C(5,4) sSegment(A,C) DMidpoint(s) d: Circ…...

数据结构速成--查找

由于是速成专题&#xff0c;因此内容不会十分全面&#xff0c;只会涵盖考试重点&#xff0c;各学校课程要求不同 &#xff0c;大家可以按照考纲复习&#xff0c;不全面的内容&#xff0c;可以看一下小编主页数据结构初阶的内容&#xff0c;找到对应专题详细学习一下。 目录 …...

SpringMVC的基本使用

SpringMVC简介 SpringMVC是Spring提供的一套建立在Servlet基础上&#xff0c;基于MVC模式的web解决方案 SpringMVC核心组件 DispatcherServlet&#xff1a;前置控制器&#xff0c;来自客户端的所有请求都经由DispatcherServlet进行处理和分发Handler&#xff1a;处理器&…...

【PYG】Cora数据集分类任务计算损失,cross_entropy为什么不能直接替换成mse_loss

cross_entropy计算误差方式&#xff0c;输入向量z为[1,2,3]&#xff0c;预测y为[1]&#xff0c;选择数为2&#xff0c;计算出一大坨e的式子为3.405&#xff0c;再用-23.405计算得到1.405MSE计算误差方式&#xff0c;输入z为[1,2,3]&#xff0c;预测向量应该是[1,0,0]&#xff0…...

MyBatis-plus这么好用,不允许还有人不会

你好呀&#xff0c;我是 javapub. 做 Java 的同学都会用到的三件套&#xff0c;Spring、SpringMV、MyBatis。但是由于使用起来配置较多&#xff0c;依赖冲突频发。所有&#xff0c;各路大佬又在这上边做了包装&#xff0c;像我们常用的 SpringBoot、MyBatisPlus。 基于当前要…...

Linux驱动开发实战宝典:设备模型、模块编程、I2C/SPI/USB外设精讲

摘要: 本文将带你走进 Linux 驱动开发的世界,从设备驱动模型、内核模块开发基础开始,逐步深入 I2C、SPI、USB 等常用外设的驱动编写,结合实际案例,助你掌握 Linux 驱动开发技能。 关键词: Linux 驱动,设备驱动模型,内核模块,I2C,SPI,USB 一、Linux 设备驱动模型 Li…...

安全技术和防火墙

1、安全技术 1.1入侵检测系统 特点是不阻断网络访问&#xff0c;主要提供报警和事后监督。不主动介入&#xff0c;默默的看着你&#xff08;类似于监控&#xff09; 1.2入侵防御系统 透明模式工作&#xff0c; 数据包&#xff0c;网络监控&#xff0c;服务攻击&#xff0c;…...

Webpack: 开发 PWA、Node、Electron 应用

概述 毋庸置疑&#xff0c;对前端开发者而言&#xff0c;当下正是一个日升月恒的美好时代&#xff01;在久远的过去&#xff0c;Web 页面的开发技术链条非常原始而粗糙&#xff0c;那时候的 JavaScript 更多用来点缀 Web 页面交互而不是用来构建一个完整的应用。直到 2009年5月…...

python处理txt文件, 如果第一列和第二列的值在连续的行中重复,则只保留一行

处理txt文件, 如果第一列和第二列的值在连续的行中重复,则只保留一个实例,使用Python的内置函数来读取文件,并逐行检查和处理数据。 一个txt文件,里面的数据是893.554382324,-119.955825806,0.0299997832626,-0.133618548512,28.1155740884,112.876833236,46.7922,19.62582…...

C++17中引入了什么新的重要特性

C17是C标准的一个重要版本&#xff0c;它在语言核心和标准库中引入了许多新特性和改进&#xff0c;使得C编程更加现代化和高效。以下是C17中引入的一些重要新特性&#xff1a; 语言核心新特性 结构化绑定&#xff08;Structured Bindings&#xff09;&#xff1a; 结构化绑定…...

Andrej Karpathy提出未来计算机2.0构想: 完全由神经网络驱动!网友炸锅了

昨天凌晨&#xff0c;知名人工智能专家、OpenAI的联合创始人Andrej Karpathy提出了一个革命性的未来计算机的构想&#xff1a;完全由神经网络驱动的计算机&#xff0c;不再依赖传统的软件代码。 嗯&#xff0c;这是什么意思&#xff1f;全部原生LLM硬件设备的意思吗&#xff1f…...

用国内镜像安装docker 和 docker-compose (ubuntu)

替代方案&#xff0c;改用国内的镜像站(网易镜像&#xff09; 1.清除旧版本&#xff08;可选操作&#xff09; for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do apt-get remove $pkg; done 2.安装docker apt-get update 首先安装依赖 apt-g…...

Linux多线程【线程互斥】

文章目录 Linux线程互斥进程线程间的互斥相关背景概念互斥量mutex模拟抢票代码 互斥量的接口初始化互斥量销毁互斥量互斥量加锁和解锁改进模拟抢票代码&#xff08;加锁&#xff09;小结对锁封装 lockGuard.hpp 互斥量实现原理探究可重入VS线程安全概念常见的线程不安全的情况常…...

os实训课程模拟考试(大题复习)

目录 一、Linux操作系统 &#xff08;1&#xff09;第1关&#xff1a;Linux初体验 &#xff08;2&#xff09;第2关&#xff1a;Linux常用命令 &#xff08;3&#xff09;第3关&#xff1a;Linux 查询命令帮助语句 二、Linux之进程管理—&#xff08;重点&#xff09; &…...

QT/QML国际化:中英文界面切换显示(cmake方式使用)

目录 前言 实现步骤 1. 准备翻译文件 2. 翻译字符串 3.设置应用程序语言 cmake 构建方式 示例代码 总结 1. 使用 file(GLOB ...) 2. 引入其他资源文件 再次生成翻译文件 5. 手动更新和生成.qm文件 其他资源 前言 在当今全球化的软件开发环境中&#xff0c;应用程…...

设计模式在Java项目中的实际应用

设计模式在Java项目中的实际应用 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 引言 设计模式是软件开发中重要的思想工具&#xff0c;它提供了解决特定问题…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...