JavaWeb01

0. JavaWeb框架介绍

JavaWeb整体框架如下图所示:

1. 基本概念

1.1 web开发介绍

web开发分为:①静态web开发,②动态web开发。

  1. 静态web开发:
  • 其特征是对所有用户而言,网页内容是一样的。内容不会因人而异。
  • 常见的静态web开发语言:html,css。
  1. 动态web开发:
  • 提供给不同用户不同的数据。换而言之,网页内容随着用户/时间/事件而变化。
  • 技术栈:servlet/JSP,ASP,PHP
  • 这是目前几乎所有网站的主流方式。
  • 在java中,动态web资源的开发技术统称为javaweb。

1.2 web应用程序

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

  • a.html、b.html ......等多个web资源,这些web资源可以被外界访问,对外界提供服务。
  • 能被访问到的任何一个页面或者资源,一定存在于世界上的某一台计算机内。
  • URL:Uniform Resource Locator,统一资源定位符。这是网站地址的唯一标识也是访问入口。
  • 统一的一套web资源会存放在同一个文件夹下,web应用程序--->Tomcat:服务器。
  • 一个web应用由多部份组成:
    ①html,css,js
    ②jsp,servlet
    ③java程序
    ④jar包
    ⑤配置文件(properties)
  • web程序编写完毕后,** 如果要提供给外界访问,则需要一个服务器进行统一管理。**

1.3 静态web

  • *.htm, *.html, 这些都是网页的后缀,如果服务器上一直存在这些东西,我们可以直接进行读取,联络通讯。
  • 静态web存在的缺点:
  1. web页面无法动态更新,所有的用户看到的都是同一个页面。
  2. 无法与数据库进行交互,即数据无法持久化,用户无法进行交互。
  • 静态web的工作流程图示意如下:

1.4 动态web

优点:

  • 动态web的页面会动态展示:web页面展示的效果因人而异。
  • 可以与数据库交互(数据持久化,注册,储存用户信息,商品信息等等)
    缺点:
  • 如果加入服务器的动态web资源出现了错误,我们需要重新编写后台程序,即停机维护。

动态web的工作流程图如下:

2. web服务器

2.1 技术讲解

  1. ASP语言:
  • 这是由微软开发的,是国内最早流行的服务器;
  • 在HTML中嵌入了VB脚本,即 ASP + COM;
  • 在ASP开发中,每一页都有几千行代码,页面及其混乱。
  • 有高昂的维护成本。
  • 是使用 C# 语言开发的
  • IIS开发:Internet Information Services, IIS 互联网信息服务,是微软提供的互联网基础服务。
  1. PHP语言
  • PHP的开发速度很快,功能很强大,支持跨平台,代码简单。目前有70%的网站是基于 WebPHP WP 开发的。
  • PHP无法承载大访问量的情况(局限性)。

3. JSP/Servlet:
B/S架构:浏览器和服务器。
C/S架构:客户端和服务器。

  • JSP/Servlet是sun公司主推的 B/S 架构。
  • 这是基于java语言的。所有的大公司或者一些开源组件都是由java开发的。
  • 可以承载三高问题带来的影响。(三高:高并发、高可用、高性能)
  • 语法与ASP高度类似。

2.2 Web服务器种类

服务器是一种被动的操作,是用来处理用户的一些请求并返回给用户一些响应信息。

(1)IIS服务器
此为微软开发的服务器:由ASP环境开发,是windows中自带的。

(2)Tomcat

Tomcat是由Apache 软件基金会(Apache Software Foundation)开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。
因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。
实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。
另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。
不过,Tomcat处理静态HTML的能力不如Apache服务器。

3. Tomcat

3.1 Tomcat基本信息

Tomcat文件夹内容介绍:

  • bin文件目录下进行启动和关闭:①startup.bat为启动文件,②shutdown.bat为关闭文件。
  • conf文件下:server.xml为核心配置文件
  • Webapps存放着写好的网站,内部一个文件夹即代表一个网站。有五个默认的初始网站。

3.2 Tomcat相关配置

以下修改均在核心配置文件"server.xml"中进行。

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

