Java Web从入门到实践
1. 基本概念
1.1 前言
web开发:
- web 网页
- 静态web html、css 提供给所有人看的数据,始终不会发生变化
- 动态web 提供给所有人看的数据,会发生变化 每个人在不同时间 不同地点看到的信息不同 技术栈:Servlet/JSP/ ASP
在Java中,动态web资源开发技术统称为Java Web
1.2 web应用程序
可以提供浏览器访问的程序
- a.html、b.html…多个web资源,这些web资源可以被外界访问,对外界提供服务
- URL
- 这些所有的web资源都会被放在同一个文件夹下,web应用程序->Tomcat服务器
- 一个web应用由多部分组成 
  - html、css、js
- jsp、servlet
- java程序
- jar包
- 配置文件
 
web应用程序编写完毕后,若想提供给外界访问,需要一个服务器统一管理
1.3 静态web
- *.html 如果服务器上存在这些东西,就可以直接读取
- 存在缺点:1.web页面无法动态更新,所有用户看到的都是同一个页面 2.无法和数据库交互
  
1.4 动态web
页面会动态展示
 
缺点:假如服务器动态资源出现错误,就需要重新编写后台程序
 优点:1.可以动态更新,所有用户看到的都不是同一个页面 2.可以于数据库交互(数据持久化)
2. web服务器
ASP:微软 在html中嵌入了VB的脚本
 JSP/Servlet:SUN公司主推的B/S架构,基于JAVA语言的 可以承载三高问题
 PHP:开发速度快,功能强大,跨平台,代码简单 但是无法承载大访问量
服务器是一种被动操作,用来处理用户的一些请求和给用户一些响应信息
 IIS:微软的 ASP程序 windows自带
 Tomcat:运行JSP和Servlet
3. Tomcat
3.1 安装Tomcat
1.访问官网
2.选择相应版本
 
3.下载压缩包 解压
3.2 Tomcat启动
文件夹内容:
 
启动Tomcat
 打开startup.bat文件,可以访问http://localhost:8080/
 打开shutdown.bat文件,关闭
3.3 Tomcat配置
核心配置文件:
 
可以配置启动的主机:默认主机为localhost->127.0.0.1 默认存放网站的位置为webapps
 <Host name="localhost"  appBase="webapps"
                  unpackWARs="true" autoDeploy="true">
配置启动的端口号:默认为8080
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
高难度面试题
 请你谈谈网站是如何进行访问的?
 1.输入一个域名,点击回车
 2.检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名的映射
 3.如果有,直接返回对应的IP地址 没有的话去DNS(管理全部的域名)服务器上找
3.5 发布一个web网站
将自己的网站放到服务器(Tomcat)指定的web应用的文件夹(webapps)下
 使用http://localhost:8080/manager就可以访问具体的
 
4. Http
4.1什么是Http
超文本传输协议是一个简单的请求和相应协议,通常运行在TCP上。
 超文本:图片、音乐、视频…
 端口:80
 Https:端口:443 安全的
4.2 两个时代
http1.0
- HTTP/1.0:客户端可以于web服务器连接后,只能获得一个web资源,断开连接
 http2.0:
- HTTP/1.1:客户端可以于web服务器连接后,可以获得多个web资源
4.3 Http请求
客户端->发请求->服务器
 以请求百度为例:
Request URL:https://www.baidu.com/?tn=48021271_8_hao_pg //请求地址
Request Method:GET  //请求方法 get/post
Status Code:200 OK   // 状态码 200
Remote Address:182.61.200.7: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
请求行
- 请求行中的请求方式:GET
- 请求方式:GET、POST、HEAD、DELETE、PUT… 
  - get:请求携带的参数较少,大小会限制,会在URL中显示内容,不安全但高效
- post:请求携带的参数无限制,不会在URL中显示内容,安全但不高效
 
消息头
Accept:告诉浏览器支持的数据类型
Accept-Encoding:支持那种编码格式 GBK UTF-8  GB2312
Accept-Language:告诉浏览器 它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成时是断开还是连接
4.4 Http响应
服务器->响应->客户端
 以百度响应为例:
Cache-Control:private   //缓存控制
Connection:keep-alive  //连接  
Content-Encoding:gzip //编码
Content-Type:text/html;charset=utf-8 //类型
响应体
Accept:告诉浏览器支持的数据类型
Accept-Encoding:支持那种编码格式 GBK UTF-8  GB2312
Accept-Language:告诉浏览器 它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成时是断开还是连接
响应状态码
 200:响应成功 200
 3××:重定向
 4××:资源不存在 404
 5××:服务器代码错误 500 502(网关错误)
5. Maven
在JavaWeb开发中,需要使用大量的jar包,需要手动导入
5.1 Maven项目架构管理工具
用来方便导入jar包
 核心思想:约定>配置
 Maven会规定如何编写Java代码
5.2 下载安装Maven
官网:>https://maven.apache.org/
 
下载完后解压
5.3 配置环境变量
配置如下:
-  1.在环境变量中添加 M2_HOME 变量值为maven目录下的bin目录 
-  2.在环境变量中添加 MAVEN_HOME 变量值为maven的主目录 
  
-  3.在path中添加 %MAVEN_HOME%\bin 
  
-  4.测试 在cmd中 mvn -version 
  
5.4 阿里云镜像
- 镜像(mirrors):加速下载
<mirror>    
    <id>alimaven</id>    
    <mirrorOf>*</mirrorOf>    
    <name>aliyun maven</name>    
    <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

5.5 本地仓库










