4、JavaWeb-Maven-Http协议-Tomcat

发布于:2024-03-04 ⋅ 阅读:(52) ⋅ 点赞:(0)

P50 maven

Maven是一款用于管理和构建java项目的工具。

Maven:

  • 依赖管理:项目依赖资源jar包

  • 统一项目结构

  • 项目构建

基于Maven创建的项目目录结构:

  • src

    • main 实际项目资源

      • java java源代码目录

      • resources 配置文件目录

    • test 测试项目资源

      • java

      • resources

    • pom.xml 项目配置文件

P51 Maven-概述-介绍、安装

基于项目对象模型POM的概念,通过一小段描述信息来管理项目的构建(pom.xml)。

作用:

  • 方便的依赖管理

  • 统一的项目结构

  • 标准的项目构建流程

在这里插入图片描述

仓库:用于存储资源,管理各种jar包

  • 本地仓库:自己计算机上的一个目录

  • 中央仓库,由maven团队维护的全球唯一的

  • 远程仓库(私服):一般由公司团队搭建的私有仓库

添加依赖后,找到依赖的顺序:

  • 本地仓库→←中央仓库

  • 本地仓库→←私服→←中央仓库

安装:

  • 解压

  • 配置本地仓库,我的本地仓库D:\Lenovo\application\apache-maven-3.8.7\mvn_resp

  • 配置阿里云私服

  • 配置环境变量,将其bin目录加入到PATH换进变量

命令行中执行指令:mvn -v查看maven版本号

在这里插入图片描述

P52 Idea中集成maven及使用

如果创建空项目需要自己配置一些环境:

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

上述步骤简化:配置maven环境,全局

在这里插入图片描述

创建maven项目:

在上述空白项目中,点击新建新模块,选择常规模块,创建maven

在这里插入图片描述

项目中target文件夹就是编译后产生的字节码文件。

Maven坐标:

  • 坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置

  • 使用坐标定义项目或引入项目中需要的依赖

Maven坐标主要组成:

  • groupId:定义当前Maven项目隶属组织,域名反写

  • artifactId:定义 当前Maven项目名,通常是模块名

  • version:当前项目版本号

导入Maven项目:

  • 方式一,在maven面板中选择导入,选择对应项目中的pom.xml即可

  • 方式二,在项目结构中导入

删除模块选择Remove Module,磁盘中也要删除

P54 maven-依赖管理-依赖配置

P54 依赖配置

配置项目需要的多个依赖:

  <dependencies>
        <dependency>
            <groupId></groupId>
            <artifactId></artifactId>
        </dependency>
    </dependencies>

第一次使用,编写坐标信息没有提示怎么办?

可在仓库中进行搜索模块,参考usage使用频次,越高则较好,点击不同版本,进入可复制依赖。

P55 依赖传递

依赖具有传递性

直接依赖:在当前项目中通过依赖配置建立的依赖关系

间接依赖:被依赖的资源如果依赖其他资源,当前项目中间接依赖其他资源

例如:A项目依赖B项目,则

<dependency>
  <groupId>com.itheima</groupId>
  <artifactId>maven-projectB</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>

查看依赖情况,只需要打开pom文件,右键选择diagrams展示依赖。

如果依赖传递中想要排除依赖,则指主动断开依赖的资源,被排除的资源无需指定版本

例如:

<exclusions>
<exclusion>
  <groupId></groupId>
  <artifactId></artifactId>
</exclusion>
</exclusions>

P56 依赖范围

依赖的jar包,默认情况下可以在任何地方使用,

可通过<scope> </scope>设置作用范围

作用范围:

  • 主程序范围有效

  • 测试程序范围 有效

  • 是否参与打包运行

在这里插入图片描述

例如junit在单元测试时可以使用test的范围

P57 生命周期

Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一

Maven中有3套相互独立的生命周期:

  • clean:清理工作

  • default:核心工作,例如编译、测试、打包、安装、部署等

  • site:生成报告、发布站点等

每套生命周期包含一些阶段,阶段是有顺序的,后面的阶段依赖于前面的阶段

在这里插入图片描述

常用介绍:

  • clean:移除上一次构建生成的文件

  • compile:编译项目源代码

  • test:选择合适单元测试框架运行测试,junit

  • package:将编译后的文件打包,例如jar,war

  • install:安装项目到本地仓库

执行指定生命周期的两种方式:

  • maven面板中lifecycle有常见的生命周期阶段,双击即可

  • 在命令行中命令执行

在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行。

P58 Web入门-课程介绍

spring cloud构建微服务相关。

spring提供了若干个子项目,每个项目用于完成特定的功能。

spring framework较为基础的底层框架。

spring boot可帮助我们非常快速构建应用程序、简化开发、提高效率。

P59 Web入门-SpringbootWeb-快速入门

