javaweb基本概念 web应用程序 静态web 动态web 静态页面和动态页面的区别 web服务器 技术讲解 web服务器 Tomcat 安装tomcat(网上搜教程) Tomcat启动和配置 tomcat配置 发布一个web网站 Http 什么是HTTP http的两个时代 Http请求 请求行 消息头 Http响应 响应体 响应状态码 Maven Maven项目架构管理工具 下载安装并配置Maven 在IDEA中使用Maven 创建一个普通的Maven项目 idea标记文件夹功能 在 IDEA中配置Tomcat pom文件 IDEA操作 解决maven遇到的问题 Maven仓库的使用

目录

  • 基本概念
  • 前言
  • web应用程序
  • 静态web
  • 动态web
  • 静态页面和动态页面的区别
  • web服务器
  • 技术讲解
  • web服务器
  • Tomcat
  • 安装tomcat(网上搜教程)
  • Tomcat启动和配置
  • 配置
  • 发布一个web网站
  • Http
  • 什么是HTTP
  • 两个时代
  • Http请求
  • 请求行
  • 消息头
  • Http响应
  • 响应体
  • 响应状态码
  • Maven
  • Maven项目架构管理工具
  • 下载安装并配置Maven
  • 在IDEA中使用Maven
  • 创建一个普通的Maven项目
  • 标记文件夹功能
  • 在 IDEA中配置Tomcat
  • pom文件
  • IDEA操作
  • 解决遇到的问题
  • Maven仓库的使用

基本概念

前言

web开发:

web,网页的意思,www.baidu.com

  • 静态web
    html,sss
    提供给所有人看的数据始终不会发生变化!
  • 动态web
    淘宝,几乎是所有的网站;
    提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同!
    技术栈:Servlet/ISP,ASP,PHP

web应用程序

可以提供浏览器访问的程序;

  • a.html、b.html.….多个web资源,这些web资源可以被外界访问,对外界提供服务;
  • 我们能访问到的任何一个页面或者资源,都存在于这个世界的某一个角落的计算机上。
  • URL
  • 这个统一的web资源会被放在同一个文件夹下,web应用程序——>Tomcat:服务器
  • 一个web应用由多部分组成(静态web,动态web)
  • html,sss,is
  • jsp,servlet
  • Java程序
  • jar包
  • 配置文件(Properties)

Web应用程序编写完毕后,若想提供给外界访问;需费一个服务蔬来统一管理

静态web

  • *.htm, *.html这些都是网页的后缀、如果服务器上一直存在这些东四,我们就可以直接进行读取、需要网络;

静态web存在的缺点

  • Web页面无法动态更新,所有用户看到都是同一个页面
  • 它无法和数据库交互(数据无法持久化,用户无法交互)

动态web

java 服务 wrapper java 服务端准备就绪_服务器

缺点:

  • 加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布;
  • 停机维护

优点:

  • Web页面可以动态更新,所有用户看到都不是同一个页面
  • 它可以与数据库交互 (数据持久化:注册,商品信息,用户信息…)

静态页面和动态页面的区别

  • 工作原理不同。
  • 静态
  • 动态
  • 交互性差异
  • 静态
    以展示为主,用户仅仅是通过页面获取相应的内容
  • 动态
    允许用户主动参与到页面之中,例如登录功能、查询功能、定制化页面内容等等
  • 更新维护方式不同
    修改静态页面的内容,需要找到此页面的源文件并修改源文件的代码。当网站内容信息非常大时,维护成本大
    动态页面以数据库技术为基础,当需要修改内容时,可以直接通过数据库修改,而不需要调整页面的源文件。降低网站维护工作量,大幅提高网站运营效率。
  • 响应速度不同
    静态页面内容是固定的,服务器的响应时间较快
    动态页面需要根据需求从数据库中调取相应的数据“组装”成为用户需求的页面,因此其响应速度会比较慢,但几乎可以忽略不计。
  • 访问地址
    静态页面的每个网页都有一个固定的URL,并且页面以.htm/.html/.shtml/.xml常见形式作为后缀,而且不包含“?”,这样的链接更有利于搜索引擎抓取并且收录。
    动态页面的URL包含“?”,并且一般以.asp/.php/.jsp等扩展名结尾。当然我们并不能够直接通过一个网页的URL来判断这个页面是静态页面还是动态页面。这是由于搜索引擎一般不会从一个网站的数据库中访问全部网页,因此动态页面中“?”对搜索引擎检索存在一定的问题。很多企业为了让自己网站有更多的收录,就会将动态页面的URL进行伪静态化。

