Java Web学习(一)Web基础
文章更新时间:2020/07/24
一、基本概念
web资源
Internet上供外界访问的Web资源分为两种:
- 静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。
- 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。
PS:动态web资源开发时使用Java进行数据渲染的技术统称为Javaweb。
web应用
定义:多个web资源用于对外提供服务时,把它们放在一个目录中,这就组成一了个web应用(或web应用程序)
web类型
静态web
流程图:

缺点:
- Web页面中的内容无法动态更新。
- 无法连接数据库。
动态web
流程图:

C/S和B/S架构
C/S:客户端/服务器的架构;客户端高度依赖于服务器端,响应快,但是随之而来的服务端升级时,客户端也要同步更新,成本消耗大。
B/S:浏览器/服务器的架构;客户端与服务器端依赖小,但服务器端要考虑兼容性问题,对请求的处理压力主要在服务器端。
二、WEB服务器
定义:一种被动程序,可以向发出请求的浏览器提供文档,但只有浏览器发出请求时,服务器才会响应。

三、tomcat(web服务器)
PS:tomcat的安装与配置此处省略
PS:MyEclipse中是把外部的Tomcat关联到MyEclipse中,而Eclipse和IDEA是直接复制了一套Tomcat环境到编辑器中,实际项目不会发布到外部Tomcat的webapps目录下,而是在编辑器中运行的
结构

配置文件
路径:conf/server.xml
浏览器与服务器交互过程