案例:

  • 创建工程,添加web开发相关依赖

  • 定义一个HelloController类,添加方法hello,并添加注解。

  • 运行测试

P60 Web入门-HTTP协议-概述

HTTP:hyper text transfer protocol超文本传输协议,规定了浏览器和服务器之间数据传输的规则

HTTP特点:

  • 基于TCP协议,面向连接、安全

  • 基于请求-响应模型的,一次请求对应一次响应

  • 是无状态的协议,对事务处理没有记忆能力,每次请求-响应都是独立的

    • 缺点:多次请求间不能共享数据

    • 优点:速度快

P61 Web入门-请求协议

请求数据格式分三个部分:

  • 请求行,即请求数据格式的第一行,分三部分,

    • 请求方式

    • 资源路径

    • 协议

  • 请求头:格式为key:value

    • 常见请求头代表的含义

    • Host:请求的主机名

    • User-Agent:浏览器的版本,告诉服务器浏览器的版本常用于兼容处理

    • Accept:浏览器能接收的资源类型

    • Accept-Language:浏览器的偏好语言

    • Accept-Encoding:浏览器可支持的压缩类型

    • Content-Type:请求主体的数据类型

    • Content-Length:请求主体的大小

  • 请求体:Post请求特有的,用于存放请求参数

回顾get请求和post请求,

  • get的请求参数在请求行中,请求大小有限制

  • post请求参数在请求体中,请求大小没有限制

P62 Web入门-响应协议

与请求协议类似

分为三部分:

  • 响应行:协议、状态码、描述

  • 响应头:key:value

  • 响应体,响应正文

请求响应状态码及常见响应头如下图所示:

在这里插入图片描述

常见的响应状态码:

状态码 英文描述 解释
200 OK 客户端请求成功,即处理成功,这是我们最想看到的状态码
302 Found 指示所请求的资源已移动到由Location响应头给定的 URL,浏览器会自动重新访问到这个页面
304 Not Modified 告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
403 Forbidden 服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源
404 Not Found 请求资源不存在,一般是URL输入有误,或者网站资源被删除了
405 Method Not Allowed 请求方式有误,比如应该用GET请求方式的资源,用了POST
428 Precondition Required 服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头
429 Too Many Requests 指示用户在给定时间内发送了太多请求(“限速”),配合 Retry-After(多长时间后可以请求)响应头一起使用
431 Request Header Fields Too Large 请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
500 Internal Server Error 服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧
503 Service Unavailable 服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好

状态码大全:https://cloud.tencent.com/developer/chapter/13553

P64 Web入门-协议解析

浏览器内置有解析协议的,

关注在服务端利用java接收浏览器的请求协议,解析,按照响应格式返回

手写一个服务端程序进行处理非常繁琐,代码量很多,很多都封装起来形成web服务器,例如:

  • jeetty

  • WebLogic

  • WebSphere

  • Apache Tomcat

P64 Web入门-Tomcat介绍

web服务器,是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让web开发更加便捷。

了解java的三大分支:

  • JavaSE:java标准版

  • JavaME:java小型版

  • JavaEE:java企业版

javaEE,指java企业级开发的技术规范总和,包含13项技术规范,JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF

Tomcat轻量级(支持少量的JavaEE规范)Web服务器,又称为Web容器、Servlet容器\

Servlet程序需要依赖Tomcat才能运行(支持Servlet的Web服务器)

P65 Web入门-Tomcat基本使用

安装tomcat,到官网依据java version,下载对应版本的tomcat,我下载的是10版本的。

zip包解压过后,得到如下目录:

  • bin,可执行文件

  • conf,配置文件

  • lib,依赖的jar包

  • logs,日志文件

  • temp,临时文件

  • webapps,应用发布目录

  • work工作目录

启动Tomcat:访问目录bin\startup.bat

如果出现中文乱码,则修改配置文件conf/logging.properties,将utf-8改为GBK

在这里插入图片描述

解决问题

在这里插入图片描述

关闭:

  • 直接关掉窗口

  • 或者访问bin\shutdown.bat

  • 正常关闭ctrl+C

修改Tomcat的端口号:在conf/server.xml中修改port

注意:HTTP协议默认端口是80,则localhost和localhost:80是一样的。

怎么往Tomcat部署应用程序:

将项目放置到webapps目录下即可

P66 Web入门-Tomcat入门程序

starter起步依赖

起步依赖,把开发某一个功能的依赖聚合在一起,

例如

  • spring-boot-starter-web,web开发常见的依赖

  • spring-boot-starter-test,单元测试所需的依赖

创建springboot工程,则会引入与父工程版本号对应的起步依赖,所以可以解释起步依赖没有版本号

可以看到spring-web中的依赖传递中有tomcat,所以运行项目就可启动tomcat,不用自己单独启动了。

本文含有隐藏内容,请 开通VIP 后查看