web服务器

技术讲解

ASP:

  • 微软
  • 在HTML中嵌入了VB的脚本,ASP+DOM
  • 基本一个页面都有几千行的业务代码,页面极其换乱
  • 维护成本高!
  • C#
  • IIS

php:

  • PHP开发速度很快,功能很强大,跨平台,代码很简单 (70% , WP)
  • 无法承载大访问量的情况(局限性)

**JSP/Servlet : **

B/S:浏览器和服务器

C/S: 客户端和服务器

  • sun公司主推的B/S架构
  • 基于Java语言的 (所有的大公司,或者一些开源的组件,都是用Java写的)
  • 可以承载三高问题带来的影响;高并发,高可用,高性能
  • 语法像ASP , ASP——转——>JSP , 加强市场强度;

web服务器

服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息;

IIS(Internet Information Service(Internet信息服务))

微软的; ASP…,Windows中自带的

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,因为Tomcat 技术先进、性能稳定,而且免费且开源,是目前比较流行的Web 应用服务器。

Tomcat 服务器属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

Tomcat 实际上运行JSP 页面和Servlet。

Tomcat

安装tomcat(网上搜教程)

tomcat官网:http://tomcat.apache.org/

Tomcat启动和配置

java 服务 wrapper java 服务端准备就绪_服务器_02

启动、关闭Tomcat

java 服务 wrapper java 服务端准备就绪_客户端_03

访问测试:http://localhost:8080/

可能遇到的问题:

  1. Java环境变量没有配置
  2. 闪退问题:需要配置兼容性
  3. 乱码问题:配置文件中设置

配置

java 服务 wrapper java 服务端准备就绪_客户端_04

可以配置启动的端口号

  • tomcat的默认端口号为:8080
  • mysql:3306
  • http:80
  • https:443
<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

可以配置主机的名称

  • 默认的主机名为:localhost->127.0.0.1
  • 默认网站应用存放的位置为:webapps
<Host name="www.yyx.com"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">

发布一个web网站

  • 将自己写的网站,放到服务器(Tomcat)中指定的web应用的文件夹(webapps)下,就可以访问了
  • 网站结构
--webapps :Tomcat服务器的web目录
	-ROOT
	-kuangstudy :网站的目录名
		- WEB-INF
			-classes : java程序
			-lib:web应用所依赖的jar包
			-web.xml :网站配置文件
		- index.html 默认的首页
		- static 
            -css
            	-style.css
            -js
            -img
         -.....

HTTP协议 : 面试

Maven:构建工具

  • Maven安装包

Servlet 入门

  • HelloWorld!
  • Servlet配置
  • 原理

Http

什么是HTTP

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

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

Https:安全的

  • 443

两个时代

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

Http请求

客户端———发请求(Request)———>服务器

百度

Request URL:https://www.baidu.com/   请求地址
Request Method:GET    get方法/post方法
Status Code:200 OK    状态码:200
Remote(远程) Address:14.215.177.39:443
Accept:text/html  
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9    语言
Cache-Control:max-age=0
Connection:keep-alive
Cookie:cookie代码
Host: www.baidu.com

请求行

Request URL: https://www.baidu.com/
Request Method: GET
  • 请求行中的请求方式:GET
  • 请求方式:Get,Post,HEAD, DELETE, PUT, TRACT…
  • get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
  • post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。

消息头

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

Http响应

百度

Cache-Control:private    缓存控制
Connection:Keep-Alive    连接
Content-Encoding:gzip    编码
Content-Type:text/html   类型

响应体

Accept:告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式  GBK   UTF-8   GB2312  ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机..../.
Refresh:告诉客户端,多久刷新一次;
Location:让网页重新定位;

