web应用的概念:使用浏览器进行访问的应用程序
web程序采用的是B/S架构
B/S架构就是浏览器跟服务器进行数据交互的方式,数据传输的方式 采用http协议
C/S就是客户端跟服务端进行数据交互的方式,采用winsocket协议
HTTP协议
HTTP:超文本传输协议,详细的规定了浏览器和服务器之间进行通信的规则,通过网络传输HTML文档数据的协议
http协议是一个应用层的协议,有请求和相应构成,一次请求一次响应
特点:
1.是我们B/S架构采用的协议
2.http可以传输任意数据类型,比如文本,图片,音频,视频等等
3.http1.0之前使用的是短连接的方式,短连接就是限制每次连接只处理一个请求,服务器处理完成之后 并收到浏览器的应答之后,就会断开连接,优点是节省时间,缺点是我请求了一个HTML文档,这个文档中又包含了,其他JS文件,图片文件,CSS文件,每当浏览器,遇这样一个Web资源,就会建立一个会话,那这样的话需要消耗资源和时间的.
http1.1 的版本使用的是长连接,这个就是一个网页打开完成之后,客户端和服务端之间传输数据时,连接不会关闭,如果客户端在此访问这个服务器上的网页,会继续使用建好的连接
4.http协议是一种无状态协议,协议状态就是下一次传输可以记住本次传输数据能力,而无状态协议,就是http不会为了下一次连接,而维护本次连接所传输的数据,比如浏览器打开了一个网页后,关闭浏览器,然后再次打开浏览器,但是服务器并不知道客户关闭了一次浏览器,所以http是无状态协议,那如果说我们在一个网站中的多个页面间需要共享同一个数据,我们可以通过Cookie和Session来实现.
HTTP之请求Request
所谓请求:就是浏览器往服务器发送数据
请求:
请求行:请求信息的第一行
请求头:从请求信息的第二行开始到请求空行结束
请求体:从请求空行往下
请求行:GET /HTTPTest/login?username=zhangsan&password=123456 HTTP/1.1
格式: 请求方式 /请求的资源?请求参数 协议/版本
请求方式常见的 get post
get:会把请求参数拼接在URL后面,数据大小有限制,get请求没有请求体
post:请求会将请求参数放到请求体里面,数据大小无限制
请求头: 格式 key:value,value
常见的请求头:
Accept: text/html,image/* --告诉服务器当前客户端可以接收的文档的类型。其实这里包含了*/*,就表示什么都可以接收; 大类型/小类型 比如 text/css text/javascript
Accept-Charset: ISO-8859-1 --告诉服务器,客户端提交的表单可能使用的编码类型
Accept-Encoding: gzip --浏览器发给服务器,声明浏览器支持的编码类型
Accept-Language:zh-cn --语言环境
Host: localhost:8080 --访问主机
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT 客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头,询问该时间之后文件是否有被修改过:
后面跟的时间是本地浏览器存储的文件修改时间
Referer: http://www.baidu.com/index.jsp --来自哪个页面、防盗链
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Cookie
Connection:Keep-Alive --链接状态 长链接
Date: Tue, 11 Jul 2000 18:23:51 GMT --时间
HTTP 之 响应 Response
所谓响应:就是服务器往浏览器回写数据
响应:
响应行:响应信息第一行
HTTP/1.1 200 OK 格式: 协议/版本 响应状态码 响应的描述
常见的响应状态码
200
404
302
500
响应头:响应信息第二行到响应空行
响应体:响应空行以下
常见的响应头
Location: http://www.baidu.org/index.jsp --跳转方向 302重定向
Server:apache tomcat --服务器型号
Content-Encoding: gzip --数据压缩
Content-Length: 80 --数据长度
Content-Language: zh-cn --语言环境
Content-Type: text/html; charset=GB2312 --告诉浏览器,服务器返回的文本采用什么编码
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,
Refresh: 1;url=http://www.hehe.org --定时刷新
Content-Disposition: attachment; filename=aaa.zip --下载
Set-Cookie:SS=Q0=5Lb_nQ; path=/search 让浏览器将数据保存到本地
Expires: -1 --缓存 -1 就是让页面立即过期
Cache-Control: no-cache --浏览器和缓存服务器都不应该缓存页面信息强制每次请求直接发送给源服务器,而不经过本地缓存版本的校验
Connection: Keep-Alive --保持连接 长链接
Date: Tue, 11 Jul 2000 18:23:51 GMT
Web服务器
服务器:
硬件服务器和软件服务器
web服务器:
提供资源供别人访问
web:
网页的意思,资源.
web资源分类:
动态的web资源:内容有可能发生改变的
静态的web资源:内容是一成不变的.(几乎看不到)
web开发技术:
动态的web开发技术:servlet jsp php .net
静态的web开发技术:html css ....
什么叫javaweb
通过java语言编写的网页称之为javaweb
web通信机制:
基于请求响应机制.
一次请求一次响应,先有请求后有响应
常见的web服务器:
服务器名称 厂商 特点
weblogic oracle 大型的收费的支持javaee所有规范的服务器
webspere IBM 大型的收费的支持javaee所有规范的服务器
tomcat apache组织 中小型的免费的支持servlet和jsp规范的服务器
tomcat:
下载:https://tomcat.apache.org/
.tar .tar.gz: 提供给linux系统
.zip .exe:提供给window系统
安装:
解压apache-tomcat-7.0.52.zip即可
启动:
tomcat/bin目录下
双击 startup.bat
打开浏览器:
http://localhost:8080
退出:
方式1:点 x
方式2:ctrl+c
方式3:双击 shutdown.bat
常见问题(配置):
1.启动的时候一闪而过 正确配置:JAVA_HOME
2.端口冲突问题
修改tomcat的端口号.
打开tomcat/conf/server.xml
大概70行左右 有如下代码:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改port后面的值就可以了.注意:1024以下的端口号留给系统用的
80端口是留给http协议用的.我们可以使用这个端口号
3.有可能出现的问题(在环境变量中配置CATALINA_HOME)
删除
/
tomcat目录结构:(了解)
bin:存放的可执行程序
conf:配置文件
lib:存放的是tomcat和项目运行时需要的jar包
logs:日志 注意:catalina
temp:临时文件
★★webapps:存放项目的目录
★work:存放jsp文件在运行时产生的java和class文件
web项目的目录结构:★★★
myweb(项目名称) web2.5版本标准的目录结构
|
|---- html css js image等目录或者文件
|
|---- WEB-INF(特点:通过浏览器直接访问不到 目录)
| |
| |--- lib(项目的第三方jar包)
| |--- classes(存放的是我们自定义的java文件生成的.class文件)
| |--- web.xml(当前项目的核心配置文件)
| |
访问路径:
http://主机:端口号/项目名称/资源路径
例如:我的项目 myweb
资源 myweb有一个1.html
http://localhost:80/myweb/1.html
/
常用的项目发布方式:(虚拟目录映射)
★方式1:将项目放到tomcat/webapps下
(了解)方式2:修改 tomcat/conf/server.xml
大概130行:
在host标签下 添加如下代码
<Context path="/项目名" docBase="项目的磁盘目录"/>
例如:
<Context path="/my" docBase="G:\myweb"/>
(了解)方式3:
在tomcat/conf/引擎目录/主机目录下 新建一个xml文件
文件的名称就是项目名 文件的内容如下:
<Context docBase="G:\myweb"/>