JavaWeb
一、基本概念
1.1前言
web开发
-
web:网页端
-
静态web
-
html CSS
-
提供给所有人看的数据始终不会发生变化
-
-
动态web
- 提供给所有人看的数据始终不会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同;
- 网站基本都是动态
- 技术栈:Servlet/JSP ASP PHP
在java中,动态web资源开发的技术统称为javaWeb
1.2 web应用程序
web应用程序:可以提供浏览器访问的程序;
- 多个web资源可以被外界访问,对外界提供服务
- 你们能访问到的任何一个页面或者资源,都存在于这个世界的某一个角落的计算机上
- URL 统一资源定位符
- 这个统一的web资源会被放在同一个文件夹下,web应用程序——>Tomcat (服务器)
- 一个web应用由多部分组成
- html css js
- jsp servlet
- java程序
- jar包
- 配制文文件
web应用程序编写完毕后,想要让外界访问:需要一个服务器来统一管理;
1.3静态web
-
*.htm, *.html这些都是网页后缀,如果服务器上一直存在这些东西,我可以就可以直接进行读取
-
静态web存在的缺点
-
Web页面无法动态更新,所有用户看到都是同一个页面
轮播图,点击特效,做了伪动态,用JavaScript技术实现
-
它无法和数据进行交互,数据库无法持久化,用户无法交互
-
1.4动态web
页面会动态展示:web的页面展示的效果因人而异
缺点:加入服务器的动态web资源出现了错误,我们需要重写编写我们的后台程序,重新发布; 停机维护
优点:web页面可以动态更新,所有用户看到的都不是同一个页面,它可以进行数据库交互,做到数据持久化
二、web服务器
2.1技术讲解
ASP:
- 微软:国内最早流行的就是ASP;
- 在HTML中嵌入了VB脚本,ASP+COM;
- 在ASP开发中,页面可以写java代码;页面代码混乱;
- 维护成本高
- IIS C#
PHP:
- PHP开发速度很快,功能强大,跨平台,代码简单
- 无法承载大访问量的情况(局限性)
JSP/Servlet:B/S浏览器和服务器 C/S客户端和服务器
- sun公司主推的BS架构
- 基于java语言所有的大公司或者一些开源的组件,都是用java写的
- 可以承载三高问题来的影响 高性能 高并发 高可用
- 语法像ASP,ASP—>JSP,加强市场强度;
2.2 web服务器
服务器是一种被动的操作,用户处理用户的一些请求和给用户一些响应信息;
**IIS ** 微软服务器 ASP在Windows中自带的
Tomcat 服务器 面向百度编程
下载tomcat:
- 安装or解压
- 了解配制文件及目录结构
- 这个东西的作用
三、Tomcat
3.1安装tomcat
tomcat官网:https://tomcat.apache.org/download-90.cgi
tar.gz //linux下的安装包
64-bit Windows zip //windows64位环境下
3.2 Tomcat启动和配置
文件夹作用:
bin //启动,关闭的脚本文件
conf //配制
lib //依赖的jar包
logs //日志
webapps //发存放网站的
sercer.xml //服务器核心配置文件
C:\Windows\System32\drivers\etc //修改服务器的访问链接(自己选择)
配置环境变量
//win7系统
CATALINA_HOME //变量名
E:\apache-tomcat-8.5.43 //变量值 tomcat的安装路径
Path //变量名
%CATALINA_HOME%\bin //直接加变量值中
localhost:8080 //测试访问
可能遇到的问题
- java环境变量没有配置
- 闪退问题:需要配置兼容性
- 乱码问题:配置文件中设置
配置启动的端口号
- tomcat的默认端口号为 8080
- mysql 3306
- http 80
- https 443
- sqlServer 1433
- oracle 1521
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
配置主机的名称
- 默认的主机名为 localhost---->127.0.0.1
- 默认网站应用存放的位置为:webapps
<Host name="www.dyt.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
高难度面试题
请你谈谈网站是如何进行访问的!
-
输入域名:回车、
-
检查本机的 C:\Windows\System32\drivers\etc\host配置文件下有没有这个域名映射
-
有:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问
127.0.0.1 www.dyt.com
-
没有 去DNS服务器找,找到就返回,找不到就返回找不到
-
3.3 发布一个web网站
将自己写的网站放到服务器中指定的web应用的文件夹(webapps)下,就可以访问了。
//网站结构 docs //tomcat文档 examples //例子 localhost:8080/docs localhost:8080/examples/
--webapps: Tomcat服务器的web目录
-ROOT
-dyt:网站目录名
-WEB-INF
-classes:java程序
-lib :web应用所依赖的jar包
-web.xml :网站的配置文件
-index.html 默认的首页
-static
-css
-js
-img
四、Http
4.1 什么是HTTP
超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上
- 文本:html、字符串
- 超文本:图片、音乐、视频、定位、地图
Https:安全的 默认端口443
4.2 两个时代
- http1.0
- HTTP/1.0 客户端可以与web服务器连接后,只能获得一个web资源,断开连接
- http2.0
- HTTP/1.1 客户端可以与web服务器连接后,可以获得多个web资源
4.3 Http请求
-
客户端-----发送请求------服务器
Request URL: //请求地址 Request Method: POST //get方法、post方法 Status Code: 200 //状态码 Remote(远程) Address: 221.204.237.11:9024
-
请求行
- 请求方式:get/post
- get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
- post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效
- 请求方式:get/post
-
消息头
Accept: 告诉浏览器,它所支持的数据类型 Accept-Encoding: 编码格式 GBK UTF-8 Accept-Language: 告诉浏览器,它的语言环境 Cache-Control 缓存控制 Connection 告诉浏览器,请求完成是断开还是保持连接 HOST 主机
4.4 Http响应
- 服务器------响应-------客户端
Content-Type: application/json;charset=UTF-8 //类型
Content-Encoding: chunked //编码
Connection: keep-alive //连接
Cache-Control:private //缓存控制
-
响应体
Accept: 告诉浏览器,它所支持的数据类型 Accept-Encoding: 编码格式 GBK UTF-8 Accept-Language: 告诉浏览器,它的语言环境 Cache-Control 缓存控制 Connection 告诉浏览器,请求完成是断开还是保持连接 HOST 主机 Refresh 告诉客户端多久刷新一次 Location 让网页重新定位
-
响应状态码
200:请求响应成功
3xx:请求重定向
404:找不到资源
500:服务器代码错误 502:网关错误
常见面试题:
当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?
五、Maven
5.1 Maven项目架构管理工具
目前用来导入jar包的
Maven的核心思想:约定大于配置
- 有约束,不要去违反
Maven会规定好你该如何去编写我们的java代码,必须要按照这个规范来;
5.2 下载安装Maven
官网:http://maven.apache.org/
仓库地址:https://mvnrepository.com/
5.3 环境配置
- M2_HOME maven目录下的bin目录
- MAVEN_HOME maven的目录
- 在系统的path中配置 %MAVEN_HOME%\bin
- 测试是否配制成功 mvn -version
5.4 阿里云镜像
-
镜像 mirror
-
作用:加速下载
-
国内建议使用阿里云的镜像
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> 两种 <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
5.5 本地仓库
创建一个本地仓库 localRepository
<localRepository>E:\apache\maven-repository</localRepository>
5.6 在IDEA中使用Maven
-
启动IDEA
-
创建一个MavenWeb项目
3. 等待项目创建成功
-
IDEA中的Maven设置
- IDEA项目创建成功后,看一眼Maven的配置
- IDEA项目创建成功后,看一眼Maven的配置
-
创建完毕
5.7 创建一个普通的Maven项目
这个只有在web应用中才会有
5.8 标记文件夹功能
第二种方式
5.9 在IDEA中配置Tomcat
解决警告问题
为什么会有这个问题:我们访问一个网站,需要指定一个文件夹名字;
启动tomcat
5.10 pom文件
pom.xml是maven的核心配置文件
<?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>com.gdh</groupId>
<artifactId>javaweb-01-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!--项目的打包方式 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>
<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>
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 IDEA操作
5.12 解决IDEA遇到的问题
- 每次创建项目都要配制Maven
-
第一步
-
第二步 设置自己安装maven目录地址
2. maven默认web项目中的web.xml版本问题//IDEA中默认生产的文件 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> </web-app>
解决办法:替换为webapp版本和tomcat一直