javaweb

Posted dxj1016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaweb相关的知识,希望对你有一定的参考价值。

狂神视频

1、基本概念

1.1、前言

在这里插入图片描述

1.2、web应用程序

在这里插入图片描述
web应用程序编写完毕之后,若想提供给外界访问:需要一个服务器来统一管理

1.3、静态web

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

1.4、动态web

页面会动态展示:“web的页面展示的效果因人而异”
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、web服务器

2.1、技术讲解

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

2.2、Web服务器

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

3、Tomcat

3.1、Tomcat安装

tomcat官网

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

3.2、Tomcat配置文件

文件夹作用:
在这里插入图片描述
启动关闭Tomcat
在这里插入图片描述
访问测试

在这里插入图片描述

3.3、配置

在这里插入图片描述

在这里插入图片描述
这里修改主机名的时候还要去本地的system->drivers->etc下的host.xml文件修改主机对应的名称localhost修改成需要修改的名称。
在这里插入图片描述

在这里插入图片描述

高难度面试题

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

3.4、发布一个web网站

在这里插入图片描述
http协议:面试
Maven:构建工具

  • Maven安装包

Servlet入门

  • HelloWorld
  • Servlet配置
  • 原理

4、Http

4.1、什么是Http

http百度百科
在这里插入图片描述

4.2、两个时代

http1.0是短连接
http1.1是长连接
在这里插入图片描述

4.3、Http请求

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

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

1、请求行

在这里插入图片描述

2、消息头

在这里插入图片描述

4.4、Http响应

在这里插入图片描述

1、响应体

在这里插入图片描述

2、响应状态码(重点)

在这里插入图片描述

常见面试题

当你的浏览器地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?

5、Maven

在这里插入图片描述

5.1、Maven项目架构管理工具

在这里插入图片描述

5.2、下载安装Maven

Maven官网
在这里插入图片描述
在这里插入图片描述
比如我下载包后解压到对应目录:D:\\Java soft\\apache-maven-3.6.3或者D:\\teacher wang\\apache-maven-3.6.3

5.3、配置Maven环境变量

右键 “计算机”,选择 “属性”,之后点击 “高级系统设置”,点击"环境变量",来设置环境变量,有以下系统变量需要配置:
新建系统变量 Maven_Home,变量值:D:\\Java soft\\apache-maven-3.6.3
在这里插入图片描述
编辑系统变量 Path,添加变量值:%Maven_Home%\\bin;

在这里插入图片描述
注意:多个值之间需要有分号隔开,然后点击确定。

测试Maven是否安装成功,保证必须配置完毕
在这里插入图片描述

5.4、阿里云镜像

Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。
第一步:修改 maven 根目录下的 conf 文件夹中的 setting.xml 文件,在 mirrors 节点上,添加内容如下:

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

在这里插入图片描述

在这里插入图片描述

5.5、本地仓库

  • 在 Maven 的术语中,仓库是一个位置(place)。
  • Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。
  • 在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。
  • Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。
  • Maven 仓库有三种类型:本地(local)、中央(central)、远程(remote)

本地仓库

  • Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。
  • 运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。
  • 默认情况下,不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为.m2/respository/ 的仓库目录。
  • Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,在 %M2_HOME%\\conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> 
<localRepository>
D:/techer wang/repomaven
</localRepository>
 </settings>
  • 当你运行 Maven 命令,Maven 将下载依赖的文件到你指定的路径中。

注意:文件中的路径和Windows下的路径不一样,拷贝过来后要将\\替换为/,而且不能包含中文。

5.6、中央仓库

Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。
中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。
中央仓库的关键概念:

  • 这个仓库由 Maven 社区管理。
  • 不需要配置。
  • 需要通过网络才能访问。

要浏览中央仓库的内容,maven 社区提供了一个 URL:http://search.maven.org/#browse。使用这个仓库,开发人员可以搜索所有可以获取的代码库。

5.7、远程仓库

如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。
举例说明,使用下面的 pom.xml,Maven 将从远程仓库中下载该 pom.xml 中声明的所依赖的(在中央仓库中获取不到的)文件。

