JavaWeb
1、基本概念
1.1、前言
-
web也就是网页的意思,如www.baidu.com
-
静态web
- html,css
- 提供给所有人看的数据始终不会发生改变
-
动态web
- 比如淘宝,几乎所有网站
- 提供给所有人看的数据始终在发生改变,每个人在不同时间地点获取的信息不同
- 技术栈:Selvet/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
-
x.htm,X.html都是页面的后缀
-
客户端–请求(network)–>web Service–服务器–>index.html
-
index.html–>web Service–响应Response–>客户端
-
-
静态web存在的缺点
- web页面无法动态更新,所有用户看到的都是同一个页面
- 轮番图,点击特效,伪动态
- javaScript【开发常用】
- VBscript
- 他无法和数据库交互(数据无法持久化,用户无法交互)
- web页面无法动态更新,所有用户看到的都是同一个页面
1.4、动态web
-
页面会动态展示:”展示效果随着每个人每个时间地点的发生,打开的web也会发生改变“
-
客户端–请求(network)–>web Service–服务器–>index.html
-
index.html–>web Service–响应Response–>客户端
-
在上述的基础上加上动态的服务
-
请求的时候先来到WebServer Plugin–动态资源&&静态资源–>动态web资源jsp/Servlet&&静态资源web Service
-
-
缺点
- 加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布
- 此时需要停机维护
- 加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布
-
优点
-
web页面可以动态更新,所有用户看到都不是同一个页面
-
它可以与数据库交互(数据持久化:注册登录页面的所有信息)
动态web资源jsp/Servlet–jdbc–>数据库
-
2、web服务器
2.1、技术讲解
ASP:
-
微软:国内最流行的就是ASP;
-
在html中嵌入VB的脚本,ASP+COM;
-
在ASP开发中,基本一个页面都会有几千行代码
-
维护成本极高
-
c#
<h1> <% System.out.println("hello"); /%> </h1>
PHP:
- 开发速度很快,功能很强大,跨平台,代码简单
- 无法承载大访问量的情况
JSP/Servlet
- B/S:浏览和服务器
- C/S:客户端和服务器
- 基于java语言的所有公司,或者开源的组件
- 可以承载三高问题带来的影响(高并发,高可用,高性能)
- 语法像ASP,加强市场强度
2.2、web服务器
服务器是一种被动操作,用来处理用户的一些请求和用户一些响应信息
LLS
微软的;ASP,Window自带的
Tomcat(免费)
实际上就是运行了JSP页面和Servlet
3、Tomcat详解
3.1、安装tomcat
Tomcat官网:http://tomcat.apache.org/
安装教程参考https://www.cnblogs.com/wangshunli/p/4230382.html
3.2、Tomcat启动和配置
文件夹的作用
-
bin:启动和关闭的脚本文件
-
conf:配置
-
lib:依赖的jar包
-
logs:日志
-
webapps:发存放网站
启动、关闭Tomcat
- shutdown.bat停止
- startup.bat启动
访问测试:http://localhost:8080/
访问不了可能发生的问题:
- java环境没有配置
- 闪退问题,需要配置兼容性
- 乱码问题:配置文件中设置
3.3、配置
可以配置启动的端口号
- tomcat的默认端口号为:8080
- MySQL:3306
- http:80
- https:443
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="84443"/>
可以配置主机名
- 默认的主机名为:localhost地址127.0.0.1
- 默认网站应用存放的位置:webapps
<Host name="www.kongkong.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
面试题
请你谈谈网站是如何进行访问的!
- 输入一个域名:回车
- 检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;
- 有的话:直接放回对应的IP地址,这个地址有可以访问的web程序
- 没有的话:去DNS服务器找,找到就返回,反之
3.4、发布一个web网站
将自己写的网站,放在Tomcat中指定的web文件夹webapps下,就可以访问网站应该有的结构了
--webapps:Tomcat服务器的web目录
-ROOT
-konkong:网站的目录名
-WEB-INF
-classes:java程序
-lib:web应用所要依赖的jar包
-web.xml:网站配置文件
-index.html默认的首页
-statics
-css
-style.css
-js
-img
........
4、HTTP详解
4.1、什么是HTTP
HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上
- 文本:html,字符串
- 超文本:图片、音乐、视频
- 80
Https:安全的
- 443
4.2、两个时代
- http1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开链接
- http1.2:客户端可以与web服务器连接后,可以获取多个web
4.3、HTTP请求
- 客户端–发送请求(request)–服务器
Request URL: https://www.baidu.com/ 请求地址
Request Method: GET
Status Code: 307 Internal Redirect 状态码
Accept: text/html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9 语言
Connection: keep-alive
请求行
- 请求中的请求方式:GET
- 请求方式:GET,POST,HEAD,DELETE,PUT
- get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
- post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效
请求头
Accept: text/html 告诉浏览器支持的数据类型
Accept-Encoding: gzip, deflate, br 编码格式
Accept-Language: zh-CN,zh;q=0.9 语言
Connection: keep-alive 请求状态
Host: 主机
4.4、响应
- 服务器–响应–客户端
Cache-Control: private 缓存控制
Connection: keep-alive 链接
Content-Encoding: gzip 编码
Content-Type: text/html;charset=utf-8 类型
响应体
Accept: text/html 告诉浏览器支持的数据类型
Accept-Encoding: gzip, deflate, br 编码格式
Accept-Language: zh-CN,zh;q=0.9 语言
Connection: keep-alive 请求状态
Host: 主机
Refrush: 告诉客户端多久刷新一次
Location:让网页重新定位
响应码
200:请求响应成功
3xx:请求重定向304
- 重新到新位置去
4xx:找不到资源 404
- 资源不存在
5xx:服务器代码错误 500 502:网关错误
常见面试题
当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?
5、Maven
5.1、为什么需要这种技术
- 在javaweb开发中,需要用大量的jar包,我们手动导入;
- 如何能够让一个东西自动帮我们导入和配置jar包,也就是我们现在所要学习的Maven
5.2、Maven项目架构管理工具
核心思想:约定大于配置
- 有约束,不要违反
5.3、下载安装Maven
官网:http://maven.apache.org/
下载后解压即可
友情提示:下载好的所有环境放在同一个文件夹下面,方便管理
5.4、配置环境变量
我的电脑右键–>属性–>环境变量配置如下:
-
M2_HOME maven目录下的bin目录
-
MAVEN_HOME maven的目录
-
path配置中配置%MAVEN_HOME%\bin
-
输入mvn -version测试Maven安装是否成功
出现版本号即为成功
5.5、本地仓库
建立一个本地仓库(不需要每次去下载,因为下载很慢)
建立一个本地仓库 localRepository
5.6、在IDEA中使用Maven
-
新建一个项目的时候,点击maven,勾选选项后,可以选择自己需要的依赖包
-
命名包名,最好是用结构com.xxx(这里是你自取).包名
类似与www.baidu.com的倒叙结构com.baidu.www
5.7、IDEA配置Tomcat
在运行的地方点击配置,点+号按钮,找到Tomcat,选择local(本地)
-
解决警告问题
为什么会有这个问题:访问一个网站,需要制定一个文件夹名字
5.8、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>youxaing</groupId>
<artifactId>youxiang</artifactId>
<version>1.0-SNAPSHOT</version>
<!--依赖包-->
<dependencies>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
</dependencies>
</project>
5.9、maven仓库
官网:https://mvnrepository.com/
直接搜索想要的依赖包如何复制到pom.xml文件下即可
6、Servlet
6.1、Servlet简介
- Servlet就是sun公司开发动态web的一门技术
- sun在这些API提供一个接口:Servlet,如果想要开发一个Servlet程序,只需要完成两个小步骤
- 编写一个类,实现Servlet接口
- 把开发好的Java类部署到web服务器中
6.2、HelloServlet
-
构建一个maven项目,可以将其src目录删掉,以后我们的学习就在这个项目里面建立model,这个空的工程就是maven主工程
-
关于Maven父子工程的理解
父项目中
<modules> <module>javaweb</module> </modules>
子项目中
<parent> <groupId>HelloServlet</groupId