likes
comments
collection
share

javaweb【初识】

作者站长头像
站长
· 阅读数 13

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,这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取。通络; javaweb【初识】

  • 静态web存在的缺点

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

1.4、动态web

页面会动态展示:“Web的页面展示的效果因人而异” javaweb【初识】 缺点: - 加入服务器的动态web资源出现了错误,我们需要重新编写我们的**后台程序” javaweb【初识】

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官网 javaweb【初识】

3.2 tomcat的启动和配置

下载完成后解压,打开 javaweb【初识】 启动、关闭Tomcat javaweb【初识】 javaweb【初识】

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

提到的面试题

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

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
	-.....

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
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. 请求行
    • 请求行中请求方式:GET
    • 请求方式:Get、Post
      • get:请求能够携带的参数比较少,大小受限制,会在浏览器url地址栏显示数据内容,不安全,但高效
      • post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器RUL地址栏显示数据内容,安全,但不高效
  2. 消息头
Accept:告诉浏览器,他所支持的数据类型
Accept-Encoding: 支持哪种编码格式 GBK UTF-8 GB2312 
Accept-Language: 告诉浏览器,它的语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完成是断开还是保持连接
Host: 主机..../...

4.4 Http相应

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

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 让网页重新定位

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官网 javaweb【初识】 下载解压

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

5.3 配置环境变量

配置如下配置:

  • M2_HOME maven目录下的bin目录
  • MAVEN_HOME maven的目录
  • 在系统的pat中配置%MAVEN_HOME%\bin javaweb【初识】 javaweb【初识】 javaweb【初识】 测试Maven是否安装成功,保证必须配置完毕!

5.4 阿里云镜像

  • 镜像:mirrors
    • 作用:加速我们的下载
  • 国内建议使用阿里云的镜像 javaweb【初识】
<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>

javaweb【初识】

5.5 本地仓库

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

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

javaweb【初识】

5.6 在IDEA中使用Maven

  1. 启动IDEA
  2. 创建一个Maven项目 javaweb【初识】
  3. 创建Maven项目 javaweb【初识】 注意版本的差别:IDEA2021以下,使用maven3.6.3兼容 javaweb【初识】
  4. 等待创建完成,查看maven-repo文件夹 javaweb【初识】 javaweb【初识】

javaweb【初识】 javaweb【初识】

  • 至于这个报错:这个警告对使用maven命令创建项目没有任何影响。
  1. IDEA中Maven设置 注意:IDEA项目创建成功后,看一眼Maven的配置 javaweb【初识】

5.7 创建一个普通Maven项目

javaweb【初识】

javaweb【初识】 javaweb【初识】 javaweb【初识】 正在下载中,等了很长时间,最总发现:IDEA使用了默认的MAVEN配置下载插件 javaweb【初识】 javaweb【初识】

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

这个是web应用才有的配置 javaweb【初识】

添加java和resources文件夹

javaweb【初识】

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

javaweb【初识】

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

javaweb【初识】 javaweb【初识】

5.8 在IDEA中配置Tomcat

javaweb【初识】 javaweb【初识】 javaweb【初识】 javaweb【初识】 javaweb【初识】 解决警告问题: 【必须配置】为什么,我们访问一个网站,需要指定一个文件夹的名字 javaweb【初识】 javaweb【初识】 javaweb【初识】

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

5.9 点击运行,查看成果

javaweb【初识】 javaweb【初识】

5.10 pom文件

  • pom.xml是maven的核心配置文件
  • maven侧边栏的使用 javaweb【初识】
  • maven的高级之处在于,它会帮你导入这个jar包所依赖的其他jar包

5.11 以后可能遇到的问题

  • 由于maven约定大于配置,可能我们写的配置文件,会无法导出或生效
  • 解决方法: 参考代码的博客地址
  <build>
      <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>**/*.properties</exclude>
                <exclude>**/*.xml</exclude>
             </excludes>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>

可能的错误:duplicated Tag:"build"

Duplicated tag: 'build' (position: START_TAG seen ...<!--\u9879\u76ee\u6784\……

原因是:只能有一个build双目标签存在于pom.xml 解决方法:把resources目录下的标签通通放入到一个build双目标签中,删除多余的build标签。 javaweb【初识】

5.12 查看目录树【maven中jar包的联系关联】

  • 方法一:Maven侧边栏 javaweb【初识】
  • 方法二:命令行【较慢】
mvn dependency:tree

javaweb【初识】