Javaweb

JavaWeb

java web

1、基本概念

1.1、前言

web开发:

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

在java中,动态web资源开发的技术统称为javaweb;

1.2、web应用程序

web应用程序:可以提供浏览器访问的程序;

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

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

1.3、静态web

  • *.htm,*.html这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以一直进行读取,通络。
  • 静态web存在的缺点:
    • web页面无法动态更新,所有用户看到的都是同一个页面
      • 轮播图,点击特效:伪动态
      • JavaScript(实际开发中,它用的最多)
      • VBScript
    • 它无法和数据库交互(数据无法持久化,用户无法交互)

1.4、动态web

  • 页面会动态显示:“web的页面展示会因人而异”
  • 缺点:
    • 加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序重新发布
      • 停机维护
  • 优点:
    • web页面可以动态更新,所有用户看到的都不是同一个页面
    • 它可以和数据库交互(数据持久化:注册,商品信息,用户信息........)

2、web服务器

2.1、技术讲解

ASP:

  • 微软:国内最早流行的就是ASP

  • 在HTML中嵌入了VB的脚本,ASP+COM

  • 在ASP开发中,基本一个页面都有几千行的业务代码,页面极其混乱

  • 维护成本高

  • c#

  • llS

PHP:

  • PHP开发速度很快,功能很强大,跨平台,代码很简单(70%,WP)

  • 无法承受大访问量的情况(局限性)

JSP/Servlet:

​ B/S:浏览器和服务器

​ C/S:客户端和服务器

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

2.2、web服务器

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

llS

微软的;ASP.........Windows中自带的

Tomcat

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,是最佳选择。Tomcat 实际上运行JSP 页面和Servlet,目前Tomcat最新版本为10.0.5。

工作3~5之后,可以尝试手写Tomcat服务器

下载Tomcat:

1.下载 or 安装

2.了解配置文件及目录结构

3.这个东西的作用

3、Tomcat

3.1、安装tomcat

Apache Tomcat® - Welcome!

image

3.2、Tomcat启动和配置

image

启动,关闭Tomcat

image

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

image

出现该界面即为成功

可能遇到的问题:

​ 1.java环境变量没有配置

​ 2.闪退问题:需要配置兼容性

​ 3.乱码问题:配置文件中设置

3.3、配置

image

可以配置启动的端口号

  • Tomcat的默认端口号为:8080
  • mysql:3306
  • http:80
  • https:443

可以配置主机的名称

  • 默认的主机名为:localhost->127.0.0.1
  • 默认网站应用存放的位置为:webapps

面试题

请你谈谈网站是如何进行访问的

1.输入一个域名:回车

2.检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;

​ 1:有:直接返回对应的IP地址,这个地址中,有我们需要访问的web程序,可以直接访问

​ 2:没有:去DNS服务器找,找到的话就返回,找不到就返回找不到;

image

3.4、发布一个web网站

不会就先模仿

  • 将自己写的网站,放到服务器(Tomcat)中指定的web应用的文件夹(webapps)下,就可以访问了。

网站应该有的结构:

image

4、Http

4.1、什么是http

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

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

Https:安全的

  • 443

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
Remote(远程) Address: 14.215.177.39:443

1、请求行

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

2、消息头

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

4.4、http响应

  • 服务器---响应---客户端

百度:

Cache-Control: private     缓存控制
Connection: keep-alive     连接
Content-Encoding: gzip     编码
Content-Type: text/html;charset=utf-8   类型

1、响应体

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

2、响应状态码

200:请求响应成功

3xx:请求重定向

404:找不到资源

5xx:服务器代码错误

面试题

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

5、Maven

为什么要学这个技术

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

2、如何能够让一个东西自动帮我们导入和配置这个jar包

​ 由此,Maven诞生了

5.1、Maven项目架构管理工具

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

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

  • 有约束,不要去违反

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

5.2、下载安装Maven

Maven – Welcome to Apache Maven

image

image

下载完成之后,解压即可。

5.3、配置环境变量

在我们的系统环境变量中

配置如下配置:

  • M2_HOME maven目录下的bin目录

  • MAVEN_HOME maven的目录

  • 在系统的path中配置 %MAVEN_HOME%\bin

image

测试Maven是否安装成功,保证必须配置完毕

5.4、阿里云镜像

  • 镜像:mirrors

    • 作用:加速我们的下载
  • 国内建议使用阿里云的镜像

修改maven根目录下的conf文件夹中的setting.xml文件,添加内容如下:

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

5.5、本地仓库

在本地的仓库,远程仓库;

建立一个仓库:localRepository

<localRepository>D:\JAVA\安装\maven\apache-maven-3.6.3\repository</localRepository>

5.6、在IDEA中使用Maven

1、启动IDEA

2、创建一个Mavenweb项目

image

image

image

image

3、等待项目加载

image

4、观察Maven仓库

5、IDEA中的Maven设置

image

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

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

image

image

这个只有web应用下才会有

image

5.8、标记文件夹功能

image

5.9、在IDEA中配置Tomcat

image

image

image

解决警告问题

为什么会有这个问题:我们访问一个网站,需要指定一个文件夹名字。

image

image

启动Tomcat

image

5.10、pom文件

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

image

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

  <name>com.lc 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>
    <!--具体依赖的jar包配置文件-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <!-- 项目构建用的东西-->
  <build>
    <finalName>com.lc</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>

5.11、IDEA操作

image

posted @ 2021-05-17 23:09  飞翔奥尔良烤翅  阅读(56)  评论(0)    收藏  举报