JavaWeb(一)
一 基本概念
1.1 WEB开发
web,在网页设计中我们称为网页的意思。现广泛译作网络、互联网等技术领域。表现为三种形式,即超文本(hypertext)、超媒体(hypermedia)、超文本传输协议(HTTP)等。web资源分为:
- 静态web : 如html页面,供人们浏览的数据始终不变
- 动态web : web页面中供人们浏览的数据是始终变化的,不同时间看到的内容各不相同
技术栈
静态web开发技术:html
动态web开发技术:JSP/Servlet, ASP, PHP
在Java中,动态web资源开发的技术统称为JavaWeb;
1.2 WEB 应用程序
WEB应用程序指供浏览器访问的程序。有a.html 、b.html……多个web资源,这多个web资源用于对外提供服务,把这多个web资源放在一个目录中,以组成一个web应用(或web应用程序)
一个web应用由多个静态web资源和动态web资源组成,如:html、css、js文件,Jsp文件、java程序、支持jar包、配置文件等等。
Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射
1.3 静态WEB
*.htm, *.html,这些都是网页的后缀,现在从web服务器中读取这些内容,意味着把网页内容通过服务器展现给用户;
客户端使用WEB浏览器,经过网络连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器需要得到哪个页面,所有的请求交给WEB服务器,之后WEB服务器根据用户的需要,从文件系统取出内容。之后通过WEB服务器返回给客户端.
- 静态web的缺点
- Web页面无法动态更新,所有用户看到都是同一个页面,javaSCript可实现web客户客户端动态效果
- 静态WEB无法连接数据库,无法实现和用户的交互
1.4 动态WEB
Web的页面展示的效果因人而异
程序使用客户端和服务端,客户端使用浏览器,通过网络连接到服务器上,使用HTTP协议发起请求,所有请求都先经过一个WEB Server Plugin(服务器插件),此插件用于区分是请求的是静态资源还是动态资源。
如果WEB Server Plugin发现客户端请求的是静态资源,则直接返回给web服务器,再从文件系统中取出内容,发给客户端;
如果WEB Server Plugin发现客户端请求的是动态资源,则先将请求转交给web容器,在容器中连接数据库,从数据库中取出内容交给WEB服务器,而后发客户端;
-
动态web缺点:
- 加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布;停机维护
-
动态web优点:
-
Web页面可以动态更新,所有用户看到都不是同一个页面
-
它可以与数据库交互 (数据持久化:注册,商品信息,用户信息…)
-
1.5 动态WEB应用的实现手段
- Microsoft ASP、ASP.NET
- PHP
- JAVA Servlet/JSP
1.ASP
- 微软:国内最早流行的就是ASP;
- 在HTML中嵌入了VB的脚本, ASP + COM;
- 在ASP开发中,基本一个页面都有几千行的业务代码,页面极其换乱
- 维护成本高!
2. PHP
- PHP开发速度很快,功能很强大,跨平台,代码很简单 (70% , WP)
- 无法承载大访问量的情况(局限性)
3. JAVA Servlet/JSP
B/S:浏览和服务器
C/S: 客户端和服务器
- sun公司主推的B/S架构
- 基于Java语言的 (所有的大公司,或者一些开源的组件,都是用Java写的)
- 可以承载三高问题带来的影响;
- JSP编写效果与ASP是非常相似的。很方便地使一些ASP程序员转向JSP的学习,加大市场的竞争力度。
二 WEB服务器
2.1 服务器简介
https://baike.so.com/doc/5068069-5295552.html
1、Web服务器是指驻留于因特网上某种类型计算机的程序,是可以向发出请求的浏览器提供文档的程序。当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。
2、服务器是一种被动程序:只有当Internet上运行在其他计算机中的浏览器发出请求时,服务器才会响应。
2.2 Tomcat
TomcatTomcat是一个实现了JAVA EE标准的最小的WEB服务器,是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且开源免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。学习JavaWeb开发一般都使用Tomcat服务器,该服务器支持全部JSP以及Servlet规范,启动界面如图:
三 搭建JavaWeb应用开发环境——Tomcat服务器
3.1、下载和安装Tomcat服务器
-
Tomcat官方站点:http://jakarta.apache.org
-
下载Tomcat安装程序包:http://tomcat.apache.org/
- tar.gz文件是Linux操作系统下的安装版本
- exe文件是Windows系统下的安装版本
- zip文件是Windows系统下的压缩版本
下载好之后解压解压之后就完成了安装
3.2 Tomcat的启动与测试
Tomcat目录结构
启动。关闭Tomcat
测试Tomcat服务器
打开浏览器,输入http://localhost:8080/,能显示如下界面代表安装成功。
3.3 Tomcat端口配置
配置文件都在此文件夹下在此文件夹下的
文件中可进行端口的修改
将端口修改为8081
默认配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改成8081端口
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
打开浏览器,输入http://localhost:8081/
3.4 JavaWeb应用组成结构
--webapps :Tomcat服务器的web目录
-ROOT
-Demo :网站的目录名
- WEB-INF
-classes : java程序
-lib:web应用所依赖的jar包
-web.xml :网站配置文件
- index.html 默认的首页
- static
-css
-style.css
-js
-img
-.....
四 HTTP
4.1 什么是Http
HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。
4.2 HTTP1.0和HTTP1.1的区别
-
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
Accept:text/html
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9 语言
Cache-Control:max-age=0
Connection:keep-alive
1. 请求行
- 请求行中的请求方式:GET
- 请求方式:Get,Post,HEAD,DELETE,PUT,TRACT…
- get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
- post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。
2.消息头
accept:浏览器通过这个头告诉服务器,它所支持的数据类型
Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
Accept-Encoding:浏览器通过这个头告诉服务器,支持的压缩格式
Accept-Language:浏览器通过这个头告诉服务器,它的语言环境
Host:浏览器通过这个头告诉服务器,想访问哪台主机
If-Modified-Since: 浏览器通过这个头告诉服务器,缓存数据的时间
Referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的 防盗链
Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是何持链接
4.4 Http响应
- 服务器—响应-----客户端
Cache-Control:private 缓存控制
Connection:Keep-Alive 连接
Content-Encoding:gzip 编码
Content-Type:text/html 类型
1.状态码
200:请求响应成功 200
3xx:请求重定向
- 重定向:你重新到我给你新位置去;
4xx:找不到资源 404
- 资源不存在;
5xx:服务器代码错误 500
502:网关错误
常用响应头
Location: 服务器通过这个头,来告诉浏览器跳到哪里
Server:服务器通过这个头,告诉浏览器服务器的型号
Content-Encoding:服务器通过这个头,告诉浏览器,数据的压缩格式
Content-Length: 服务器通过这个头,告诉浏览器回送数据的长度
Content-Language: 服务器通过这个头,告诉浏览器语言环境
Content-Type:服务器通过这个头,告诉浏览器回送数据的类型
Refresh:服务器通过这个头,告诉浏览器定时刷新
Content-Disposition: 服务器通过这个头,告诉浏览器以下载方式打数据
Transfer-Encoding:服务器通过这个头,告诉浏览器数据是以分块方式回送的
Expires: -1 控制浏览器不要缓存
Cache-Control: no-cache
Pragma: no-cache