如图,在浏览器的地址栏中输入URL地址"http://www.gacl.cn:8080/JavaWebDemo1/1.jsp"去访问服务器上的1.jsp这个web资源的过程中,浏览器和服务器做了以下几个操作:
- (本机找IP地址)浏览器根据主机名"www.gacl.cn"去操作系统的Hosts文件中查找主机名对应的IP地址。
- (DNS服务器找IP地址)浏览器如果在操作系统的Hosts文件中没有找到对应的IP地址,就去互联网上的DNS服务器上查找"www.gacl.cn"这台主机对应的IP地址。
- (根据IP地址连接web服务器)浏览器查找到"www.gacl.cn"这台主机对应的IP地址后,就使用IP地址连接到Web服务器。
- (使用HTTP协议发请求)浏览器连接到web服务器后,就使用http协议向服务器发送请求,发送请求的过程中,浏览器会向Web服务器以Stream(流)的形式传输数据,告诉Web服务器要访问服务器里面的哪个Web应用下的Web资源,如下图所示:
这就是浏览器向Web服务器发请求时向服务器传输的数据,解释一下"GET /JavaWebDemo1/1.jsp HTTP/1.1"这里面的内容,
- GET :告诉Web服务器,浏览器是以GET的方式向服务器发请求。
- /JavaWebDemo1/1.jsp :告诉Web服务器,浏览器要访问JavaWebDemo1应用里面的1.jsp这个Web资源。
- HTTP/1.1 :告诉Web服务器,浏览器是以HTTP协议请求的,使用的是1.1的版本。
- (等待web服务器响应)浏览器做完上面4步工作后,就开始等待,等待Web服务器把自己想要访问的1.jsp这个Web资源传输给它。
- (服务器解析浏览器请求并返回)服务器接收到浏览器传输的数据后,开始解析接收到的数据,服务器解析"GET /JavaWebDemo1/1.jsp HTTP/1.1"里面的内容时知道客户端浏览器要访问的是JavaWebDemo1应用里面的1.jsp这个Web资源,然后服务器就去读取1.jsp这个Web资源里面的内容,将读到的内容再以Stream(流)的形式传输给浏览器,如下图所示:
这个就是Web服务器传输给浏览器的数据。
- (浏览器渲染页面)浏览器拿到服务器传输给它的数据之后,就可以把数据展现给用户看了,如下图所示:
看到的这个"JavaWebDemo1"就是浏览器解析服务器发送回来的数据后的效果
运行
(1)先把需要运行的应用打成war包形式
命令:jar -cvf 名称.war 需要打包的文件
(2)tomcat中运行war包
把war包放到Tomcat服务器的webapps目录下,当Tomcat服务器启动时,就会自动将webapps目录下的war包解压。
PS:127.0.0.1又称为回送地址,表示本机,无论是否连接网络,均可访问。
PS:本机开发也经常使用localhost来代替127.0.0.1来访问,这是通过DNS来解析的结果。DNS配置(host文件)的地址:C:\Windows\System32\drivers\etc
参考资料:
- 孤傲苍狼(特此感谢!)
Java Web学习(一)Web基础的更多相关文章
- Java最新学习线路(基础,源码,项目,实战)
如需获取以下学习资源请关注公众号:Java编程指南 我们为自学者编程的或初学java的小伙伴们准备了一整套完整的学习资源和文章,还有我自己在自学路上的一些总结和学习线路,希望能帮到小伙伴们,如果有什么 ...
- java安全学习-环境准备/基础知识
补java的坑,开始! 1.Intellij一些快捷键 intell常用快捷键: ctrl+n 快速查找定位类的位置 ctrl+q 快速查看某个类的文档信息 shift + F6 快速类.变量重命名 ...
- Java开发学习(三)----Bean基础配置及其作用范围
一.bean基础配置 对于bean的基础配置如下 <bean id="" class=""/> 其中,bean标签的功能.使用方式以及id和clas ...
- 吴裕雄--天生自然 JAVA开发学习:Applet 基础
import java.applet.*; import java.awt.*; public class HelloWorldApplet extends Applet { public void ...
- Java Script 学习笔记 (一) 基础
1. 设置变量 const: 赋常量,不可更改. let :设置可更改变量. ES6 中推荐使用let 而不是var. Let 和var的区别 : let 将变量的作用域限定在当前{}中, var 定 ...
- Java Web 学习路线
实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ...
- Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问
本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ...
- Java Web学习系列——Maven Web项目中集成使用Spring
参考Java Web学习系列——创建基于Maven的Web项目一文,创建一个名为LockMIS的Maven Web项目. 添加依赖Jar包 推荐在http://mvnrepository.com/.h ...
- Java web 学习之旅
java web学习之旅 来公司十天了,感觉已经慢慢地融入了这个环境中,几个学长人都很好,都是在他们帮助下,我才能比较顺利的开始了学习java web的旅途. 来这里学习的第一个阶段是做一个简单的用户 ...
随机推荐
- 算法-图(2)Bellman-Ford算法求最短路径
template <class T,class E> void Bellman-Ford(Graph<T,E>&G, int v, E dist[], int path ...
- WordCount (Python)
Github项目地址:https://github.com/w1036933220/WordCount 一.解题思路 把项目需求理清楚,画一个思维导图 考虑各部分功能所需要的大概实现思路 然后完成了计 ...
- js实现树级递归,通过js生成tree树形菜单(递归算法)
方法封装: /** * 数据转换为树形(递归),示例:toTreeByRecursion(source, 'id', 'parentId', null, 'children') * @param {A ...
- C言语--冒泡排序
/* 冒泡排序,从小到大 */ include<stdio.h> int main(void) { int i; int t; int p; int val; int a[6]; for( ...
- 洛谷 P4343 [SHOI2015]自动刷题机
思路 二分答案 显然的二分答案,但是因为二分判定条件 \(\text{wa}\) 了好几遍-- 可以发现,\(n\) 越大,\(k\) 就越小,所以答案是有单调性的,因此可以用两个二分,一次求最大值, ...
- 如何解读 Java IO、NIO 中的同步阻塞与同步非阻塞?
原文链接:如何解读 Java IO.NIO 中的同步阻塞与同步非阻塞? 一.前言 最近刚读完一本书:<Netty.Zookeeper.Redis 并发实战>,个人觉得 Netty 部分是写 ...
- Codeforces 1337C Linova and Kingdom
题意 给你一颗有根树,你要选择\(k\)个点,最大化\(\sum_{i \in S} val_i\),其中\(S\)是被选点的集合,\(val_i\)等于节点\(i\)到根的路径上未被选择点的个数. ...
- 使用IDEA写Python之pytest环境搭建及第一个程序编写
一.准备篇 Python环境:3.8.3 开发工具:IDEA,对你没有看错 二.IDEA下安装开发环境 1. python的下载 https://www.python.org/downloads/ P ...
- C014:不用算术分割显示逆序三位数
程序: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int handred,ten,ge; do{ pri ...
- ES6语法笔记
迭代器 // log let arr = ['一', '二', '三'] let iter = arr[Symbol.iterator]() console.log(iter.next()) cons ...