(*)一道高难度面试题:
请你谈谈网站是如何进行访问的?
网站访问的流程:

  1. 输入一个域名:回车
  2. 检查本机的 C:\Windows\System32\drivers\etc\hosts 配置文件下有没有这个域名映射。
    1. 有:则直接返回对应的ip地址,在这个地址中,有我们需要访问的web程序,可以直接访问。

    127.0.0.1 www.zfy.com

    1. 没有:则去DNS服务器寻找,能找到即返回,找不到则报错。(DNS: 全球域名的存放地)
  3. 流程图示意如下:

DNS介绍:
域名系统(Domain Name System,DNS),因特网上作为域名和IP地址互相映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
通过主机名,最终得到该主机对应的IP地址的过程叫做域名解析(或主机名解析)。
DNS协议运行在UDP协议之上,使用端口号53。

3.3 发布一个web网站

  1. 将自己写的若干网页文件放到服务器(Tomcat)中指定的web应用的文件下(webapps),既从tomcat中访问。
  2. 一个网页应该有的基本结构/文件如下:
    • 文件夹名称:网站的目录命
    • WEB-INF文件夹: 存放网站程序
      • -Classes文件:java程序
      • -lib: web应用所依赖的jar包,(jar包往往都存在lib目录下,即 库 )
    • index.html: 默认的首页文件
    • static:静态资源存放处
      • -css:css资源
      • -js:js资源
      • -img:图像资源
      • ...
    • ......

3.4 IDEA中配置Tomcat

配置流程如下所示:

  1. 右上角选择"Add Configuration",“+” 号添加tomcat,local
  2. 进入基本的配置页面,并做如下配置:
  3. 检查tomcat默认地址是否正确:
  4. 上一步警告出现的原因是:访问一个网站,必须指定一个文件夹的名字。
    现在解决此问题:进入deployment界面创建一个artiface:
  5. 设置访问路径
  6. 启动Tomcat:
  7. 显示连接成功,并跳转页面:
  8. 跳转页面实质为,访问该项目的网页文件:

4. Http

4.1 什么是HTTP

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

  • 文本:html;字符串;...
  • 超文本(Hyper Text,HT ):超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。
  • HTTP的默认端口号为 80
  • HTTPS:安全的 HTTP,其端口号为:443

4.2 两个时代

  1. http1.0:
    客户与web连接后,只能获得一个web资源,并断开连接。
  2. http2.0:
    客户端与web服务器相连后,可以获得多个web资源。

4.3 http请求

http网页请求流程如下:客户端 ---> 发送请求 ---> 服务器

以百度为例进行关键参数说明:

Request URL:https://www.baidu.com/  -- 请求地址
Request Method:GET  -- 使用 get 方法进行请求
Status Code:200 OK  -- 状态码:200
Remote Address:14.215.177.39.443  -- 远程地址
  1. 请求行:

    • 请求行中一般的请求方式:GRT
    • 存在可选的请求方式:Get,Post, HEAD,DELETE,PUT,TRACT...
      • get:请求能够携带的参数较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效。
      • post:请求能够携带的参数没有限制,大小也没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。
  2. 消息头

Accept: 告诉浏览器,它所支持的数据类型。
Accept-Encoding:支持哪种编码格式 GBK    UTF-8    GB2312    IS08859-1
Accept-Language: 告诉浏览器,它的语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完成是断开还是保持连接?
HOST: 主机

4.4 http响应

http网页响应流程如下:服务器 ---> 响应 ---> 客户端

形参属性如下,以百度网页为例:

Cache-Control: prvivate  -- 缓存控制
Connection: Keep-Alive -- 连接控制
Content-Encoding: gzip  -- 编码
Contene-Type:text/html  -- 类型

(1) 响应体:

Accept: 告诉浏览器,它所支持的数据类型。
Accept-Encoding:支持哪种编码格式 GBK    UTF-8    GB2312    IS08859-1
Accept-Language: 告诉浏览器,它的语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完成是断开还是保持连接?
HOST: 主机
Refresh: 告诉客户端,多久刷新一次
Location:让网页重新定位

(2)响应状态码

  • 200:请求的响应成功
  • 3XX:请求重新定向,即重新到新给出的地址。
  • 4XX:找不到资源(404),即资源不存在。
  • 5XX:服务器代码错误(500),网关错误(502)

5. Maven

  • Javaweb的开发中,需要使用大量的jar包,Maven可以帮助自动导入和配置这些jar包。
  • Maven最大的特点就是,导入A包的同时,会将A包所依赖的B~F包一并导入。

