JavaWeb:Web 的基本概念、Tomcat 服务器、Http 详解、Maven 的下载安装步骤、模仿一个 Servlet

文章目录

  • JavaWeb - 01
  • 一、基本概念
    • 1、静态 Web
    • 2、动态 Web
    • 3、Web 应用程序
    • 4、三个技术
  • 二、Web 服务器
  • 三、Tomcat 详解
  • 四、发布一个 Web 网站
  • 五、Http 详解
    • 1. Http 请求
      • (1)请求行
      • (2)消息头
    • 2. Http 响应
      • (1)响应头
      • (2)响应体
  • 六、Maven
    • 1. 下载、安装、配置
    • 2. 在 IDEA 中使用 Maven
    • 3. 补充
    • 4. 在 IDEA 中配置 Tomcat
    • 5. 分析
  • 七、模仿 HelloServlet
  • 注意:

JavaWeb - 01

一、基本概念

Web(网页)开发:静态 Web、动态 Web。

1、静态 Web

html、css:提供给所有人看的数据不会发生变化

*.html/htm 是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取

静态 Web 存在的缺点

  • Web 页面无法动态更新,所有用户看到的都是同一个页面;
  • 无法与数据库交互,数据无法持久化,用户之间无法交互。

2、动态 Web

技术栈:Servlet、JSP、ASP、PHP

在 Java 中,动态 Web 资源开发的技术统称为 JavaWeb

动态 Web 中,页面会动态展示,展示的效果因人而异。

注意:若加入服务器的动态 Web 资源出现了错误,我们需要重新编写我们的后台程序,并重新发布(停机维护)。

动态 Web 优点

  • Web 页面可以动态更新,所有用户看到的不是同一个页面;
  • 可以与数据库交互,数据持久化(注册、商品信息、用户信息)。

3、Web 应用程序

Web 应用程序:可以提供浏览器访问的程序。Web 应用程序不能直接启动或被外界直接访问,需要依赖于 Tomcat 服务器统一管理。

  • a.html、b.html 等多个 Web 资源都可以被外界访问,对外界提供服务;
  • 能访问到的任何一个界面或者资源,存在于计算机上;
  • 统一的 Web 资源会被放在同一文件夹下,即 Web 应用程序;
  • 一个 Web 应用由多部分组成,如 html、css、js、jsp、servlet、Java 程序、jar 包、配置文件(Properties)等。

4、三个技术

  • ASP:用 C# 语言,属于微软的,是在 HTML 中嵌入了 VB 的脚本。在 ASP 开发中,基本一个页面都有几千行的业务代码,页面混乱,维护成本高。
  • PHP:开发速度快,功能强大,跨平台,代码简单。但是无法承载大访问量的情况(局限性)。
  • JSP/Servlet:是 Sun 公司主推的 B/S 架构(浏览器和服务器),基于 Java 语言,可以承载三高问题(高并发、高可用、高性能)带来的影响,语法像 ASP。

二、Web 服务器

服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息,如 IIS、Tomcat 等。

  • IIS:微软的,Windows 中自带的;

  • Tomcat:Tomcat 是 Apache 软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。由于有了 Sun 的参与和支持,最新的 Servlet 和 JSP 规范总是能在 Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受 Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的 Web 应用服务器

    Tomcat 服务器是一个免费开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。对于一个初学者来说,它是最佳选择。Tomcat 实际上运行 JSP 页面和 Servlet。Tomcat 最新版本为10.0.23(截止 2023.02.18)。


三、Tomcat 详解

官网:点此进入。

  1. 在官网下载对应版本

  1. 压缩包解压

  1. 启动、关闭 Tomcat

  1. 配置

  • 可以配置启动的端口号默认:Tomcat【8080】、mysql【3306】、http【80】、https【443】。
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
  • 可以配置主机的名称默认的主机名为:localhost;默认网站应用存放的位置为:webapps。
<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">

问题:网站是如何进行访问的?

  1. 输入一个域名,回车;

  2. 检查本机的 C:\Windows\System32\drivers\etc\hosts 配置文件中有没有这个域名映射,

    • :直接返回对应的 IP 地址,也就是,这个地址中,有我们需要访问的 Web 程序,可以直接访问;

    • 没有:去 DNS 服务器去找,找到的话就返回,没有就返回找不到。

四、发布一个 Web 网站

