前言

  • Java Web 其实就是一个技术的总和,把Web看成一个容器而已主要使用JavaEE技术来实现.在加上各种中间件。
  • 整个javaWeb阶段的内容通过实际的案例贯穿学习, 所涉及到的技术知识点会在案例中根据不同的需求引入。
  • 首先了解javaWEB的整个技术体系,掌握常用的技术知识点。

我会将JavaWeb分为8篇左右的文章来记录自己的学习过程,也方便大家逐级递增难度的学习,如有错误或遗漏欢迎大家指出。

注:本篇文章承接上一篇JavaWeb文章JavaWeb--基本概念、Web服务器与Tomcat

下面我们进入正题!

4、HTTP

4.1、什么是HTTP

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

http端口:80 https端口:443 (s代表安全)

  • 文本:html,字符串,...
  • 超文本:图片,音乐,视频,定位,地图....

4.2、两个时代

  • http1.0

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

4.3、HTTP请求

  • 客户端------发请求(request)-----服务器

    1. Request URL: https://www.baidu.com/ //请求地址(以百度为例)
    2. Request Method: GET //GET/POST方法
    3. Status Code: 200 OK //状态码:200代表OK
    4. Remote Address: 110.242.68.3:443 //地址
    5. Referrer Policy: strict-origin-when-cross-origin //协议
    1. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    2. Accept-Encoding: gzip, deflate, br
    3. Accept-Language: zh-CN,zh;q=0.9//语言
    4. Cache-Control: max-age=0
    5. Connection: keep-alive
  • 请求行

  • 消息头

    1. Accept: //告诉浏览器它所支持的数据类型
    2. Accept-Encoding: //支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
    3. Accept-Language: //告诉浏览器他的语言环境
    4. Cache-Control: //缓存控制
    5. Connection: //告诉浏览器,请求完是断开还是保持连接
    6. HOET: //主机

4.4、HTTP响应

  • 服务器-----响应(response)-----客户端
  1. Cache-Control: private // 缓存控制
  2. Connection: keep-alive // 连接
  3. Content-Encoding: gzip // 编码
  4. Content-Type: text/html;charset=utf-8 // 类型
  • 响应体
  1. Accept: //告诉浏览器它所支持的数据类型
  2. Accept-Encoding: //支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
  3. Accept-Language: //告诉浏览器他的语言环境
  4. Cache-Control: //缓存控制
  5. Connection: //告诉浏览器,请求完是断开还是保持连接
  6. HOET: //主机
  7. REFRESH: //告诉客户端多久刷新一次
  8. Location: //让网页重新定位
  • 响应头

    200:请求响应成功

    202:接受

    3**:

    • 重定向:你重新到我给你的新位置去

    400:错误的请求

    404:找不到资源

    5**:服务器代码错误(502网关错误)

5、Maven

  1. 在JAvaweb开发中,需要使用大量的jar包,我们需要手动导入
  2. 如何能够让一个东西自动帮我们导入和配置这个jar包

5.1、Maven项目架构管理工具

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

Maven的核心思想:约定大于配置

  • 有约束不要去违反

Maven会规定好你该如何去编写我们的Java代码,必须要按照规范

5.2、下载安装Maven

这里尤其要注意Maven版本与IDEA版本对应的问题

官网;https://maven.apache.org/

这里我保存的位置是:E:\JavaBackend\Maven\apache-maven-3.5.2

5.3、配置环境变量

在我们的系统环境变量中

配置如下配置:

  • M2_HOME maven目录下的bin目录
  • MAVEN_HOME maven的目录
  • 在系统的path中配置%MAVEN_HOME%\bin

测试是否安装成功

5.4、阿里云镜像

  • 镜像:mirrors,可以加速我们的下载

setting.xml配置文件位置

  1. <mirror>
  2. <id>nexus-aliyun</id>
  3. <mirrorOf>central</mirrorOf>
  4. <name>Nexus aliyun</name>
  5. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  6. </mirror>

5.5、本地仓库

本地仓库 localRepository,远程仓库

建立一个仓库:

  • 原来的地址:
  1. C:\Users\86134\.m2\repository
  • 修改后的地址:
  1. <localRepository>E:/JavaBackend/Maven/apache-maven-3.5.2/maven_repository</localRepository>

5.6、在IDEA中使用Maven

  1. 启动IDEA

  2. 创建一个Mavenweb项目





3.等待项目初始化完毕

4.观察maven仓库中多了哪些东西

5.idea中的maven设置(idea中经常使用自带的maven,需要手动修改,退出项目在最开始的页面可以修改默认设置)



5.7、创建一个普通maven项目

5.8、标记文件夹功能

(1)

(2)

5.9、在idea中配置Tomcat

(1)

(2)



(3)警告问题:我们访问一个网站的时候,需要指定一个文件夹名字





