• javaweb【初识】


    JAVAWEB

    1 基础概念

    1.1 静态web和动态web简介

    • web开发:
      • web,网页的意思,www.baidu.com
      • 静态web
        • html,css
        • 提供给所有人看的数据始终不会发生变化!
    • 动态web
      • 淘宝,几乎是所有的网站
      • 提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同!
      • 技术栈:Servlet/SP,ASP,PHP
        在lava中,动态web资源开发的技术统称为lavaweb

    1.2web应用程序

    web应用程序:可以提供浏览器访问的程序。

    • a.html、b.html…多个web资源,这些web资源可以被外界访问,对外界提供服务;
    • 你们能访问到的任何一个页面或者资源都存在于这个世界的某一个角落的计算机上
    • URL
    • 这个统一的web资源会被放在同一个文件夹下,web应用程序–>Tomcat:服务器
      一个web应用由多部分组成(静态web,动态web)
      • html,css,is
      • jsp,servlet
      • Java程序
      • jar包
      • 配置文件(Properties)
        web应用程序编写完毕后,若想提供给外界访问:需要一个服务器来统一管理。

    1.3 静态web

    • .htm,.html,这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取。通络;
      在这里插入图片描述

    • 静态web存在的缺点

      • Web页面无法动态更新,所有用户看到都是同一个页面
      • 轮播图,点击特效:伪动态
      • Javascript[实际开发中,它用的最多]
      • VBScript
    • 它无法和数据库交互(数据无法持久化,用户无法交互)

    1.4、动态web

    页面会动态展示:“Web的页面展示的效果因人而异”
    在这里插入图片描述
    缺点:
    - 加入服务器的动态web资源出现了错误,我们需要重新编写我们的**后台程序”
    在这里插入图片描述

    2 web服务器

    2.1 web服务器开发脚本类型

    • ASP:
      • 微软:国内最早流行的就是ASP
      • 在HTML中嵌入了VB的脚本,ASP+COM;
      • 在ASP开发中,基本一个页面都有几干行的业务代码,页面极其换乱
      • 维护成本高!
      • C#
        php:
      • PHP开发速度很快,功能很强大,跨平台,代码很简单(70%,WP)
      • 无法承载大访问量的情况(局限性
        Jsp/servlet
      • B/S:浏览和服务器
      • C/S:客户端和服务器
      • sun公司主推的B/S架构
      • 基于Java语言的(所有的大公司,或者一些开源的组件,都是用lava写的)
      • 可以承载三高【高并发、高可用、高性能】问题带来的影响

    2.2 web服务器

    • 服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息:
      微软的:ASP…Windows中自带的
    • 面向百度编程
      • Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的lakarta项目中的一个核心项目,最新的Servlet和SP规范总是能在Tomcat中得到体现,因为Tomcat技术先进、性能稳定,而且免费,因而深受ava爱好者的喜爱并得到了部分软件开发商的认可,成为自前比较流行的Web应用服务器。
      • Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试ISP程序的首选。对于一个ava初学web的人来说,它是最佳的选择
    • Tomcat实际上运行SP页面和Servlet。

    3 Tomcat

    3.1 安装tomcat

    tomcat官网
    在这里插入图片描述

    3.2 tomcat的启动和配置

    下载完成后解压,打开
    在这里插入图片描述
    启动、关闭Tomcat
    在这里插入图片描述
    在这里插入图片描述

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

    提到的面试题

    • 请你谈谈网站是如何进行访问的?
    • 参考答案:
        1. 输入一个域名,回车
        1. 检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;
          1. 有:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问
          1. 没有:去DNS服务器找,找到的话就返回,找不到就返回找不到
            在这里插入图片描述
    • 交换机的本质就是去找域名

    3.4 发布一个web网站

    不会就先模仿

    • 将自己写的网站,放到服务器(Tomcat)中指定的web应用的文件夹(webapps)下,就可以访问了网站应该有的结构
    --webapps:Tomcat服务器的web日录
    -ROOT
    -kuangstudy:网站的目录名
    	- WEB-INF
    		- classes:java程序
    		-1ib:web应用所依赖的jar包
    		-web.xml:网站配置文件
    	-index.html默认的首页
    	-static
    	-CSS
    		-style.css
    	-js
    	-img
    	-.....
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    4 Http

    4.1 什么是HTTP

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

    • 文本:html,字符串,~
    • 超文本:图片,音乐,视频,定位,地图…
    • 80
      Https:安全的
    • 443

    4.2 两个时代

    • http1.0
      • oHTTP/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接
    • http2.0
      • HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源

    4.3 Http请求

    • 客户端–发请求(Requwst)–服务器
    • 以百度为例:
    Request URL: https://www.baidu.com/ 请求地址
    Request Method: GET get/post方法
    Status Code: 200 OK 状态码:200
    Remote(远程) Address: 14.215.177.38:443
    Referrer Policy: origin-when-cross-origin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    Accept:text/html...
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9 语言
    Cache-Control: max-age=0
    Connection: keep-alive
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 请求行
      • 请求行中请求方式:GET
      • 请求方式:Get、Post
        • get:请求能够携带的参数比较少,大小受限制,会在浏览器url地址栏显示数据内容,不安全,但高效
        • post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器RUL地址栏显示数据内容,安全,但不高效
    2. 消息头
    Accept:告诉浏览器,他所支持的数据类型
    Accept-Encoding: 支持哪种编码格式 GBK UTF-8 GB2312 
    Accept-Language: 告诉浏览器,它的语言环境
    Cache-Control: 缓存控制
    Connection: 告诉浏览器,请求完成是断开还是保持连接
    Host: 主机..../...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.4 Http相应

    • 服务器–响应–客户端
    Cache-Control: private  缓存控制
    Connection: keep-alive  连接
    Content-Encoding: gzip 编码
    Content-Type: text/html;charset=utf-8 类型
    
    • 1
    • 2
    • 3
    • 4

    4.4.1 响应体

    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 告诉浏览器,他所支持的数据类型
    Accept-Encoding: gzip, deflate, br 支持哪种编码格式
    Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 告诉浏览器,他的语言环境
    Cache-Control: max-age=0 缓存控制
    Connection: keep-alive 告诉浏览器,请求完成是断开还是保持可连接
    Host: www.baidu.com 让网页重新定位
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.4.2 响应状态码

    • 200:请求相应成功
    • 3xx:请求重定向
      • 重定向:重新到指定的位置去
    • 4xx:找不到资源
      • 资源不存在
    • 5xx:服务器代码错误
      • 502:网关错误

    常见面试题:

    当你的浏览器中地址栏输入地址回车的一瞬间到页面能够展示回来,经历了什么?

    1. (域名解析)在客户端,浏览器输入地址后,首先会在windows系统文件的hosts中查找是否有对应的ip地址,如果没有则需要向DNS域名解析服务器询问该域名对应的ip地址。
    2. (TCP三次握手)获取相应的ip地址后,客户端与服务器端建立TCP连接(三次握手),(网络层,数据链路层,物理层)
    • 三次握手:
      - 第一次握手:客户端向服务器端发送一个SYN段,该段中包含客户端的初始序列号。
      - 第二次握手:服务器端返回客户端SYN+ACK,该端中包含服务器端的初始序列号,ACK表示,已经确定收到客户端的SYN段。
      - 第三次握手:客户端向服务器端响应一个ACK端,ACK表示,已经确定接受到服务器端的SYN段。
    1. (建立起TCP连接后发起http请求)客户端向服务器端发送请求,包含请求行,请求头。主要的两种请求方式(GET与POST)
      - GET:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据的内容,不安全,但高效。
      - POST:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。
    2. (服务器响应http请求)服务器处理请求,并返回响应,包含状态码,响应头,响应体。
    3. (浏览器解析http代码)浏览器收到响应,解析http代码渲染页面,并在浏览器页面展示出来。
    4. (断开连接)http1.0短连接,http1.1长连接。

    Maven

    • 我为什么要学习这个技术?
      • 1.在lavaweb开发中,需要使用大量的iar包,我们手动去导入;
      • 2.如何能够让一个东西自动帮我导入和配置这个iar包
        由此,Maven诞生了!

    5.1 Maven项目架构管理工具

    我们目前用来就是方便导入iar包的!

    5.2 下载安装Maven

    maven官网
    在这里插入图片描述
    下载解压

    建议:所有的环境放在一个目录下。

    5.3 配置环境变量

    配置如下配置:

    • M2_HOME maven目录下的bin目录
    • MAVEN_HOME maven的目录
    • 在系统的pat中配置%MAVEN_HOME%\bin
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      测试Maven是否安装成功,保证必须配置完毕!

    5.4 阿里云镜像

    • 镜像:mirrors
      • 作用:加速我们的下载
    • 国内建议使用阿里云的镜像
      在这里插入图片描述
    <mirror>
          <id>nexus-aliyun</id>
          <mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
          <name>Nexus aliyun</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    5.5 本地仓库

    建立一个本地仓库:localRepository
    没有这个文件夹,提前创建。然后将地址粘到文件中

    <localRepository>C:\environment\apache-maven-3.8.6\maven-repo</localRepository>
    
    • 1

    在这里插入图片描述

    5.6 在IDEA中使用Maven

    1. 启动IDEA
    2. 创建一个Maven项目
      在这里插入图片描述
    3. 创建Maven项目
      在这里插入图片描述
      注意版本的差别:IDEA2021以下,使用maven3.6.3兼容
      在这里插入图片描述
    4. 等待创建完成,查看maven-repo文件夹
      在这里插入图片描述
      在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    • 至于这个报错:这个警告对使用maven命令创建项目没有任何影响。
    1. IDEA中Maven设置
      注意:IDEA项目创建成功后,看一眼Maven的配置
      在这里插入图片描述

    5.7 创建一个普通Maven项目

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    正在下载中,等了很长时间,最总发现:IDEA使用了默认的MAVEN配置下载插件
    在这里插入图片描述
    在这里插入图片描述

    对比我们使用模板创建的项目

    这个是web应用才有的配置
    在这里插入图片描述

    添加java和resources文件夹

    在这里插入图片描述

    但是我们发现在新建的文件右键时,没有新建class的选项

    在这里插入图片描述

    解决方法:标记文件夹功能

    在这里插入图片描述
    在这里插入图片描述

    5.8 在IDEA中配置Tomcat

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    解决警告问题:
    【必须配置】为什么,我们访问一个网站,需要指定一个文件夹的名字
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    • 最后点击确定就成功了。

    5.9 点击运行,查看成果

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    十大跑步运动耳机品牌排行榜,值得推荐的六款运动耳机
    webpack使用 三 优化环境配置
    CFA一级学习-CFA一级中文精讲(第三版)-第一章(1)
    VUE3学习小记(2)- ref 与 reactive
    SwiftUI CoreData 教程之如何加速搜索速度
    【图论】Dijkstra 算法求最短路 - 构建邻接矩阵(带权无向图)
    FastAdmin表格添加统计信息
    python音频转文字调用baidu
    加密技术1
    Spring 拦截器实现请求拦截与参数处理【拦截器(Interceptor)和过滤器(Filter)的区别】
  • 原文地址:https://blog.csdn.net/yang2330648064/article/details/125514776