3

JavaWeb--HTTP与Maven - 鹤鸣呦呦、、

 1 year ago
source link: https://www.cnblogs.com/qjds/p/16535850.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
  • Java Web 其实就是一个技术的总和,把Web看成一个容器而已主要使用JavaEE技术来实现.在加上各种中间件。
  • 整个javaWeb阶段的内容通过实际的案例贯穿学习, 所涉及到的技术知识点会在案例中根据不同的需求引入。
  • 首先了解javaWEB的整个技术体系,掌握常用的技术知识点。
    2930166-20220730202123689-9217320.png

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

2930166-20220730210007566-1868499050.jpg

注:本篇文章承接上一篇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)-----服务器

    Request URL: https://www.baidu.com/                      //请求地址(以百度为例)
    Request Method: GET                                      //GET/POST方法
    Status Code: 200 OK                                      //状态码:200代表OK
    Remote Address: 110.242.68.3:443                         //地址
    Referrer Policy: strict-origin-when-cross-origin         //协议
    
    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
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9//语言
    Cache-Control: max-age=0
    Connection: keep-alive
    
  • 请求行

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

4.4、HTTP响应

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

    202:接受

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

    400:错误的请求

    404:找不到资源

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

5、Maven

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

5.1、Maven项目架构管理工具

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

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

  • 有约束不要去违反

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

5.2、下载安装Maven

具体下载步骤大家可以参考这篇博客maven安装及配置(详细版)

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

官网;https://maven.apache.org/
这里我保存的位置是:E:\JavaBackend\Maven\apache-maven-3.5.2

2930166-20220730210421108-1072318169.png

5.3、配置环境变量

在我们的系统环境变量中

配置如下配置:

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

测试是否安装成功

2930166-20220730210514606-1243547979.png

5.4、阿里云镜像

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

setting.xml配置文件位置

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

5.5、本地仓库

本地仓库 localRepository,远程仓库

建立一个仓库:

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

5.6、在IDEA中使用Maven

  1. 启动IDEA

  2. 创建一个Mavenweb项目

2930166-20220730210602823-1882981157.png


2930166-20220730210616722-1179952008.png


3.等待项目初始化完毕

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

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

2930166-20220730210651638-364124047.png


2930166-20220730210702570-377006186.png

5.7、创建一个普通maven项目

2930166-20220730210824885-64964336.png

5.8、标记文件夹功能

(1)

2930166-20220730210846137-652996742.png

(2)

2930166-20220730210858439-1154755084.png

5.9、在idea中配置Tomcat

(1)

2930166-20220730210941183-2125079101.png


(2)

2930166-20220730210952235-1930608411.png


2930166-20220730211010251-385920432.png


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

2930166-20220730211034266-1479740904.png


2930166-20220730211046399-1844805861.png


(4)启动测试

2930166-20220730211105637-713025324.png


2930166-20220730211111555-1541810312.png

5.10、pom文件

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

2930166-20220730211128361-1917267642.png

pom.xml

<?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>
<!--这里就是我们刚才配置的GAV-->
  <groupId>org.example</groupId>
  <artifactId>Javaweb-01-maven</artifactId>
  <version>1.0-SNAPSHOT</version>
<!--packaging打包方式
java:jar
Javaweb:war
-->
  <packaging>war</packaging>

  <name>Javaweb-01-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>
<!--编码版本-->
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
  
<!--项目依赖-->
  <dependencies>
      <!--maven会帮你导入这个jar包所依赖的其他jar包    -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
<!--项目构建用的东西-->
  <build>
    <finalName>Javaweb-01-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>

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

  <!--    在build中配置resources , 来防止我们资源导出失败的问题-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

5.11、Maven仓库的使用

Maven仓库

常见的问题

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

  • Tomcat闪退

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

  • Maven项目中Tomcat无法配置

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

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

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

__EOF__


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK