系统架构与Tomcat的安装和配置

2023.10.16

        今天是学习javaweb的第一天,主要学习了系统架构的相关知识和原理,下载了web服务器软件:Tomcat,并对其进行了配置。


系统架构

包括:C/S架构  和 B/S架构。

C/S架构:

        Client / Server(客户端 / 服务器),特点:需要安装特定的客户端软件

优点:

  •  速度快(软件中的数据大部分都是集成到客户端软件当中的,很少量的数据从服务器端传送过来,所以C/S结构的系统速度快)
  • 界面酷炫(有专门的语言实现界面,更加灵活)
  • 体验好(速度又快,界面又酷炫,当然体验好了)
  • 服务器压力小(因为大量的数据都是集成在客户端软件当中,所以服务器只需要传送很少的数据量)
  • 安全(大量的数据是集成在客户端软件当中的,并且客户端有很多个,服务器虽然只有一个,服务器如果出现不可抗力因素,问题也不大,因为大量的数据在多个客户端上有缓存,有存储,所以从这个方面来说,C/S结构的系统比较安全)

缺点:

  • 升级维护比较差劲(升级维护比较麻烦。成本比较高。每一个客户端软件都需要升级。有一些软件不是那么容易安装的)

B/S架构:

        B/S(Browser / Server,浏览器 / 服务器),实际上B/S结构的系统还是一个C/S,只不过这个C比较特殊,这个Client是一个固定不变的浏览器软件。

优点:

  •  升级维护方便,成本比较低。(只需要升级服务器端即可。)
  •  不需要安装特定的客户端软件,用户操作极其方便。只需要打开浏览器,输入网址即可。

缺点:

  • 速度较慢(因为所有的数据都是在服务器上,用户发送的每一个请求都是需要服务器响应数据,所以B/S结构的系统在网络中传送的数据量比较大。)
  • 体验差(界面不是那么酷炫,因为浏览器只支持三个语言HTML CSS JavaScript,再加上速度慢。)
  • 不安全(所有的数据都在服务器上,如果服务器发生不可抗力因素,最终数据全部丢失)

B/S结构的系统通信原理

WEB系统的通信原理:

  1. 用户输入网址(URL)
  2. 域名解析器进行域名解析,如:http://110.242.68.3:80/index.html
  3. 浏览器软件在网络中搜索110.242.68.3这一台主机,直到找到这台主机。
  4. 定位110.242.68.3这台主机上的服务器软件,即定位到80端口对应的服务器软件。
  5. 80端口对应的服务器软件得知浏览器想要的资源名是:index.html
  6. 服务器软件找到index.html文件,并且将index.html文件中的内容直接输出响应到浏览器上。
  7. 浏览器接收到来自服务器的代码(HTML CSS JS),并进行渲染,展示效果。

web服务器软件的下载与配置

关于WEB服务器软件:

WEB服务器软件有:

  • Tomcat(WEB服务器)

  • jetty(WEB服务器)

  • JBOSS(应用服务器)

  • WebLogic(应用服务器)

  • WebSphere(应用服务器)

应用服务器和WEB服务器的关系:

  • 应用服务器实现了JavaEE的所有规范。(JavaEE有13个不同的规范。)

  • WEB服务器只实现了JavaEE中的Servlet + JSP两个核心的规范。

  • 应用服务器是包含WEB服务器的。

Tomcat安装与配置:

        直接去官网下载Tomcat即可,我这里下载的是10.0.12版本。由于Tomcat是用java语言写的,想运行起来必须有java的运行环境。这里的配置步骤为:

  • 配置JAVA_HOME(JDK的根目录):我这里为:C:\Program Files\Java\jdk-21
  • 配置CATALINA_HOME:我这里为:E:\tomcat\apache-tomcat-10.0.12
  • 最后在path中添加以上两个目录的bin目录,如下图:

        最后在cmd控制台输入命令:startup,即可启动Tomcat服务器。然后在浏览器中输入网址:http://localhost:8080/ ,如果出现了以下页面,则说明服务器启动成功了。

        最后输入命令:shutdown.bat 退出服务器。

关于Tomcat服务器的目录

  • bin : 这个目录是Tomcat服务器的命令文件存放的目录,比如:启动Tomcat,关闭Tomcat等。

  • conf: 这个目录是Tomcat服务器的配置文件存放目录。(server.xml文件中可以配置端口号,默认Tomcat端口是8080)

  • lib :这个目录是Tomcat服务器的核心程序目录,因为Tomcat服务器是Java语言编写的,这里的jar包里面都是class文件。

  • logs: Tomcat服务器的日志目录,Tomcat服务器启动等信息都会在这个目录下生成日志文件。

  • temp:Tomcat服务器的临时目录。存储临时文件。

  • webapps:这个目录当中就是用来存放大量的webapp(web application:web应用)

  • work:这个目录是用来存放JSP文件翻译之后的java文件以及编译之后的class文件。

实现一个最基本的web应用

        接下来使用Tomcat服务器实现一个简单的web应用。

  • 第一步:找到CATALINA_HOME\webapps目录

    • 因为所有的webapp要放到webapps目录下。(这是Tomcat服务器的要求。如果不放到这里,Tomcat服务器找不到你的应用。)

  • 第二步:在CATALINA_HOME\webapps目录下新建一个子目录,起名:oa

    • 这个目录名oa就是你这个webapp的名字。

  • 第三步:在oa目录下新建资源文件,例如:index.html

    • 随便编写一点index.html文件的内容,如:

<!DOCTYPE html>
<html><head><title>index page</title></head><body><h1>I'm Michael Jay!</main></h1></body>
</html>
  • 第四步:启动Tomcat服务器

  • 第五步:打开浏览器,在浏览器地址栏上输入URL:http://localhost:8080/oa/index.html ,如果出现以下页面,则表示成功了。

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

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

相关文章

OJ项目——统一数据格式返回,我是如何处理的?

目录 前言 OJ项目中是如何处理的 1、准备一个类&#xff0c;作为统一的数据返回格式 2、准备一个类&#xff0c;实现ResponseBodyAdvice接口 3、我们如何写返回值更好 4、进一步优化返回值 小结 前言 关于SpringBoot的同一功能处理&#xff0c;本博主在这篇博客已经有介…

React + Router

React Router 这个只是专门讲解 React Router 新开的例子。 教程来源&#xff1a;https://reactrouter.com/en/main/start/tutorial 创建新项目 yarn create vite my-react-router-app --template react-ts cd my-react-router-app yarn安装 React Router 依赖: yarn add…

MatrixOne Logtail 设计解析

Logtail 是 CN&#xff08;Computation Node&#xff09;与 TN&#xff08;Transaction Node&#xff09;之间的一种日志同步协议&#xff0c;是 CN 和 TN 协同工作的基础。本文将介绍 logtail 协议的基本定位&#xff0c;协议内容和产生过程&#xff0c;也会提及一些遇到的挑战…

如何选择最适合你的LLM优化方法:全面微调、PEFT、提示工程和RAG对比分析

一、前言 自从ChatGPT问世以来&#xff0c;全球各地的企业都迫切希望利用大型语言模型&#xff08;LLMs&#xff09;来提升他们的产品和运营。虽然LLMs具有巨大的潜力&#xff0c;但存在一个问题&#xff1a;即使是最强大的预训练LLM也可能无法直接满足你的特定需求。其原因如…

微信小程序获取手机号(2023年10月 python版)[无需订阅]

技术栈&#xff1a; 1. 微信开发者工具中的调试基础库版本&#xff1a;3.1.2。 2. 后台&#xff1a;django。 步骤&#xff1a; 1. 首先在后台django项目的定时任务中增加一个下载access_token函数&#xff0c;并把得到的access_token保存在数据库中&#xff08;其实随便哪里…

INTELlij IDEA编辑VUE项目

菜单中选择setting–>Plugins 或者快捷键 ctrlalts 搜索vue&#xff0c;但有些情况会搜索不出来&#xff0c;先说搜索到的情况 如下图所示&#xff1a; 如果没有vue.js则说明过去已经安装了。 搜索到了后点击Install安装即可&#xff0c; 但即使搜索成功了&#xff0c;也不…

功夫猫小游戏

欢迎来到程序小院 功夫猫 玩法&#xff1a; 对准对方猫点击鼠标左键进行扑街&#xff0c;碰到敌方猫扑街X1&#xff0c;不要让对方猫碰到自己&#xff0c;统计扑街次数&#xff0c;快去玩功夫猫吧^^。开始游戏https://www.ormcc.com/play/gameStart/189 html <canvas id&q…

非技术背景项目经理如何发展?

非技术背景的项目经理在现代企业中扮演着重要的角色&#xff0c;他们负责协调和管理项目的各个方面&#xff0c;确保项目按时、按预算和按质量要求完成。对于没有技术背景的项目经理来说&#xff0c;他们需要通过一些特定的方法和策略来发展自己的职业生涯。 首先&#xff0c;…