<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> 
<groupId>com.companyname.projectgroup</groupId> <artifactId>project</artifactId> 
<version>1.0</version> 
<dependencies> 
<dependency> 
<groupId>com.companyname.common-lib</groupId> 
<artifactId>common-lib</artifactId> 
<version>1.0.0</version> </dependency> 
<dependencies> <repositories> <repository> 
<id>companyname.lib1</id> 
<url>http://download.companyname.org/maven2/lib1</url> 
</repository> <repository> 
<id>companyname.lib2</id> 
<url>http://download.companyname.org/maven2/lib2</url>
 </repository>
 </repositories> 
 </project>

5.8、Maven依赖搜索顺序

Maven依赖搜索顺序
当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:

  • 步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
  • 步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
  • 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
  • 步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

5.6、IDEA中使用Maven

  1. 启动IDEA

  2. 创建一个Maven web项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 等待项目初始化
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  4. 观察maven仓库中多了什么东西?

  5. IDEA中Maven设置
    注意:IDEA项目创建成功后,看一眼Maven的设置
    在这里插入图片描述
    在这里插入图片描述

  6. 到这里,Maven在IDEA中的配置和使用就OK了

5.7、创建一个普通的Maven项目

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

5.8、标记文件夹功能

在这里插入图片描述
新建java、resources包然后要给他们标记功能
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5.9、在IDEA中配置Tomcat

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解决警告问题
必须要配置: 为什么会有这个问题:我们访问一个网站,需要指定一个文件夹名字,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5.10、pom文件

<?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>cn.dxj1016</groupId>
  <artifactId>javaweb-01-maven01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!-- package:项目的打包方式
  jar:java应用
  war:javaweb应用
  -->
  <packaging>war</packaging>

<!-- 配置 -->
  <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>
    <!--具体依赖的jar包配置文件-->
    <!--Maven的高级之处在于:他会帮你导入这个jar包所依赖的其它jar-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <!--项目构建用的东西-->
  <build>
    <finalName>javaweb-01-maven01</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>

在这里插入图片描述

maven由于他的约定大于配置,我们之后可能遇到我们写的配置文件,无法被导出或者生效的问题,解决方案:

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

5.11、解决遇到的问题

  1. Maven 3.6.3
    在这里插入图片描述
    创建maven项目之后出现以上错误,打开日志文件查看错误信息,可以看到错误信息如下:
    在这里插入图片描述
    解决方法:降级为3.6.3版本。
    JDK和Maven不兼容的情况下,可以降级Maven或者升级JDK

  2. Tomcat闪退
    参考网站

  3. IDEA中每次都要重复配置Maven
    在IDEA中的全局默认配置中配置,Configure–>Settings
    在这里插入图片描述
    如果之前的maven版本修改了,没有修改全局配置这里的maven就会出错
    在这里插入图片描述

  4. Maven项目中Tomcat无法配置

  5. maven默认web项目中的web.xml版本问题
    在这里插入图片描述
    替换为webapp4.0版本和tomcat一致
    在这里插入图片描述

5.12、Maven仓库的使用

maven仓库

6、Servlet

6.1、Servlet简介

在这里插入图片描述

6.2、HelloServlet

在这里插入图片描述

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
metadata-complete="true">

</web-app>

Servlet、GenericServlet、HttpServlet和我们自己写的类之间关系:
在这里插入图片描述
servlet接口源码:

public interface Servlet {
//初始化
    void init(ServletConfig var1) throws ServletException;
//获得Servlet配置
    ServletConfig getServletConfig();
//Service
    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
//获得Servlet信息
    String getServletInfo();
//销毁
    void destroy();
}

GenericServlet的源码:
发现实现了Servlet接口但是没有对接口的service方法做处理。

public abstract 以上是关于javaweb的主要内容,如果未能解决你的问题,请参考以下文章

javaweb入门-----jsp概念

day06-jsp

JavaWeb - JSONProtobufThriftMessagePack 对比和开发指南

1.JSP入门

jsp页面被tomcat引擎运行的时候组装成java片段,但是这些java片段怎么没有main方法作为程序的入口啊?

JSP基础--JSP入门