步骤:将自己写的网站放到服务器(Tomcat)中指定的 Web 应用的文件夹(webapps)下,就可以访问了。

网站应该有的结构:

-- webapps : Tomcat 服务器的 Web 目录
	-- ROOT
	-- Taiyang3285 : 网站的目录名
		-- WEB-INF
			-- web.xml : 网站配置文件
			-- lib : Web 应用所依赖的 jar 包
			-- Classes : java 程序
		-- index.jsp/index.html : 默认的首页
		-- static : 静态资源文件夹
			-- css
				-- style.css
			-- js
			-- img
		-- ... : 其他文件夹


五、Http 详解

Http (Hyper Text Transfer Protocol Protocol) 是超文本传输协议,是一个简单的请求-响应协议,它通常运行在 TCP 之上。

默认启动的端口号:Http【80】、Https【443】。

  • Http/1.0:客户端可以和 Web 服务器连接后,只能获得一个 Web 资源,断开连接;
  • Http/1.1:客户端可以和 Web 服务器连接后,可以获得多个 Web 资源。

1. Http 请求

客户端 – 发请求(Request) – 服务器

(1)请求行

请求方式有:GET、POST 等。

  • GET:请求能够携带的参数比较少,大小限制,在浏览器的 URL 地址栏显示数据内容,不安全,但高效
  • POST:请求能够携带的参数没有限制,不会在浏览器的 URL 地址栏显示数据内容,安全,但不高效

响应状态代码有:200、404 等。

  • 200:请求响应成功;
  • 3xx:请求重定向(重新到新位置);
  • 4xx/404:找不到资源;
  • 5xx/500:服务器代码错误。

(2)消息头

2. Http 响应

服务器 – 响应(Requence) – 客户端

(1)响应头

(2)响应体

和消息头差不多。

问题:在浏览器中的地址栏输入地址回车后,到页面能够展示回来,经历了什么?


六、Maven

Maven 是项目架构管理工具作用是:方便导入 jar 包。

Maven 核心思想约定大于配置(有约束,不要去违反)。

1. 下载、安装、配置

  1. 下载 Maven

官网:点此进入。

  1. 压缩包解压

  1. 配置环境变量
  • M2_HOME:Maven 目录下的 bin 目录;

  • MAVEN_HOME:Maven 的目录;

  • 在系统的 Path 中配置:%MAVEN_HOME%\bin

环境变量配置完成后,以管理员身份打开命令提示符,输入:mvn -version 可以看到 Maven 的版本,说明 Maven 配置成功

  1. 阿里云镜像

镜像(mirrors)作用:加速下载。

Maven\apache-maven-3.6.1\conf 路径下的 settings.xml 文件中找到 mirrors 进行配置。

<mirror>
   <id>alimaven</id> 
   <mirrorOf>central</mirrorOf>
   <name>aliyun maven</name> 
   <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

注意一定要在粘贴在 mirrors 下。

  1. 本地仓库
  • Maven\apache-maven-3.6.1 路径下新建一个文件夹 maven-repo(本地仓库)。

  • settings.xml 文件中加一行,即本地仓库的地址。

2. 在 IDEA 中使用 Maven

  1. 打开 IDEA,创建一个新项目 New Project,创建一个 MavenWeb 项目。

注意:如果第三步不勾选,就会创建一个普通的 Maven 项目。

  1. 设置:打开 File 中的 Settings... 看一下设置。

注意:经常在 IDEA 中出现一个问题,就是在项目自动创建完成后,这里的 Maven home directory 会使用 IDEA 默认的,即 Bundled (Maven 3),如果发现了,要手动改为本地的

3. 补充

创建一个普通的 Maven 项目,即不勾选模板。

在前面 Maven 模板的基础上加上 java 文件和 resources 文件,并标记文件夹功能

4. 在 IDEA 中配置 Tomcat

在这里插入图片描述

注意:出现警告的原因:访问一个网站,需要指定一个文件夹的名字。

5. 分析

注意

  • Maven 的高级之处在于,它会导入这个 jar 包所依赖的其他 jar 包,但需要联网
  • Maven 由于约定大于配置,所以之后可能遇到我们写的配置文件,无法导出或生效的问题,解决方案:在 build 中配置 resources,来防止资源导出失败的问题。


七、模仿 HelloServlet

初学时,向 webapps 中的 examples 学习