(4)启动测试



5.10、pom文件

pom.xml是maven的核心配置文件

pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--maven的版本和头文件-->
  3. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <!--这里就是我们刚才配置的GAV-->
  7. <groupId>org.example</groupId>
  8. <artifactId>Javaweb-01-maven</artifactId>
  9. <version>1.0-SNAPSHOT</version>
  10. <!--packaging打包方式
  11. java:jar
  12. Javaweb:war
  13. -->
  14. <packaging>war</packaging>
  15. <name>Javaweb-01-maven Maven Webapp</name>
  16. <!-- FIXME change it to the project's website -->
  17. <url>http://www.example.com</url>
  18. <!--配置-->
  19. <properties>
  20. <!--项目的默认构建编码-->
  21. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  22. <!--编码版本-->
  23. <maven.compiler.source>1.7</maven.compiler.source>
  24. <maven.compiler.target>1.7</maven.compiler.target>
  25. </properties>
  26. <!--项目依赖-->
  27. <dependencies>
  28. <!--maven会帮你导入这个jar包所依赖的其他jar包 -->
  29. <dependency>
  30. <groupId>junit</groupId>
  31. <artifactId>junit</artifactId>
  32. <version>4.11</version>
  33. <scope>test</scope>
  34. </dependency>
  35. </dependencies>
  36. <!--项目构建用的东西-->
  37. <build>
  38. <finalName>Javaweb-01-maven</finalName>
  39. <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
  40. <plugins>
  41. <plugin>
  42. <artifactId>maven-clean-plugin</artifactId>
  43. <version>3.1.0</version>
  44. </plugin>
  45. <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
  46. <plugin>
  47. <artifactId>maven-resources-plugin</artifactId>
  48. <version>3.0.2</version>
  49. </plugin>
  50. <plugin>
  51. <artifactId>maven-compiler-plugin</artifactId>
  52. <version>3.8.0</version>
  53. </plugin>
  54. <plugin>
  55. <artifactId>maven-surefire-plugin</artifactId>
  56. <version>2.22.1</version>
  57. </plugin>
  58. <plugin>
  59. <artifactId>maven-war-plugin</artifactId>
  60. <version>3.2.2</version>
  61. </plugin>
  62. <plugin>
  63. <artifactId>maven-install-plugin</artifactId>
  64. <version>2.5.2</version>
  65. </plugin>
  66. <plugin>
  67. <artifactId>maven-deploy-plugin</artifactId>
  68. <version>2.8.2</version>
  69. </plugin>
  70. </plugins>
  71. </pluginManagement>
  72. </build>
  73. </project>

在build中配置resources,来防止我们资源导出失败的问题

  1. <!-- 在build中配置resources , 来防止我们资源导出失败的问题-->
  2. <build>
  3. <resources>
  4. <resource>
  5. <directory>src/main/resources</directory>
  6. <includes>
  7. <include>**/*.properties</include>
  8. <include>**/*.xml</include>
  9. </includes>
  10. </resource>
  11. <resource>
  12. <directory>src/main/java</directory>
  13. <includes>
  14. <include>**/*.properties</include>
  15. <include>**/*.xml</include>
  16. </includes>
  17. </resource>
  18. </resources>
  19. </build>

5.11、Maven仓库的使用

Maven仓库

常见的问题

  • maven版本与jdk版本不相容(jdk1.8 maven3.5)

  • Tomcat闪退

  • IDEA中每次都要重复配置Maven(修改全局)

  • Maven项目中Tomcat无法配置

  • Maven默认web项目中的web.xml版本问题

      • 替换为webapp4.0版本和Tomcat一致
      1. <?xml version="1.0" encoding="UTF-8"?>
      2. <web-app metadata-complete="true" version="4.0"
      3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
      4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      5. xmlns="http://xmlns.jcp.org/xml/ns/javaee">
      6. </web-app>

到这里关于Http和Maven知识就结束啦≧ω≦,希望大家都有所收获!