5.1 maven的基本介绍

Maven的基本属性:

  • Maven是用于导入和管理jar包的。
  • Maven的核心思想:约定大于配置,即有约束不要去违反。
  • Maven会规定好你该如何去规范的编写java代码,这个规范不可逾越。

5.2 配置Maven环境变量

需要在系统/环境变量中做如下配置:

变量 地址
系统变量:M2_HOME maven文件夹下bin位置
系统变量:MAVEN_HOME maven文件夹位置
环境变量: path %MAVEN_HOME%\bin

相关环境变量配置后,在cmd窗口检验是否配置成功:
输入如下指令:mvn -version,成功则返回版本信息。如下图所示。

5.3 配置Maven配置文件

(1)配置下载镜像地址:

  1. 在配置文件setting.xml中找到标签对: ...

  2. 将如下代码段写入(注意,①一定不要配置已经失效的镜像,会导致导包问题,②可以配置多个镜像):

<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>

(2)配置maven本地仓库:
如果不配置maven本地仓库地址,则会自动生成在C盘。
配置流程如下:

  1. 配置文件setting.xml中找到标签对: ... ,其通常是被注释的状态。如图所示

  2. 写入如下代码,地址为你自己创建的maven本地仓库地址,文件夹以 repo结尾。

<localRepository>D:\B-Working\A-Software-work\Environment\apache-maven-3.8.2-bin\maven-repo</localRepository>```
  1. 配置成功后,maven仓库会转移至此,里面会根据项目导入jar包。

5.4 在IDEA中使用Maven

5.4.1 使用Maven模板创建项目

创建一个Maven项目:

  1. new一个project,操作界面如下:
  2. 命名相关配置:
  3. 修改Maven路径为当前路径:
  4. 点击finish进行创建
  5. 基于maven module初次创建工程时,会自动下载jar包。过程在run界面显示:
  6. 出现success代码,即工程创建成功:
  7. (可选)检查idea配置,setting中maven相关配置是否正常:
  8. maven的高级配置:选中自动导入源码选项。

使用此方式创建的Maven项目,会生成 Webapps 文件夹

5.4.2 创建简单的maven项目

  1. 创建页面不勾选任何选项,直接下一步:
  2. 命名相关配置:
  3. 创建成功如下:

5.4.3 IDEA标记文件夹

(1)鼠标右键,mark directory as,对文件夹进行标记,赋予其功能:

(2)项目结构中进行选择。赋予文件标记:

点击Module分块

5.4.4 pom.xml

pom.xml是maven的核心配置文件。
完整初始代码如下:

<?xml version="1.0" encoding="UTF-8"?>

<!--maven的版本和头文件-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

<!--  这里是之前配置的GAN -->
<!--  package项目的打包方式-->
<!--  jar: java应用-->
<!--  war:javaweb应用-->
  <groupId>com.zfy</groupId>
  <artifactId>JavaWeb01_maven</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>JavaWeb01_maven Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <!--相关配置-->
  <properties>
  <!--  项目默认的构建编码  -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <!--  编码java版本  -->
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <!--项目依赖-->
  <dependencies>
    <!--具体依赖的jar包-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <!-- 项目构建需要的东西,是由模板所创建的 -->
  <build>
    <finalName>JavaWeb01_maven</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

5.4.5 Maven导包机制dependencies

(一)机制介绍

  • Maven仓库是通过dependency机制进行jar包导入的。
  • dependency机制是通过配置文件pom.xml中的 标签对<dependency> ... </dependency> 具体代码由Maven在线仓库处获得。
  • Maven导包机制的厉害之处在于,在导入目标包A的同时,会将A的依赖包B~F一起导入。
    Maven导包的流程如下所示:
  1. 登录Maven在线仓库(https://mvnrepository.com/),搜索目标jar包:
  2. 点击jar包页面,选择目标版本:
  3. 复制Maven的dependency依赖代码:
  4. 将代码放入pom.xml文件<dependencies> ... </dependencies>标签对中。

(二)项目jar包结构树:
Maven仓库自带结构树生成按钮,如下所示:
从结构树中可以看出,我们只导入了“ spring boot”jar包,但它的相关依赖已经被一起导入。

posted @   青梧成林2022  阅读(86)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示