到 Maven 仓库官网中去寻找 jar 包,官网:点此进入

在这里插入图片描述


注意:

  1. 学习时,提取有效信息

  2. HTML 是超文本标记语言

  3. 项目的打包方式(后缀):Java【jar】、Javaweb【war】。

  4. Maven 仓库官网https://mvnrepository.com/

  5. 所有的 dependency 都要放在 pom 文件中的 dependencies 中。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Facebook 用户量十分庞大,为什么还使用 MySQL 数据库?

当谈到社交媒体巨头Facebook时&#xff0c;我们立刻想到的是其庞大的用户基础和每日海量的数据流。然而&#xff0c;您可能会惊讶地发现&#xff0c;尽管面对如此巨大的规模&#xff0c;Facebook 仍然选择使用 MySQL 数据库作为其核心的数据存储和管理系统。 为什么Facebook没…

一文讲透TCP/IP协议 | 图解+秒懂+史上最全

目录 &#x1f64b;‍♂️ TCP/IP协议详解 &#x1f64b;‍♂️ TCP/IP协议的分层模型 OSI模型的七层框架 TCP/IP协议与七层ISO模型的对应关系 &#xff08;一&#xff09;TCP/IP协议的应用层 &#xff08;二&#xff09;TCP/IP协议的传输层 &#xff08;三&#xff09;…

【计算机组成原理】第三章 多层次的存储器

系列文章目录 第一章 计算系统概论 第二章 运算方法和运算器 第三章 多层次的存储器 第四章 指令系统 第五章 中央处理器 第六章 总线系统 第七章 外围设备 第八章 输入输出系统 文章目录 系列文章目录前言第三章 多层次的存储器3.1 存储器概述3.1.1 存储器的分类3.1.2 存储器…

软件测试 - 缺陷管理

1. 缺陷的定义 产品不满足用户的需求或者测试执行时实际结果和预期结果不一致都属于缺陷。 2. 缺陷的判定标准及产生原因 软件不满足下述任何一种都算作是软件的缺陷&#xff0c;缺陷的概念是包括bug概念的。 未达到需求说明书指明的功能出现了需求说明书指明不应该出现的错…

Python+Selenium入门级自动化测试脚本编写

一、安装Selenium 安装selenium有三种方式&#xff0c;主要有python下的pip命令安装或者是直接下载安装包进行安装本地文件夹以及直接用pycharm直接安装相应的selenium版本。推荐使用pycharm直接配置安装相应selenium版本&#xff08;此办法比pip更好用&#xff0c;且不用担心报…

8分钟的面试,我直呼太变态了......

干了两年外包&#xff0c;本来想出来正儿八经找个互联网公司上班&#xff0c;没想到算法死在另一家厂子。 自从加入这家外包公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到11月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资…

【Linux】Job for network.service failed(网卡启动报错)

上图是Linux网卡启动报错的情况 这是由于cat/etc/sysconfig/network-scripts/ifcfg-xxx 中HWADDR的MAC地址和ifconfig中的MAC地址不一样&#xff0c;或者缺少cat/etc/sysconfig/network-scripts/ifcfg-xxx 中HWADDR的MAC地址 1.查看ifconfig中的MAC地址 图中00&#xff1a;0c…

Unity冷知识:读取用户输入应该写在Update还是FixedUpdate里?

Unity冷知识&#xff1a;读取用户输入应该写在Update还是FixedUpdate里&#xff1f; 版权声明&#xff1a; 本文为“优梦创客”原创文章&#xff0c;您可以自由转载&#xff0c;但必须加入完整的版权声明文章内容&#xff0c;不得删减、修改、演绎相关学习资源见文末 一些人…

谈谈几种分布式锁实现

大家好&#xff0c;我是易安&#xff01;今天我们呢谈一谈常见的分布式锁的几种实现方式。 什么是分布式锁 在JVM中&#xff0c;在多线程并发的情况下&#xff0c;我们可以使用同步锁或Lock锁&#xff0c;保证在同一时间内&#xff0c;只能有一个线程修改共享变量或执行代码块…

Java 基础进阶篇(十二)—— Stream 流常用方法总结

文章目录 一、Stream流概述二、获取Stream流2.1 集合获取 Stream 流2.2 数组获取 Stream 流 三、中间方法四、终结方法五、Stream流的综合应用六、收集Stream流 一、Stream流概述 Stream 流是在 Java8 中&#xff0c;得益于 Lambda 所带来的函数式编程&#xff0c; 引入了一个…

