当前位置: 首页 > news >正文

网站权限怎么设置方法网上营销推广

网站权限怎么设置方法,网上营销推广,pythonunicode转码,校园网站建设的意见与建议Maven 课程内容 初识Maven Maven概述 Maven模型介绍 Maven仓库介绍 Maven安装与配置 IDEA集成Maven 依赖管理 01. Maven课程介绍 1.1 课程安排 学习完前端Web开发技术后#xff0c;我们即将开始学习后端Web开发技术。做为一名Java开发工程师#xff0c;后端Web开发… Maven 课程内容 初识Maven Maven概述 Maven模型介绍 Maven仓库介绍 Maven安装与配置 IDEA集成Maven 依赖管理 01. Maven课程介绍 1.1 课程安排 学习完前端Web开发技术后我们即将开始学习后端Web开发技术。做为一名Java开发工程师后端Web开发技术是我们学习的重点。 后端Web开发技术的学习我们会先学习Java项目的构建工具Maven 1.2 初识Maven 1.2.1 什么是Maven Maven是Apache旗下的一个开源项目是一款用于管理和构建java项目的工具。 官网Welcome to Apache Maven – Maven Apache 软件基金会成立于1999年7月是目前世界上最大的最受欢迎的开源软件基金会也是一个专门为支持开源项目而生的非盈利性组织。 开源项目Welcome to The Apache Software Foundation 1.2.2 Maven的作用 使用Maven能够做什么呢 依赖管理 统一项目结构 项目构建 依赖管理 方便快捷的管理项目依赖的资源(jar包)避免版本冲突问题 当使用maven进行项目依赖(jar包)管理则很方便的可以解决这个问题。 我们只需要在maven项目的pom.xml文件中添加一段如下图所示的配置即可实现。 统一项目结构 : 提供标准、统一的项目结构 在项目开发中当你使用不同的开发工具 (如Eclipse、Idea)创建项目工程时 若我们创建的是一个maven工程是可以帮我们自动生成统一、标准的项目目录结构 具体的统一结构如下 目录说明 src/main/java: java源代码目录 src/main/resources: 配置文件信息 src/test/java: 测试代码 src/test/resources: 测试配置文件信息 项目构建 : maven提供了标准的、跨平台(Linux、Windows、MacOS) 的自动化项目构建方式 如上图所示我们开发了一套系统代码需要进行编译、测试、打包、发布这些操作如果需要反复进行就显得特别麻烦而Maven提供了一套简单的命令来完成项目构建。 综上所述可以得到一个结论Maven是一款管理和构建java项目的工具 02. Maven概述 2.1 Maven介绍 Apache Maven是一个项目管理和构建工具它基于项目对象模型(Project Object Model , 简称: POM)的概念通过一小段描述信息来管理项目的构建、报告和文档。 官网Welcome to Apache Maven – Maven Maven的作用 方便的依赖管理 统一的项目结构 标准的项目构建流程 2.2 Maven模型 项目对象模型 (Project Object Model) 依赖管理模型(Dependency) 构建生命周期/阶段(Build lifecycle phases) 1). 构建生命周期/阶段(Build lifecycle phases) 以上图中紫色框起来的部分就是用来完成标准化构建流程 。当我们需要编译Maven提供了一个编译插件供我们使用当我们需要打包Maven就提供了一个打包插件供我们使用等。 2). 项目对象模型 (Project Object Model) 以上图中紫色框起来的部分属于项目对象模型就是将我们自己的项目抽象成一个对象模型有自己专属的坐标如下图所示是一个Maven项目 坐标就是资源(jar包)的唯一标识通过坐标可以定位到所需资源(jar包)位置 3). 依赖管理模型(Dependency) 以上图中紫色框起来的部分属于依赖管理模型是使用坐标来描述当前项目依赖哪些第三方jar包 之前我们项目中需要jar包时直接就把jar包复制到项目下的lib目录而现在书写在pom.xml文件中的坐标又是怎么能找到所要的jar包文件的呢 答案Maven仓库 2.3 Maven仓库 仓库用于存储资源管理各种jar包 仓库的本质就是一个目录(文件夹)这个目录被用来存储开发中所有依赖(就是jar包)和插件 Maven仓库分为 本地仓库自己计算机上的一个目录(用来存储jar包) 中央仓库由Maven团队维护的全球唯一的。仓库地址Central Repository: 远程仓库(私服)一般由公司团队搭建的私有仓库 当项目中使用坐标引入对应依赖jar包后首先会查找本地仓库中是否有对应的jar包 如果有则在项目直接引用 如果没有则去中央仓库中下载对应的jar包到本地仓库 如果还可以搭建远程仓库(私服)将来jar包的查找顺序则变为 本地仓库 -- 远程仓库-- 中央仓库 2.4 Maven安装 Maven安装-CSDN博客 03. IDEA集成Maven 我们要想在IDEA中使用Maven进行项目构建就需要在IDEA中集成Maven 3.1 配置Maven环境 3.1.1 当前工程设置 1、选择 IDEA中 File Settings Build,Execution,Deployment Build Tools Maven 2、设置IDEA使用本地安装的Maven并修改配置文件及本地仓库路径 Maven home path 指定当前Maven的安装目录 User settings file 指定当前Maven的settings.xml配置文件的存放路径 Local repository 指定Maven的本地仓库的路径 (如果指定了settings.xml, 这个目录会自动读取出来, 可以不用手动指定) 3、配置工程的编译版本为11 Maven默认使用的编译版本为5版本过低 上述配置的maven环境只是针对于当前工程的如果我们再创建一个project又恢复成默认的配置了。 要解决这个问题 我们就需要配置全局的maven环境。 3.1.2 全局设置 1、进入到IDEA欢迎页面 选择 IDEA中 File close project 2、打开 All settings , 选择 Build,Execution,Deployment Build Tools Maven 3、配置工程的编译版本为11 这里所设置的maven的环境信息并未指定任何一个project此时设置的信息就属于全局配置信息。 以后我们再创建project默认就是使用我们全局配置的信息。 3.2 Maven项目 3.2.1 创建Maven项目 1、创建一个空项目 2、创建模块选择Maven点击Next 3、填写模块名称坐标信息点击finish创建完成 4、在Maven工程下创建HelloWorld类 Maven项目的目录结构: maven-project01 |--- src (源代码目录和测试代码目录) |--- main (源代码目录) |--- java (源代码java文件目录) |--- resources (源代码配置文件目录) |--- test (测试代码目录) |--- java (测试代码java目录) |--- resources (测试代码配置文件目录) |--- target (编译、打包生成文件存放目录) 5、编写 HelloWorld并运行 public class HelloWorld {public static void main(String[] args) {System.out.println(Hello Maven ...);} } 3.2.2 POM配置详解 POM (Project Object Model) 指的是项目对象模型用来描述当前的maven项目。 使用pom.xml文件来实现 pom.xml文件 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd!-- POM模型版本 --modelVersion4.0.0/modelVersion ​!-- 当前项目坐标 --groupIdcom.itheima/groupIdartifactIdmaven_project1/artifactIdversion1.0-SNAPSHOT/version!-- 打包方式 --packagingjar/packaging/project pom文件详解 project pom文件的根标签表示当前maven项目 modelVersion 声明项目描述遵循哪一个POM模型版本 虽然模型本身的版本很少改变但它仍然是必不可少的。目前POM模型版本是4.0.0 坐标 groupId、artifactId、version 定位项目在本地仓库中的位置由以上三个标签组成一个坐标 packaging maven项目的打包方式通常设置为jar或war默认值jar 3.2.3 Maven坐标详解 什么是坐标 Maven中的坐标是资源的唯一标识 , 通过该坐标可以唯一定位资源位置 使用坐标来定义项目或引入项目中需要的依赖 Maven坐标主要组成 groupId定义当前Maven项目隶属组织名称通常是域名反写例如com.itheima artifactId定义当前Maven项目名称通常是模块名称例如 order-service、goods-service version定义当前项目版本号 如下图就是使用坐标表示一个项目 注意 上面所说的资源可以是插件、依赖、当前项目。 我们的项目如果被其他的项目依赖时也是需要坐标来引入的。 3.3 导入Maven项目 方式1使用Maven面板快速导入项目 打开IDEA选择右侧Maven面板点击 号选中对应项目的pom.xml文件双击即可 说明如果没有Maven面板选择 View Appearance Tool Window Bars 方式2使用idea导入模块项目 File Project Structure Modules Import Module 找到要导入工程的pom.xml 04. 依赖管理 4.1 依赖配置 依赖指当前项目运行所需要的jar包。一个项目中可以引入多个依赖 例如在当前工程中我们需要用到logback来记录日志此时就可以在maven工程的pom.xml文件中引入logback的依赖。具体步骤如下 在pom.xml中编写dependencies标签 在dependencies标签中使用dependency引入坐标 定义坐标的 groupId、artifactId、version dependencies!-- 第1个依赖 : logback --dependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.2.11/version/dependency!-- 第2个依赖 : junit --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependency /dependencies 点击刷新按钮引入最新加入的坐标 刷新依赖保证每一次引入新的依赖或者修改现有的依赖配置都可以加入最新的坐标 注意事项 如果引入的依赖在本地仓库中不存在将会连接远程仓库 / 中央仓库然后下载依赖这个过程会比较耗时耐心等待 如果不知道依赖的坐标信息可以到mvn的中央仓库https://mvnrepository.com/中搜索 添加依赖的几种方式 利用中央仓库搜索的依赖坐标 利用IDEA工具搜索依赖 熟练上手maven后快速导入依赖 4.2 依赖传递 4.2.1 依赖具有传递性 早期我们没有使用maven时向项目中添加依赖的jar包需要把所有的jar包都复制到项目工程下。如下图所示需要logback-classic时由于logback-classic又依赖了logback-core和slf4j所以必须把这3个jar包全部复制到项目工程下 我们现在使用了maven当项目中需要使用logback-classic时只需要在pom.xml配置文件中添加logback-classic的依赖坐标即可。 在pom.xml文件中只添加了logback-classic依赖但由于maven的依赖具有传递性所以会自动把所依赖的其他jar包也一起导入。 依赖传递可以分为 直接依赖在当前项目中通过依赖配置建立的依赖关系 间接依赖被依赖的资源如果依赖其他资源当前项目间接依赖其他资源 比如以上图中 projectA依赖了projectB。对于projectA 来说projectB 就是直接依赖。 而projectB依赖了projectC及其他jar包。 那么此时在projectA中也会将projectC的依赖传递下来。对于projectA 来说projectC就是间接依赖。 4.2.2 排除依赖 问题之前我们讲了依赖具有传递性。那么A依赖BB依赖C如果A不想将C依赖进来是否可以做到 答案在maven项目中我们可以通过排除依赖来实现。 什么是排除依赖 排除依赖指主动断开依赖的资源。被排除的资源无需指定版本 dependencygroupIdcom.itheima/groupIdartifactIdmaven-projectB/artifactIdversion1.0-SNAPSHOT/version!--排除依赖, 主动断开依赖的资源--exclusionsexclusiongroupIdjunit/groupIdartifactIdjunit/artifactId/exclusion/exclusions /dependency 依赖排除示例 maven-projectA依赖了maven-projectBmaven-projectB依赖了Junit。基于依赖的传递性所以maven-projectA也依赖了Junit 使用排除依赖后 4.3 依赖范围 在项目中导入依赖的jar包后默认情况下可以在任何地方使用。 如果希望限制依赖的使用范围可以通过scope标签设置其作用范围。 作用范围 主程序范围有效main文件夹范围内 测试程序范围有效test文件夹范围内 是否参与打包运行package指令范围内 如上图所示给junit依赖通过scope标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境其他环境下不能使用。 scope标签的取值范围 scope值主程序测试程序打包运行范例compile默认YYYlog4jtest-Y-junitprovidedYY-servlet-apiruntime-YYjdbc驱动 4.4 生命周期 4.4.1 介绍 Maven的生命周期就是为了对所有的构建过程进行抽象和统一。 描述了一次项目构建经历哪些阶段。 在Maven出现之前项目构建的生命周期就已经存在软件开发人员每天都在对项目进行清理编译测试及部署。虽然大家都在不停地做构建工作但公司和公司间、项目和项目间往往使用不同的方式做类似的工作。 Maven从大量项目和构建工具中学习和反思然后总结了一套高度完美的易扩展的项目构建生命周期。这个生命周期包含了项目的清理初始化编译测试打包集成测试验证部署和站点生成等几乎所有构建步骤。 Maven对项目构建的生命周期划分为3套相互独立 clean清理工作。 default核心工作。如编译、测试、打包、安装、部署等。 site生成报告、发布站点等。 三套生命周期又包含哪些具体的阶段呢, 我们来看下面这幅图: 我们看到这三套生命周期里面有很多很多的阶段这么多生命周期阶段其实我们常用的并不多主要关注以下几个 • clean移除上一次构建生成的文件 • compile编译项目源代码 • test使用合适的单元测试框架运行测试(junit) • package将编译后的文件打包如jar、war等 • install安装项目到本地仓库 Maven的生命周期是抽象的这意味着生命周期本身不做任何实际工作。在Maven的设计中实际任务如源代码编译都交由插件来完成。 IDEA工具为了方便程序员使用maven生命周期在右侧的maven工具栏中已给出快速访问通道 生命周期的顺序是clean -- validate -- compile -- test -- package -- verify -- install -- site -- deploy 我们需要关注的就是clean -- compile -- test -- package -- install 说明在同一套生命周期中我们在执行后面的生命周期时前面的生命周期都会执行。 思考当运行package生命周期时clean、compile生命周期会不会运行 ​ clean不会运行compile会运行。 因为compile与package属于同一套生命周期而clean与package不属于同一套生命周期。 4.4.2 执行 在日常开发中当我们要执行指定的生命周期时有两种执行方式 在idea工具右侧的maven工具栏中选择对应的生命周期双击执行 在DOS命令行中通过maven命令执行 方式一在idea中执行生命周期 选择对应的生命周期双击执行 compile test package install clean 方式二在命令行中执行生命周期 进入到DOS命令行 05. 附录 5.1 更新依赖索引 有时候给idea配置完maven仓库信息后在idea中依然搜索不到仓库中的jar包。这是因为仓库中的jar包索引尚未更新到idea中。这个时候我们就需要更新idea中maven的索引了具体做法如下 打开设置----搜索maven----Repositories----选中本地仓库-----点击Update 5.2 清理maven仓库 初始情况下我们的本地仓库是没有任何jar包的此时会从私服去下载如果没有配置就直接从中央仓库去下载可能由于网络的原因jar包下载不完全这些不完整的jar包都是以lastUpdated结尾。此时maven不会再重新帮你下载需要你删除这些以lastUpdated结尾的文件然后maven才会再次自动下载这些jar包。 如果本地仓库中有很多这样的以lastUpadted结尾的文件可以定义一个批处理文件在其中编写如下脚本来删除 set REPOSITORY_PATHE:\develop\apache-maven-3.6.1\mvn_repo rem 正在搜索... ​ del /s /q %REPOSITORY_PATH%\*.lastUpdated ​ rem 搜索完毕 pause 操作步骤如下 1). 定义批处理文件del_lastUpdated.bat (直接创建一个文本文件命名为del_lastUpdated后缀名直接改为bat即可 ) 2). 在上面的bat文件上右键---》编辑 。修改文件 修改完毕后双击运行即可删除maven仓库中的残留文件。 SpringBoot基础 课程内容 SpringBootWeb入门 HTTP协议 Web服务器-Tomcat 前言 下面我们将进入SpringBoot基础阶段的学习。 在没有正式的学习SpringBoot之前我们要先来了解下什么是Spring。 我们可以打开Spring的官网(Spring | Home)去看一下Spring的简介Spring makes Java simple。 Spring的官方提供很多开源的项目我们可以点击上面的projects看到spring家族旗下的项目按照流行程度排序为 Spring发展到今天已经形成了一种开发生态圈Spring提供了若干个子项目每个项目用于完成特定的功能。而我们在项目开发时一般会偏向于选择这一套spring家族的技术来解决对应领域的问题那我们称这一套技术为spring全家桶。 而Spring家族旗下这么多的技术最基础、最核心的是 SpringFramework。其他的spring家族的技术都是基于SpringFramework的SpringFramework中提供很多实用功能如依赖注入、事务管理、web开发支持、数据访问、消息服务等等。 而如果我们在项目中直接基于SpringFramework进行开发存在两个问题配置繁琐、入门难度大。 所以基于此呢spring官方推荐我们从另外一个项目开始学习那就是目前最火爆的SpringBoot。 通过springboot就可以快速的帮我们构建应用程序所以springboot呢最大的特点有两个 简化配置 快速开发 Spring Boot 可以帮助我们非常快速的构建应用程序、简化开发、提高效率 。 接下来我们就直接通过一个SpringBoot的web入门程序让大家快速感受一下基于SpringBoot进行Web开发的便捷性。 1. SpringBootWeb快速入门 1.1 需求 需求基于SpringBoot的方式开发一个web应用浏览器发起请求/hello后给浏览器返回字符串 “Hello World ~”。 1.2 开发步骤 第1步创建SpringBoot工程项目 第2步定义HelloController类添加方法hello并添加注解 第3步测试运行 1.2.1 创建SpringBoot工程需要联网 基于Spring官方骨架创建SpringBoot工程。 基本信息描述完毕之后勾选web开发相关依赖。 点击Finish之后就会联网创建这个SpringBoot工程创建好之后结构如下 注意在联网创建过程中会下载相关资源(请耐心等待) 1.2.2 定义请求处理类 在com.itheima这个包下创建一个子包controller package com.itheima.controller; import org.springframework.web.bind.annotation.*; ​ RestController public class HelloController { ​RequestMapping(/hello)public String hello(){System.out.println(Hello World ~);return Hello World ~;}}   1.2.3 运行测试 运行SpringBoot自动生成的引导类 打开浏览器输入 http://localhost:8080/hello 1.3 Web分析 浏览器 输入网址http://192.168.100.11:8080/hello 通过IP地址192.168.100.11定位到网络上的一台计算机 我们之前在浏览器中输入的localhost就是127.0.0.1本机 通过端口号8080找到计算机上运行的程序 localhost:8080 , 意思是在本地计算机中找到正在运行的8080端口的程序 /hello是请求资源位置 资源对计算机而言资源就是数据 web资源通过网络可以访问到的资源通常是指存放在服务器上的数据 localhost:8080/hello 意思是向本地计算机中的8080端口程序获取资源位置是/hello的数据 8080端口程序在服务器找/hello位置的资源数据发给浏览器 服务器可以理解为ServerSocket 接收到浏览器发送的信息如/hello 在服务器上找到/hello的资源 把资源发送给浏览器 我们在JavaSE阶段学习网络编程时有讲过网络三要素 IP 网络中计算机的唯一标识 端口 计算机中运行程序的唯一标识 协议 网络中计算机之间交互的规则 问题浏览器和服务器两端进行数据交互使用什么协议 答案http协议 2. HTTP协议 2.1 HTTP-概述 2.1.1 介绍 HTTPHyper Text Transfer Protocol(超文本传输协议)规定了浏览器与服务器之间数据传输的规则。 http是互联网上应用最为广泛的一种网络协议 http协议要求浏览器在向服务器发送请求数据时或是服务器在向浏览器发送响应数据时都必须按照固定的格式进行数据传输 如果想知道http协议的数据传输格式有哪些可以打开浏览器点击F12打开开发者工具点击Network来查看 服务器按照固定的格式进行解析 浏览器按照固定的格式进行解析 所以我们学习HTTP主要就是学习请求和响应数据的具体格式内容。 2.2.2 特点 我们刚才初步认识了HTTP协议那么我们在看看HTTP协议有哪些特点 基于TCP协议: 面向连接安全 TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议在数据传输方面更安全 基于请求-响应模型: 一次请求对应一次响应先请求后响应 请求和响应是一一对应关系没有请求就没有响应 HTTP协议是无状态协议: 对于数据没有记忆能力。每次请求-响应都是独立的 无状态指的是客户端发送HTTP请求给服务端之后服务端根据请求响应数据响应完后不会记录任何信息。 缺点: 多次请求间不能共享数据 优点: 速度快 请求之间无法共享数据会引发的问题 如京东购物。加入购物车和去购物车结算是两次请求 由于HTTP协议的无状态特性加入购物车请求响应结束后并未记录加入购物车是何商品 发起去购物车结算的请求后因为无法获取哪些商品加入了购物车会导致此次请求无法正确展示数据 具体使用的时候我们发现京东是可以正常展示数据的原因是Java早已考虑到这个问题并提出了使用会话技术(Cookie、Session)来解决这个问题。具体如何来做我们后面课程中会讲到。 刚才提到HTTP协议是规定了请求和响应数据的格式那具体的格式是什么呢? 2.2 HTTP-请求协议 浏览器和服务器是按照HTTP协议进行数据通信的。 HTTP协议又分为请求协议和响应协议 请求协议浏览器将数据以请求格式发送到服务器 包括请求行、请求头 、请求体 响应协议服务器将数据以响应格式返回给浏览器 包括响应行 、响应头 、响应体 在HTTP1.1版本中浏览器访问服务器的几种方式 请求方式请求说明GET获取资源。向特定的资源发出请求。例itheima_百度搜索POST传输实体主体。向指定资源提交数据进行处理请求例上传文件数据被包含在请求体中。OPTIONS返回服务器针对特定资源所支持的HTTP请求方式。因为并不是所有的服务器都支持规定的方法为了安全有些服务器可能会禁止掉一些方法例如DELETE、PUT等。那么OPTIONS就是用来询问服务器支持的方法。HEAD获得报文首部。HEAD方法类似GET方法但是不同的是HEAD方法不要求返回数据。通常用于确认URI的有效性及资源更新时间等。PUT传输文件。PUT方法用来传输文件。类似FTP协议文件内容包含在请求报文的实体中然后请求保存到URL指定的服务器位置。DELETE删除文件。请求服务器删除Request-URI所标识的资源TRACE追踪路径。回显服务器收到的请求主要用于测试或诊断CONNECT要求用隧道协议连接代理。HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 在我们实际应用中常用的也就是 GET、POST GET方式的请求协议 请求行 HTTP请求中的第一行数据。由请求方式、资源路径、协议/版本组成之间使用空格分隔 请求方式GET 资源路径/brand/findAll?nameOPPOstatus1 请求路径/brand/findAll 请求参数nameOPPOstatus1 请求参数是以keyvalue形式出现 多个请求参数之间使用连接请求路径和请求参数之间使用?连接 协议/版本HTTP/1.1 请求头 第二行开始上图黄色部分内容就是请求头。格式为key: value形式 http是个无状态的协议所以在请求头设置浏览器的一些自身信息和想要响应的形式。这样服务器在收到信息后就可以知道是谁想干什么了 常见的HTTP请求头有: Host: 表示请求的主机名 ​ User-Agent: 浏览器版本。 例如Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79 IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko ​ Accept表示浏览器能接收的资源类型如text/*image/*或者*/*表示所有 ​ Accept-Language表示浏览器偏好的语言服务器可以据此返回不同语言的网页 ​ Accept-Encoding表示浏览器可以支持的压缩类型例如gzip, deflate等。 ​ Content-Type请求主体的数据类型 ​ Content-Length数据主体的大小单位字节 举例说明服务端可以根据请求头中的内容来获取客户端的相关信息有了这些信息服务端就可以处理不同的业务需求。 比如: 不同浏览器解析HTML和CSS标签的结果会有不一致所以就会导致相同的代码在不同的浏览器会出现不同的效果 服务端根据客户端请求头中的数据获取到客户端的浏览器类型就可以根据不同的浏览器设置不同的代码来达到一致的效果这就是我们常说的浏览器兼容问题 请求体 存储请求参数 GET请求的请求参数在请求行中故不需要设置请求体 POST方式的请求协议 请求行(以上图中红色部分)包含请求方式、资源路径、协议/版本 请求方式POST 资源路径/brand 协议/版本HTTP/1.1 请求头(以上图中黄色部分) 请求体(以上图中绿色部分) 存储请求参数 请求体和请求头之间是有一个空行隔开作用用于标记请求头结束 GET请求和POST请求的区别 区别方式GET请求POST请求请求参数请求参数在请求行中。例/brand/findAll?nameOPPOstatus1请求参数在请求体中请求参数长度请求参数长度有限制(浏览器不同限制也不同)请求参数长度没有限制安全性安全性低。原因请求参数暴露在浏览器地址栏中。安全性相对高 2.3 HTTP-响应协议 2.3.1 格式介绍 与HTTP的请求一样HTTP响应的数据也分为3部分响应行、响应头 、响应体 响应行(以上图中红色部分)响应数据的第一行。响应行由协议及版本、响应状态码、状态码描述组成 协议/版本HTTP/1.1 响应状态码200 状态码描述OK 响应头(以上图中黄色部分)响应数据的第二行开始。格式为keyvalue形式 http是个无状态的协议所以可以在请求头和响应头中设置一些信息和想要执行的动作这样对方在收到信息后就可以知道你是谁你想干什么 常见的HTTP响应头有: Content-Type表示该响应内容的类型例如text/htmlimage/jpeg ​ Content-Length表示该响应内容的长度字节数 ​ Content-Encoding表示该响应压缩算法例如gzip ​ Cache-Control指示客户端应如何缓存例如max-age300表示可以最多缓存300秒 ; ​ Set-Cookie: 告诉浏览器为当前页面所在的域设置cookie ; 响应体(以上图中绿色部分) 响应数据的最后一部分。存储响应的数据 响应体和响应头之间有一个空行隔开作用用于标记响应头结束 2.3.2 响应状态码 状态码分类说明1xx响应中 --- 临时状态码。表示请求已经接受告诉客户端应该继续请求或者如果已经完成则忽略2xx成功 --- 表示请求已经被成功接收处理已完成3xx重定向 --- 重定向到其它地方让客户端再发起一个请求以完成整个处理4xx客户端错误 --- 处理发生错误责任在客户端如客户端的请求一个不存在的资源客户端未被授权禁止访问等5xx服务器端错误 --- 处理发生错误责任在服务端如服务端抛出异常路由出错HTTP版本不支持等 参考: HTTP协议响应状态码-CSDN博客 关于响应状态码我们先主要认识三个状态码其余的等后期用到了再去掌握 200 ok 客户端请求成功 404 Not Found 请求资源不存在 500 Internal Server Error 服务端发生不可预期的错误 2.4 HTTP-协议解析 将资料中准备好的Demo工程导入到我们的IDEA中有一个Server.java类这里面就是自定义的一个服务器代码主要使用到的是ServerSocket和Socket 说明以下代码大家不需要自己写我们主要是通过代码让大家了解到服务器针对HTTP协议的解析机制 package com.itheima; ​ import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.nio.charset.StandardCharsets; ​ /** 自定义web服务器*/ public class Server {public static void main(String[] args) throws IOException {ServerSocket ss new ServerSocket(8080); // 监听指定端口System.out.println(server is running...); ​while (true){Socket sock ss.accept();System.out.println(connected from sock.getRemoteSocketAddress());Thread t new Handler(sock);t.start();}} } ​ class Handler extends Thread {Socket sock; ​public Handler(Socket sock) {this.sock sock;} ​public void run() {try (InputStream input this.sock.getInputStream();OutputStream output this.sock.getOutputStream()) {handle(input, output);} catch (Exception e) {try {this.sock.close();} catch (IOException ioe) {}System.out.println(client disconnected.);}} ​private void handle(InputStream input, OutputStream output) throws IOException {BufferedReader reader new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8));BufferedWriter writer new BufferedWriter(new OutputStreamWriter(output, StandardCharsets.UTF_8));// 读取HTTP请求:boolean requestOk false;String first reader.readLine();if (first.startsWith(GET / HTTP/1.)) {requestOk true;}for (;;) {String header reader.readLine();if (header.isEmpty()) { // 读取到空行时, HTTP Header读取完毕break;}System.out.println(header);}System.out.println(requestOk ? Response OK : Response Error); ​if (!requestOk) {// 发送错误响应:writer.write(HTTP/1.0 404 Not Found\r\n);writer.write(Content-Length: 0\r\n);writer.write(\r\n);writer.flush();} else {// 发送成功响应://读取html文件转换为字符串InputStream is Server.class.getClassLoader().getResourceAsStream(html/a.html);BufferedReader br new BufferedReader(new InputStreamReader(is));StringBuilder data new StringBuilder();String line null;while ((line br.readLine()) ! null){data.append(line);}br.close();int length data.toString().getBytes(StandardCharsets.UTF_8).length; ​writer.write(HTTP/1.1 200 OK\r\n);writer.write(Connection: keep-alive\r\n);writer.write(Content-Type: text/html\r\n);writer.write(Content-Length: length \r\n);writer.write(\r\n); // 空行标识Header和Body的分隔writer.write(data.toString());writer.flush();}} } ​ 启动ServerSocket程序 浏览器输入 http://localhost:8080 就会访问到ServerSocket程序 ServerSocket程序会读取服务器上html/a.html文件并把文件数据发送给浏览器 浏览器接收到a.html文件中的数据后进行解析显示以下内容 现在大家知道了服务器是可以使用java完成编写是可以接受页面发送的请求和响应数据给前端浏览器的而在开发中真正用到的Web服务器我们不会自己写的都是使用目前比较流行的web服务器。如Tomcat 3. WEB服务器-Tomcat 3.1 简介 3.1.1 服务器概述 服务器硬件 指的也是计算机只不过服务器要比我们日常使用的计算机大很多。 服务器也称伺服器。是提供计算服务的设备。由于服务器需要响应服务请求并进行处理因此一般来说服务器应具备承担服务并且保障服务的能力。 服务器的构成包括处理器、硬盘、内存、系统总线等和通用的计算机架构类似但是由于需要提供高可靠的服务因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。 在网络环境下根据服务器提供的服务类型不同可分为文件服务器数据库服务器应用程序服务器WEB服务器等。 服务器只是一台设备必须安装服务器软件才能提供相应的服务。 服务器软件 服务器软件基于ServerSocket编写的程序 服务器软件本质是一个运行在服务器设备上的应用程序 能够接收客户端请求并根据请求给客户端响应数据 3.1.2 Web服务器 Web服务器是一个应用程序(软件)对HTTP协议的操作进行封装使得程序员不必直接对协议进行操作(不用程序员自己写代码去解析http协议规则)让Web开发更加便捷。主要功能是提供网上信息浏览服务。 Web服务器是安装在服务器端的一款软件将来我们把自己写的Web项目部署到Tomcat服务器软件中当Web服务器软件启动后部署在Web服务器软件中的页面就可以直接通过浏览器来访问了。 Web服务器软件使用步骤 准备静态资源 下载安装Web服务器软件 将静态资源部署到Web服务器上 启动Web服务器使用浏览器访问对应的资源 第1步准备静态资源 在提供的资料中找到静态资源文件 第2步下载安装Web服务器软件 第3步将静态资源部署到Web服务器上 第4步启动Web服务器使用浏览器访问对应的资源 浏览器输入http://localhost:8080/demo/index.html 上述内容在演示的时候使用的是Apache下的Tomcat软件至于Tomcat软件如何使用后面会详细的讲到。而对于Web服务器来说实现的方案有很多Tomcat只是其中的一种而除了Tomcat以外还有很多优秀的Web服务器比如: Tomcat就是一款软件我们主要是以学习如何去使用为主。具体我们会从以下这些方向去学习: 简介初步认识下Tomcat 基本使用: 安装、卸载、启动、关闭、配置和项目部署这些都是对Tomcat的基本操作 IDEA中如何创建Maven Web项目 IDEA中如何使用Tomcat,后面这两个都是我们以后开发经常会用到的方式 首选我们来认识下Tomcat。 3.1.3 Tomcat Tomcat服务器软件是一个免费的开源的web应用服务器。是Apache软件基金会的一个核心项目。由ApacheSun和其他一些公司及个人共同开发而成。 由于Tomcat只支持Servlet/JSP少量JavaEE规范所以是一个开源免费的轻量级Web服务器。 JavaEE规范 JavaEE Java Enterprise Edition(Java企业版) avaEE规范就是指Java企业级开发的技术规范总和。包含13项技术规范JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF 因为Tomcat支持Servlet/JSP规范所以Tomcat也被称为Web容器、Servlet容器。JavaWeb程序需要依赖Tomcat才能运行。 Tomcat的官网: Apache Tomcat® - Welcome! 3.2基本使用 Tomcat服务器安装使用及卸载-CSDN博客 3.3 入门程序解析 关于web开发的基础知识我们可以告一段落了。下面呢我们在基于今天的核心技术点SpringBoot快速入门案例进行分析。 3.3.1 Spring官方骨架 之前我们创建的SpringBoot入门案例是基于Spring官方提供的骨架实现的。 Spring官方骨架可以理解为Spring官方为程序员提供一个搭建项目的模板。 或者手动构建 SpringBoot项目-手动构建-CSDN博客 我们可以通过访问https://start.spring.io/ 进入到官方骨架页面 Spring官方生成的SpringBoot项目怎么使用呢 解压缩后就会得到一个SpringBoot项目工程 打开pom.xml文件我们可以看到springboot项目中引入了web依赖和test依赖 结论不论使用IDEA创建SpringBoot项目还是直接在官方网站利用骨架生成SpringBoot项目项目的结构和pom.xml文件中内容是相似的。 3.3.2 起步依赖 在我们之前讲解的SpringBoot快速入门案例中同样也引用了web依赖和test依赖 spring-boot-starter-web和spring-boot-starter-test在SpringBoot中又称为起步依赖 而在SpringBoot的项目中有很多的起步依赖他们有一个共同的特征就是以spring-boot-starter-作为开头。在以后大家遇到spring-boot-starter-xxx这类的依赖都为起步依赖。 起步依赖有什么特殊之处呢这里我们以入门案例中引入的起步依赖做为讲解 spring-boot-starter-web包含了web应用开发所需要的常见依赖 spring-boot-starter-test包含了单元测试所需要的常见依赖 spring-boot-starter-web内部把关于Web开发所有的依赖都已经导入并且指定了版本只需引入 spring-boot-starter-web 依赖就可以实现Web开发的需要的功能 Spring的官方提供了很多现成的starter(起步依赖)我们在开发相关应用时只需要引入对应的starter即可。 官方地址Spring Boot Reference Documentation 每一个起步依赖都用于开发一个特定的功能。 举例当我们开发中需要使用redis数据库时只需要在SpringBoot项目中引入spring-boot-starter-redis 即可导入redis开发所需要的依赖。 3.3.2 SpringBoot父工程 在我们之前开发的SpringBoot入门案例中我们通过maven引入的依赖是没有指定具体的依赖版本号的。 为什么没有指定version版本号可以正常使用呢 因为每一个SpringBoot工程都有一个父工程。依赖的版本号在父工程中统一管理。 3.3.3 内嵌Tomcat 问题为什么我们之前书写的SpringBoot入门程序中并没有把程序部署到Tomcat的webapps目录下也可以运行呢 原因呢是因为在我们的SpringBoot中引入了web运行环境(也就是引入spring-boot-starter-web起步依赖)其内部已经集成了内置的Tomcat服务器。 我们可以通过IDEA开发工具右侧的maven面板中就可以看到当前工程引入的依赖。其中已经将Tomcat的相关依赖传递下来了也就是说在SpringBoot中可以直接使用Tomcat服务器。 当我们运行SpringBoot的引导类时(运行main方法)就会看到命令行输出的日志其中占用8080端口的就是Tomcat。
http://www.hkea.cn/news/14398818/