响应状态码

  • 1xx-信息提示:这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1xx响应。
    100-继续。
    101-切换协议。
  • 2xx-成功:这类状态代码表明服务器成功地接受了客户端请求。
    200-确定。客户端请求已成功。
    201-已创建。
    202-已接受。
    203-非权威性信息。
    204-无内容。
    205-重置内容。
    206-部分内容。
  • 3xx-重定向:客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。
    301-对象已永久移走,即永久重定向。
    302-对象已临时移动。
    304-未修改。
    307-临时重定向。
  • 4xx-客户端错误:例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。
    400-错误的请求。
    401-访问被拒绝。IIS定义了许多不同的401错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在IIS日志中显示:
    401.1-登录失败。
    401.2-服务器配置导致登录失败。
    401.3-由于ACL对资源的限制而未获得授权。
    401.4-筛选器授权失败。
    401.5-ISAPI/CGI应用程序授权失败。
    401.7–访问被Web服务器上的URL授权策略拒绝。这个错误代码为IIS6.0所专用。
    403-禁止访问:IIS定义了许多不同的403错误,它们指明更为具体的错误原因:
    403.1-执行访问被禁止。
    403.2-读访问被禁止。
    403.3-写访问被禁止。
    403.4-要求SSL。
    403.5-要求SSL128。
    403.6-IP地址被拒绝。
    403.7-要求客户端证书。
    403.8-站点访问被拒绝。
    403.9-用户数过多。
    403.10-配置无效。
    403.11-密码更改。
    403.12-拒绝访问映射表。
    403.13-客户端证书被吊销。
    403.14-拒绝目录列表。
    403.15-超出客户端访问许可。
    403.16-客户端证书不受信任或无效。
    403.17-客户端证书已过期或尚未生效。
    403.18-在当前的应用程序池中不能执行所请求的URL。这个错误代码为IIS6.0所专用。
    403.19-不能为这个应用程序池中的客户端执行CGI。这个错误代码为IIS6.0所专用。
    403.20-Passport登录失败。这个错误代码为IIS6.0所专用。
    404-文件或资源未找到。
    404.0-(无)–没有找到文件或目录。
    404.1-无法在所请求的端口上访问Web站点。
    404.2-Web服务扩展锁定策略阻止本请求。
    404.3-MIME映射策略阻止本请求。
    405-用来访问本页面的HTTP谓词不被允许(方法不被允许)
    406-客户端浏览器不接受所请求页面的MIME类型。
    407-要求进行代理身份验证。
    412-前提条件失败。
    413–请求实体太大。
    414-请求URI太长。
    415–不支持的媒体类型。
    416–所请求的范围无法满足。
    417–执行失败。
    423–锁定的错误。
  • 5xx-服务器错误:服务器由于遇到错误而不能完成该请求。
    500-内部服务器错误。
    500.12-应用程序正忙于在Web服务器上重新启动。
    500.13-Web服务器太忙。
    500.15-不允许直接请求Global.asa。
    500.16–UNC授权凭据不正确。这个错误代码为IIS6.0所专用。
    500.18–URL授权存储不能打开。这个错误代码为IIS6.0所专用。
    500.100-内部ASP错误。
    501-页眉值指定了未实现的配置。
    502-Web服务器用作网关或代理服务器时收到了无效响应。
    502.1-CGI应用程序超时。
    502.2-CGI应用程序出错。application.
    503-服务不可用。这个错误代码为IIS6.0所专用。
    504-网关超时。
    505-HTTP版本不受支持。

Maven

在Javaweb开发中,需要使用大量的jar包,我们手动去导入;

Maven能够自动帮我导入和配置这个jar包。

Maven项目架构管理工具

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

Maven会规定好我们该如何去编写Java代码,必须要按照这个规范来;

下载安装并配置Maven

  • M2_HOME maven目录下的bin目录
  • MAVEN_HOME maven的目录
  • 在系统的path中配置%MAVEN_HOME%\bin
  • 设置阿里云镜像
  • maven文件夹下conf/settings.xml
  • 镜像:mirrors
  • 作用:加速我们的下载
  • 国内建议使用阿里云的镜像