使用【SD-WEBUI】插件生成单张图包含多个人物:分区域的提示词

文章目录 &#xff08;零&#xff09;前言&#xff08;一&#xff09;潜变量成对&#xff08;Latent Couple&#xff09;&#xff08;1.1&#xff09;可自组LoRA&#xff08;Composable LoRA&#xff09; &#xff08;二&#xff09;分区扩散&#xff08;Multi Diffusion&#…

深入理解二分类和多分类CrossEntropy Loss和Focal Loss

深入理解二分类和多分类CrossEntropy Loss和Focal Loss 二分类交叉熵 在二分的情况下&#xff0c;模型最后需要预测的结果只有两种情况&#xff0c;对于每个类别我们的预测得到的概率为 p p p和 1 − p 1-p 1−p&#xff0c;此时表达式为&#xff08; 的 log ⁡ \log log底数…

Osek网络管理及ETAS实现

OSEK/VDX&#xff08;Offene Systeme und deren Schnittstellen fr die Elektronik in Kraftfahrzeugen / Vehicle Distributed eXecutive&#xff09;是一种用于嵌入式系统&#xff08;尤其是汽车电子控制单元&#xff09;的开放标准。它旨在提供一种统一、可互操作的软件架构…

Origin如何绘制三维图形?

文章目录 0.引言1.使用矩阵簿窗口2.三维数据转换3.三维绘图4.三维曲面图5.三维XYY图6.三维符号、条状、矢量图7.等高线图 0.引言 因科研等多场景需要&#xff0c;绘制专业的图表&#xff0c;笔者对Origin进行了学习&#xff0c;本文通过《Origin 2022科学绘图与数据》及其配套素…

三分钟教你如何定义自己的ChatGPT

三分钟教你如何定义自己的ChatGPT 成品预览材料准备MyChatGPT自定义AI 成品预览 材料准备 总共有两种方式&#xff1a; 一种是使用自己的OpenAI账号&#xff0c;这种方式是可控性比较强&#xff0c;同时也会有很多问题&#xff0c;比如你需要准备国外的手机号和Visa卡&#x…

Java 动态原理详解

Java 动态代理是一种非常重要的编程技术&#xff0c;它在很多场景下都有着广泛的应用。本文将介绍 Java 动态代理的实现原理&#xff0c;并附上相应的源码&#xff0c;以帮助读者更好地理解和应用这一技术。 一、什么是 Java 动态代理&#xff1f; Java 动态代理是一种在运行时…

在docker上安装运行Python文件

目录 一、在docker中安装python 1.1 输入镜像拉取命令 1.2 查看镜像 1.3 运行 1.4 查看是否成功 1.5 查看python版本 二、运行py文件 2.1准备运行所需文件 2.2 准备文件夹 2.3 大概是这幅模样 2.4 打包上传到服务器上 2.5 构建镜像示例 2.6 查看镜像 2.7 优化镜像的…

Spring MVC自定义拦截器--Spring MVC异常处理

目录 自定义拦截器 什么是拦截器 ● 说明 自定义拦截器执行流程分析图 ● 自定义拦截器执行流程说明 自定义拦截器应用实例 ● 应用实例需求 创建MyInterceptor01 创建FurnHandler类 在 springDispatcherServlet-servlet.xml 配置拦截器 第一种配置方式 第二种配置方…

【Linux】网络---->套接字编程(TCP)

套接字编程TCP TCP的编程流程TCP的接口TCP的代码&#xff08;单线程、多进程、多线程代码&#xff09;单线程多进程多线程 TCP的编程流程 TCP的编程流程&#xff1a;大致可以分为五个过程&#xff0c;分别是准备过程、连接建立过程、获取新连接过程、消息收发过程和断开过程。 …

《花雕学AI》ChatGPT 的 Prompt 用法,不是随便写就行的,这 13 种才是最有效的

ChatGPT 是一款基于 GPT-3 模型的人工智能写作工具&#xff0c;它可以根据用户的输入和要求&#xff0c;生成各种类型和风格的文本内容&#xff0c;比如文章、故事、诗歌、对话、摘要等。ChatGPT 的强大之处在于它可以灵活地适应不同的写作场景和目的&#xff0c;只要用户给出合…