在解决问题的时候,我们往往寻找的是最合适的方法,最效率的方式.

Java可以做很多东西,可以开发win系统的软件,可以开发单片机,也可以开发网站的后端,前端,可以做人工智能运算,可以做大数据处理等等.

这里教你的是应用最广的Java Web后端开发,包括浏览器网页的后端,手机应用的后端,电脑软件的后端,总之就是用户在各种机器,设备上看到的内容,资料,电影,图片,都是客户端从后端的服务器获取的.后端的服务器运行的程序提供这些接口给客户端调用.

电子设备访问服务器的过程

如下图所示,用户通过各种软件应用访问互联网,通过网络地址,域名链接等找到后端服务器的接口层总入口(API总网关),后端服务器中运行的各种服务层程序,将资源层的数据,文件,图片,视频等返回给用户.

普通程序员只需要开发服务层的服务.我们学的Java语言,所以就用Java开发.随着你的技能掌握的越多你能做的就越多.

也有些定位不同,有些人更关注硬件服务器,资源层的维护,有些人关注整体架构,有些人关注代码业务.

域名网址URL

URL是Uniform Resource Location的缩写,译为“统一资源定位符”。我们最常见的使用浏览器访问网站.

第一和第二部分是必须的.第三部分如果没有的话,默认就是网站地址的首页.

https和http的区别

首先https比http安全很多.现在很多网站默认都会从http跳转到https协议.比如:

http://github.com  #浏览器访问这个网址,总是会重定向到如下网址.
https://github.com

IP地址

IP地址就是你电脑或者服务器等设备在互联中的地址,类似于你的家庭地址一样,是唯一的,可以收快递的地址.现在有IPv4和IPv6两个版本.因为IPv4不够用了,所以它扩容了.我们平时开发用IPv4就够了.

计算机的世界是0,1组成的二进制表示.在硬件底层是二进制进行计算的.

IP地址(IPv4)由32位二进制数组成,分为4段(4个字节),每一段为8位二进制数(1个字节),每一段8位二进制,中间使用英文的标点符号“.”隔开.日常使用中为了便于记忆和识别,转换成十进制表示.

IP的范围是: 0255.0255.0255.0255

查看自己的IP: 13x.22x.8x.20x

你的IP和你的地区有关,这个和手机号码一样,可以区分是哪个国家哪个省份城市的.

域名

刚刚我们说到日常使用中用十进制表示IP地址,方便记忆.

同样的,在平时访问网站的时候,如果用IP,简直会逼疯人,就跟现实中,别人问你收快递的地址,你告诉他你家的经度和纬度.

比如我们访问淘宝网购物的时候,浏览器中显示的内容,都是访问域名,然后解析成IP,然后到那个IP的服务器获取图片,文字,各种商品内容.

打开命令行,输入:

ping www.taobao.com #该IP有时候是变换的,因为服务器可能会更换.

有些系统或工具会一直保持ping的状态,使用快捷键结束.(Ctrl/Command + c) (window用Ctrl,mac用Command键)

说明: ping命令用来验证和域名/IP之间的连接是否正常.我们看到那里有时间=12ms,16ms.这表明你从自己电脑到该IP来回花费的时间.

端口

上面淘宝网站的IP地址对应的服务器,就像售票大厅一样.它有很多个售票窗口,如果窗口关了,那你就得换个窗口买票.

网络服务器一般为http开放80端口,为https开放443端口,你可以去这个服务器的80,443端口获取网站内容.

http://www.taobao.com:80  #http默认是80端口,浏览器会不显示它
https://www.taobao.com:443  #https默认是443端口,浏览器会不显示它

端口一般用到的是1到65535,其中1-1023为系统端口,自己开发调试的时候用1024以上的.

域名和IP的替换

底层原理实现有些不同,导致ping域名有些请求超时.

而用域名直接替换IP有些不能访问.

http://218.98.30.235:80  #淘宝网站不能这样替换.
http://13.250.177.223:80 #github网站可以访问,并重定向.

网络访问的逻辑

当你访问网络上的资源,实际上做的过程大概是这样的:

  1. 你在家附近的网络里询问大家,知道www.taobao.com的IP是啥吗?知道的话,告诉我.
  2. 你的网络里有个负责查看这个域名的服务器叫做DNS(这是区级别的),它就从数据仓库里找,如果找到IP就告诉你,如果没有找到,就跑到更高级别的DNS服务器(城市级别的),如果有就返回,没有就跑到省级别的,一直到国际顶级DNS级别.最终返回IP
  3. 如果没有找到,就访问失败.如果找到,就去对应IP的端口请求数据.
  4. 这个过程中,你的请求中带有自己的IP,通过中间的路由到达目的地IP服务器.
  5. 目的地IP服务器,确认你的请求后,又通过中间的路由发送数据到你的IP电脑上.
  6. 路由就跟快递站点一样.先把你的快递发送到最近的快递站,然后发送到城市级别的快递总站,快递总站发货到目的地省份,城市的快递总站,然后再到目的地附近的快递站点,最后送到你家.

开发中常用的IP

测试自己开发的服务项目时,都是通过下面的ip+端口号访问的.

127.0.0.1 #回环地址,可以简单理解成访问自己的电脑
localhost #默认本地自己的电脑

一个最简单的Java Web项目

1.注册账号

注册一下https://github.com和https://gitee.com.一般大家开源的代码都在这里.你自己的代码也会放在这里.

公司的代码一般会自己搭建代码服务器.只是IP或者域名不同,代码管理逻辑都是通过git,都一样.

2.获取教程Github开源地址

扫码最下方小程序(或者搜索 “Java一浅一深” ), 点击复制github开源地址.

3.获取easy-java项目地址

3.1打开浏览器,输入/粘贴上一步复制的github开源地址

3.2选择easy-java项目

3.3点击Star,关注项目更新.

3.4点击Clone or download

3.5点击复制项目的链接

4.下载项目

打开git Bash/Terminal终端,输入:

cd ~/IdeaProjects/   #定位当前路径到IDEA开发工具的默认项目路径下
pwd   #查看当前路径,不同的操作系统,路径不同.下面要用.

下载GitHub的项目,输入:

 git clone https://github.com/XXX替换复制的路径XXX/easy-java.git  #这里git clone 后面的路径为刚刚复制的路径


以后github项目代码更新了,需要使用git pull命令.

cd ~/IdeaProjects/项目名称    #这里项目名称为easy-java
git pull   #从github上拉取最新的代码.

5.使用IDEA打开项目

打开IDEA软件.

5.1 点击File --> open…

5.2 找到项目的路径(该项目路径是你刚刚下载项目的地址,pwd查看。和我的不一样。)

5.3 选中pom.xml文件

5.4 OK

5.5 Open as Project

5.6 可能弹出下面对话框,选择’New Window’.

6.启动easy-java项目

6.1 等待几分钟,下载项目的依赖,插件等.

6.2 等待下载完成,依次点击包路径src->main->java->github->brad->easy->a004
右键WhatJavaCanDoApplication -> Run (所有程序的入口都是从Main开始的)

(如果报错: Error: java: 错误: 不支持发行版本5 , 请认真阅读之前的文章.)

6.3 如下图,启动了一个Java Web 程序,对外提供数据服务接口.

1).Java项目程序从操作系统申请了内存空间等各种资源,作为一个软件进程启动了. 对应的进程PID是每次启动动态生成的,在系统里是唯一的,就跟身份证号码一样.

  1. 同时申请了端口, 8080端口. 从外面访问这个服务进程的数据,需要通过端口.这个服务进程是由Tomcat应用服务器提供的,你可以理解成售票厅的售票员,你在窗口提出来的购票需求,都是售票员去进行协调查询给你反馈结果的.我们的应用服务器有好几种,常见的开源服务器软件还有Jetty,Nginx,Apache等.

3).启动这个Tomcat Web Server进程花费了3秒.其中JVM启动了接近4秒.

这里的Tomcat是Java代码开发的,需要依赖JVM来启动,所以在加载JVM虚拟机后,再加载Tomcat容器.

启动时间和你代码的启动的复杂程度有关.

7.What Java Can Do ?

打开浏览器,在浏览器中输入如下链接.请求得到服务器的响应,返回数据.一步一步操作感受下.

http://localhost:8080/title  #获取一篇文章的标题 --字符串类型(String)
http://localhost:8080/content  #获取一篇文章的内容 --字符串类型(String)
http://localhost:8080/time  #获取一个事情的时间日期 -- 日期类型
http://localhost:8080/int   # 获取当前天气的温度数据 -- 整型(int)
http://localhost:8080/string #获取用户的个人信息数据 --字符串类型(String)
http://localhost:8080/double #获取账户的余额 -- 双精度浮点数类型 (double),可以理解成是小数.
http://localhost:8080/boolean # 判断账户余额是否有钱买房?是还是否  -- 布尔类型(boolean)
http://localhost:8080/list # 获取银行排队的人数 -- 数组 (String[]),后面会解释.
http://localhost:8080/img # 获取一张图片的地址,并在浏览器中访问 -- url链接
http://localhost:8080/html #获取一个网页的地址,并在浏览器中访问 --url链接,网页有基本的功能.

对应的在IDEA的控制台打印出如下图的内容.真实开发就是比这些稍微复杂一点,多一些请求参数,多一点业务逻辑,多一些技术技巧等.

在控制台使用System.out.println打印这些内容,记录接口访问的记录.在线上的生产环境是用Log日志记录的.后面会讲.

打印这些内容,是为了分析统计,或者出现意外的时候进行排查错误.以后会讲.

该项目的技术用法这里暂时不用记,其它内容需要记忆,这些概念,比如进程PID,服务器容器Tomcat,端口号概念,URL请求接口,请求响应的概念等.


​ 扫码关注小程序,进群讨论提问,获取源代码.获得最新更新,关注下方公众号.

本文版权归作者所有,欢迎转载,但未经作者同意, 必须保留小程序和二维码,且在文章首行位置标注如下转载说明:

文章转载自 “原文链接URL”, 作者: 柳五苏世_Brad

004.麻雀虽小五脏俱全--最简单的JavaWeb相关推荐

  1. 用HTML做一个简单的web登录页面,简单的JavaWeb注册登录案例

    简单的JavaWeb注册登录案例 1.注册页面register.html register 姓名: 电话: 邮箱: qq: 2.注册案例实现程序register.java /** * 注册案例实现程序 ...

  2. 麻雀虽小五脏俱全的Vue拉勾项目,看看应该有帮助

    全栈系列Vue版拉勾,客官们来瞧瞧 模拟拉勾app系列---vue前端界面 github地址,来猛戳吧 前言 本项目是本人在闲暇时间编写的一个初级引导项目,麻雀虽小五脏俱全,所使用的东西绝大多数在开发 ...

  3. 简单的javaweb版kfc点餐收银系统

    简单的javaweb版kfc点餐收银系统,包含单例模式与工厂模式详解 说明:本次作业实现为简单的网页版,由 两人组队 共同完成. 基本需求: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使 ...

  4. 麻雀虽小五脏俱全的Vue拉勾项目,看看应该有帮助 1

    全栈系列Vue版拉勾,客官们来瞧瞧 模拟拉勾app系列-vue前端界面 github地址,来猛戳吧 前言 本项目是本人在闲暇时间编写的一个初级引导项目,麻雀虽小五脏俱全,所使用的东西绝大多数在开发中都 ...

  5. 使用Eclipse创建最简单的JavaWeb网页项目

    文章目录 JavaWeb项目前的环境配置 创建并运行第一个JavaWeb项目 JavaWeb项目前的环境配置 开始创建Javaweb项目前,首先需要: 1.下载Eclipse和Tomcat并将二者集成 ...

  6. 1)Java web项目配置(最简单的javaweb项目)

    Java web示例一 1.创建一个简单的Maven 项目 2.在webapp/WEB-INF下创建两个文件夹classes和lib,classes用来存放编译后输出的classes文件,lib用于存 ...

  7. 赤虹JSON模块 v1.0 麻雀虽小, 五脏俱全

    类模块公开方法 测试代码, 简洁易懂 输出结果 * "地球OL.国家成员数量" | 5 * "{"地球OL":{"国家":[&qu ...

  8. 编写一个简单的javaweb网上商城项目

    未经作者允许,禁止转载.转载请注明出处. 一.项目概览 这是一个简单的web项目,只用到servlet.jsp.jdbc.想要完整项目,见文章底部自动获取方式(很方便),码字不易,点个赞吧. 二.项目 ...

  9. ant 编译java 项目_使用ant编译打包、部署简单的javaweb项目 --01

    目录结构: D:\code\kongee\ant_web_hello λ tree /f 卷 软件 的文件夹 PATH 列表 卷序列号为 000D-CD8E D:. │ .classpath │ .p ...

  10. IDEA搭建一个简单的Javaweb项目(二)

    说明: IntelliJ IDEA 版本为2017.2.6 JDK 版本为1.9 tomcat 版本为apache-tomcat-9 mysql版本是MySQL_5_green(链接数据库的默认用户名 ...

最新文章

  1. 适用于任何数据可视化需求的国外10个最佳JavaScript图表库
  2. python之父去面试-前端两年月入30K,高频面试题整理(含答案)
  3. 新装WINDOWS XP系统 必须安装的十大高危漏洞补丁
  4. Scala中可以定义多个package
  5. halcon通过点拟合圆形,鼠标选点
  6. java基本特性_Java面试总结之Java基础
  7. pythonselenium上传图片视频_如何用selenium、python上传文件(图片)
  8. 18 PP配置-生产计划-检查 MRP 元素的文本
  9. 图合成与差分隐私(图结构和节点属性)论文笔记
  10. android apk 防止反编译技术加壳技术(转)
  11. 使用php函数判断数字,PHP 几个常用数字判断函数的简单示例
  12. 38. 后台模块开发(3)
  13. 数值分析(5)-分段低次插值和样条插值
  14. Atitit 模板引擎总结 目录 1. 模板引擎 1 2. 常见模板步骤 1 2.1. 1)定义模板字符串  1 2.2. 2)预编译模板  2 2.3. 渲染模板  2 3. 流程渲染 if el
  15. 100道初级网络工程师测试题
  16. 更深层次的了解计算机,想要对电脑拉力试验机有更深层次的了解,看这里
  17. 64位mysql下载百度云_MySQL下载与安装
  18. 项目管理(PM)简介
  19. 禅道服务器修改ip,访问禅道服务器的ip地址
  20. C#实现简单气泡屏保(二)

热门文章

  1. 省份和城市的数据(到县一级)
  2. Nginx入门以及开源博客Tale的部署
  3. 28.Scala提取器Extractor实战详解
  4. php中x22是什么意思,我想问一下:联想s22e和x22区别哪款好用点??真实反馈一下!!...
  5. Document/View/Frame三口组深入探讨
  6. 手把手教你处理单张百度热力图
  7. 初学python------写一个心理测试
  8. 初中计算机教学进度表,信息技术教学计划范文
  9. 尚学堂视频笔记五:IO流
  10. 已非昔日阿蒙!21世纪柴油发动机详解