<mirror>
    <id>nexus-aliyun</id>  
    <mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>  
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url> 
</mirror>
  • 本地仓库
    maven有本地仓库和远程仓库;
    建立一个本地仓库(同样在settings.xml)
<localRepository>E:\maven\apache-maven-3.6.3\maven-repo</localRepository>

在IDEA中使用Maven

  1. 创建maven项目

java 服务 wrapper java 服务端准备就绪_客户端_05

java 服务 wrapper java 服务端准备就绪_maven_06

java 服务 wrapper java 服务端准备就绪_客户端_07

java 服务 wrapper java 服务端准备就绪_java 服务 wrapper_08

  1. 等待项目初始化完毕
    右边是自动导入,pom.xml文件中有改动时就会自动引入jar包
    左边import change是手动导入,每次pom文件改动都需要确认一下

java 服务 wrapper java 服务端准备就绪_服务器_09

  1. IDEA中的Maven设置
    注意:IDEA项目创建成功后,看一眼Maven的配置

java 服务 wrapper java 服务端准备就绪_maven_10

java 服务 wrapper java 服务端准备就绪_客户端_11

创建一个普通的Maven项目

java 服务 wrapper java 服务端准备就绪_服务器_12

java 服务 wrapper java 服务端准备就绪_服务器_13

下面这个只有在Web应用下才会有!

java 服务 wrapper java 服务端准备就绪_maven_14

标记文件夹功能

java 服务 wrapper java 服务端准备就绪_服务器_15

java 服务 wrapper java 服务端准备就绪_服务器_16

java 服务 wrapper java 服务端准备就绪_服务器_17

java 服务 wrapper java 服务端准备就绪_客户端_18

在 IDEA中配置Tomcat

java 服务 wrapper java 服务端准备就绪_java 服务 wrapper_19

java 服务 wrapper java 服务端准备就绪_客户端_20

java 服务 wrapper java 服务端准备就绪_maven_21

java 服务 wrapper java 服务端准备就绪_java 服务 wrapper_22

解决警告问题

必须要的配置:为什么会有这个问题:我们访问一个网站,需要指定一个文件夹名字;

java 服务 wrapper java 服务端准备就绪_服务器_23

java 服务 wrapper java 服务端准备就绪_maven_24

java 服务 wrapper java 服务端准备就绪_客户端_25

java 服务 wrapper java 服务端准备就绪_java 服务 wrapper_26

pom文件

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

java 服务 wrapper java 服务端准备就绪_服务器_27

<?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>

  <!--这里就是我们刚才配置的G A V-->
  <groupId>com.kuang</groupId>
  <artifactId>javaweb-01-maven</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.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <!--项目依赖-->
  <dependencies>
    <!--具体依赖的jar包配置文件-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </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>

java 服务 wrapper java 服务端准备就绪_客户端_28

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

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

IDEA操作

java 服务 wrapper java 服务端准备就绪_客户端_29

java 服务 wrapper java 服务端准备就绪_java 服务 wrapper_30

解决遇到的问题

  1. Maven 3.6.2
    解决方法:降级为3.6.1

java 服务 wrapper java 服务端准备就绪_服务器_31

  1. IDEA中每次都要重复配置Maven
    在IDEA中的全局默认配置中去配置

java 服务 wrapper java 服务端准备就绪_maven_32

java 服务 wrapper java 服务端准备就绪_客户端_33

  1. Maven项目中Tomcat无法配置
  2. maven默认web项目中的web.xml版本问题

java 服务 wrapper java 服务端准备就绪_客户端_34

替换为webapp4.0版本和tomcat一致

<?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>

Maven仓库的使用

到maven去搜索需要的jar包,选择我们需要的点进去

地址:https://mvnrepository.com/

java 服务 wrapper java 服务端准备就绪_服务器_35

java 服务 wrapper java 服务端准备就绪_客户端_36

找到需要的版本(一般找最新和最多人用的,避免用的时候出现问题)

java 服务 wrapper java 服务端准备就绪_客户端_37

然后点进去找到它的依赖代码,复制到pom文件里,导入就可以了

java 服务 wrapper java 服务端准备就绪_maven_38