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>