JavaWeb--HTTP与Maven的更多相关文章

  1. 传统javaweb 改成 Maven项目

    1. 项目右键-- Configure --Convert to Maven Project 后可以生成maven结构,多了红色框的    <project xmlns="http:/ ...

  2. (一)使用IDEA新建一个最简单的JavaWeb项目,Maven管理

    1.项目环境 IDEA:2016.2 JDK:1.8.0_76 Maven:3.2.5 2.File-->New-->Project-->Maven 3.选择Project SDK: ...

  3. 如何用Eclipse将普通的JavaWeb项目转为Maven项目

    最新自己的第一个项目差不多稳定运行之后 想着将项目转为Maven项目.于是参考网上成功的将自己的普通的项目转为了maven项目,现在记录一下: 0.普通的java项目的结构如下: 1.接下来开始进行正 ...

  4. 原创: idea 的maven 方式配置 开发javaWeb(idea+tomcat +maven

    通过idea 编辑器来配置基于maven创建站点,在tomcat上配置 在采用idea 配置之前,首先要确保maven和 tomcat 正确运行. maven 配置链接 tomcat 配置链接 实际你 ...

  5. 【JavaWeb】【Maven】001 下载与配置

    Maven下载与配置 Download Url:Maven – Download Apache Maven After downloading it, unpack it and configure ...

  6. 将javaWeb项目转maven项目

    不经常做此类转换,所以总是忘记转换方法,特此,记录下转换步骤 1.首先从SVN检出项目 2.找到导出项目路径 3.按住Shift+鼠标右键,打开控制台 3.输入命令mvn eclipse:eclips ...

  7. Eclipse 创建 Maven 项目、Maven JavaWeb 项目

    Eclipse 创建 Maven 项目         新建一个maven项目          (默认)(如果不行第一个Create a simple ... 也选中) 默认         Jav ...

  8. MyEclipse10.6、Maven、svn集成

    这几天整理maven,根据开发部署需要,需要把原先的myeclipse下的普通javaWeb工程用maven管理,弄了2天,主要还是在jar包的引入上,总是少- -! 好了,下面记录一下我的安装过程: ...

  9. 一:使用maven构建项目

    一般情况下:使用maven构建项目有两种情况: 1:用maven构建java项目: 2:用maven构建javaweb项目: 还有一种经常需要使用到的就是用maven构建项目模块:如:一个父项目用来作 ...

  10. Maven详解(非原创)

    文章大纲 一.maven功能介绍二.maven整合javaweb案例三.私服应用(了解)四.总结五.相关资料下载六.参考文章 一.maven功能介绍 1. maven基本介绍   Maven的Apac ...

随机推荐

  1. 使用echo 无法正确清空文件存储大小

    在使用echo进行重定向文件的时候,会存在大小没有发生改变的现象 使用上面的方法遇到一个现象 ls -l 与 du -sh 得到的大小事是不同的 可以尝试下面的方面之后在进行对比 再看是否正确清除 使 ...

  2. 面试官问:Go 中的参数传递是值传递还是引用传递?

    一个程序中,变量分为变量名和变量内容,变量内容的存储一般会被分配到堆和栈上.而在 Go 语言中有两种传递变量的方式值传递和引用传递.其中值传递会直接将变量内容附在变量名上传递,而引用传递会将变量内容的 ...

  3. 『忘了再学』Shell基础 — 19、使用declare命令声明变量类型

    目录 1.declare命令介绍 2.声明数组变量类型 3.声明变量为环境变量 4.声明只读属性 5.补充: 1.declare命令介绍 Shell中所有变量的默认类型是字符串类型,如果你需要进行特殊 ...

  4. 为什么Java有了synchronized之后还造了Lock锁这个轮子?

    众所周知,synchronized和Lock锁是java并发变成中两大利器,可以用来解决线程安全的问题.但是为什么Java有了synchronized之后还是提供了Lock接口这个api,难道仅仅只是 ...

  5. vue 的个人学习小笔记

    一.vite2.0+vue3.0+ts 创建.配置 个人公众号文章地址 个人github仓库地址 1.Vite 创建 vue3 项目: 1.1.npm 常用命令 1.npm 查看版本号 npm vie ...

  6. Link-Cut-Tree(1)

    参考论文 求解范围:(动态树问题) 树上路径查询.修改 动态连边.删边 换根 lca 算法逻辑 概念: 类似树链剖分,把一棵树拆成许多链,每个链用splay维护(链上的为实边,否则为虚边),splay ...

  7. WC2019

    好题啊! 数树 \(\text{opt = 0, 6 pts.}\) 显然答案为 \(y^{n-|E_1∩E_2|}\) . \(\text{opt = 1, 47 pts.}\) \[\sum_{E ...

  8. 免费CDN:jsDelivr+Github 使用方法

    转自 https://zhuanlan.zhihu.com/p/76951130 本文在CSDN上的链接:https://blog.csdn.net/qq_36759224/article/detai ...

  9. redis客户端打不开 提示cannot connect to server dev.check log for details

    我当前状况是redis客户端打不开,之前一直好好的(虽然作为一个程序员我不配说这句话,哈哈),但是我排查了我觉得所有的可能性,我用的阿里云的redis(还没有到购买到期时间),然后我就关闭了防火墙,你 ...

  10. 计算机环境变量的配置,以java为例以及eclipse简要设置

    安装JDK时可以不安装公共jre.因为好多软件和浏览器已经默认自带的jre了,或者自动调用系统的了. 在java 中需要设置三个环境变量(1.5之后不需要再设置CLASSPATH了,但需要的话可以设置 ...