相关文章:

  • 网站设计公司产品介绍做网咖的网站
  • 汝州网站建设朱腾鹏个人网站
  • 节点网站python创建wordpress
  • 单位网站建设建议对策国内互联网推广
  • 云南定制化网站建设河南省住房城乡建设厅官网
  • 西安网站设计哪家好寺院的网站怎么做
  • 本校网站建设域名企业备案对网站的好处
  • 个人艺术作品网站建设策划书民政局两学一做专题网站
  • 企业名录网站 优帮云汽车网络营销策划方案
  • 4免费网站建站网站开发的名称叫什么
  • WordPress批量注册宁波网络seo哪家有名
  • 长春网站优化方案站长查询
  • 驾校报名网站怎么做工程施工管理平台
  • 关键词分析工具东莞网站推广及优化
  • 网站专题制作 公司windows优化大师最新版本
  • 阿里云可以做哪些网站吗平台网站如何优化
  • seo网站推广方法衡水营销网站建设
  • 网站建设自己国内优秀的设计网站推荐
  • 网站icp备案认证怎么做网页设计案例100例
  • 网站建设的税率做网站用什么服务器
  • 广东网站制作平台嵌入式软件开发待遇
  • 企业网站设计服务公司想学网页设计报考什么专业
  • 可以做点赞的网站赚钱模板建站哪里有
  • 怎么创建免费网站吗广告设计专业周记
  • 制作网站在哪里制作网站的商家
  • 企业做网站优点如何登录到wordpress
  • 手机网站自适应代码如何做网络推广工作
  • wordpress 视频网站wordpress 文章描述
  • 织梦网站footer美化怎么在电脑上自己做网站吗
  • wordpress 子网站专业网络公司报价