Mac下通过nvm管理node

背景 本地有两个项目&#xff0c;老项目需要用到node 14&#xff0c;新项目需要用node 16&#xff0c;所以只能通过nvm来管理node了 卸载原始的node 我的node是通过官网的.pkg文件安装的&#xff0c;可以通过以下命令进行删除 sudo rm -rf /usr/local/{bin/{node,npm},lib/…

Python数据挖掘入门进阶与实用案例:自动售货机销售数据分析与应用

文章目录 写在前面01 案例背景02 分析目标03 分析过程04 数据预处理1. 清洗数据2.属性选择3.属性规约 05 销售数据可视化分析1.销售额和自动售货机数量的关系2.订单数量和自动售货机数量的关系3.畅销和滞销商品4.自动售货机的销售情况5.订单支付方式占比6.各消费时段的订单用户…

【LVS】lvs的四种模式的区别是什么?

LVS中的DR模式、NAT模式、TUN模式和FANT模式是四种不同的负载均衡模式&#xff0c;它们之间的主要区别在于数据包转发方式和网络地址转换。 DR模式&#xff08;Direct Routing&#xff09;&#xff1a;此模式通过改写请求报文的目标MAC地址&#xff0c;将请求发给真实服务器&a…

爬虫学习日记第七篇(爬取github搜索仓库接口,其实不算爬虫)

github提供的搜索仓库的API https://api.github.com/ # 连接数据库 db mysql.connector.connect(host"***",user"***",password"***",database"***" ) # 创建游标 cursor db.cursor() # 从数据库中读取CVE ID cursor.execute("…

day06-前后端项目上传到gitee、后端多方式登录接口、发送短信功能、发送短信封装、短信验证码接口、短信登录接口

1 前后端项目上传到gitee 2 后端多方式登录接口 2.1 序列化类 2.2 视图类 2.3 路由 3 发送短信功能 4 发送短信封装 4.0 目录结构 4.1 settings.py 4.2 sms.py 5 短信验证码接口 6 短信登录接口 6.1 视图类 6.2 序列化类 1 前后端项目上传到gitee # 我们看到好多开源项目…

2310如何维护旧代码

从编译原来的代码,12k错误,转为正常使用. 1,把原来的全局代码加上: 流冲 入; #include "小流函数.cpp"这是以前的全局函数,以前的错误写法,为此,继续加上. 2,然后编译过了,就是运行时出错. 打印("符",c);来定位出错位置. 3,为串与现有的为串冲突了,因此改…

通过循环生成多个echarts图表并实现自适应

不推荐使用grid布局&#xff0c;不清楚为什么左边一列的不会自适应&#xff0c;换成flex布局就可以了 主要方法借助中的getInstanceByDom方法 完整代码&#xff1a; <template><div class"statis"><div class"content" ><!-- v-for …

编辑器功能:用一个快捷键来【锁定】或【解开】Inspector面板

一、需求 我有一个脚本&#xff0c;上面暴露了许多参数&#xff0c;我要在场景中拖物体给它进行配置。 如果不锁定Inspector面板的话&#xff0c;每次点击物体后&#xff0c;Inspector的内容就是刚点击的物体的内容&#xff0c;而不是挂载脚本的参数面板。 二、 解决 &…

Vue项目使用svg之svg-sprite-loader详细使用

项目中为了体验好、性能优、资源丰富等原因经常会用svg这种矢量图&#xff0c;但是svg不能直接像image标签一样直接使用&#xff0c;这就需要前端的同学自己处理了。 svg有以下优点&#xff1a; svg放大不失真,png&#xff0c;jpg会出现失真现象svg的体积非常小&#xff0c;对…

子序列(All in All, UVa 10340)rust解法

输入两个字符串s和t&#xff0c;判断是否可以从t中删除0个或多个字符&#xff08;其他字符顺序不变&#xff09;&#xff0c;得到字符串s。例如&#xff0c;abcde可以得到bce&#xff0c;但无法得到dc。 解法 use std::io;fn main(){let mut buf String::new();io::stdin().…

冥想第九百四十八天

1.今天周二&#xff0c;昨天晚上休息的很好&#xff0c;精力充沛&#xff0c;因为明天要上日语课&#xff0c;所以今天又要跑步了。上次跑到最后的时候不想跑了。以往都是越跑越轻松。 2.项目上全力以赴的一天&#xff0c;感觉时间过的很快&#xff0c;叔叔发出了测量结果。有一…