您的位置:首页 > 理论基础 > 计算机网络

【黑马Android】(17)web开发/tomcat/HTTP协议

2016-07-14 21:48 483 查看

web开发概述



静态web资源:内容是静态的,不同的人在不同的时间来访问时都是相同的内容。HTML、CSS、JS

动态web资源:内容是由程序生成的,不同的人在不同的时间访问的内容很可能是不同的。

常见的动态web资源开发技术:

ASP、PHP、JSP/Servlet

C/S B/S之争

云、移动互联网、html5、物联网

tomcat的安装配置

下载地址:http://tomcat.apache.org/

安装目录不能包含中文和空格

JAVA_HOME环境变量指定Tomcat运行时所要用的jdk所在的位置,注意,配到目录就行了,不用指定到bin

端口占用问题:netstat -ano命令查看端口占用信息

Catalina_Home环境变量:startup.bat启动哪个tomcat由此环境变量指定,如果不配置则启动当前tomcat,推荐不要配置此环境变量

tomcat5要求jdk1.4以上

tomcat6要求jdk1.5以上

tomcat7要求jdk1.6以上

JAVA_HOME环境变量:指定tomcat启动时使用的jdk所在的位置

Catalina_Home环境变量:指定tomcat在启动时启动哪个tomcat,一般不推荐配置

tomcat目录结构_虚拟主机配置

bin ---- 启动和关闭需要的bat文件所在的目录

conf --- 配置目录

lib --- tomcat运行时需要的jar包所在的目录

logs --- 日志文件所在的目录

temp --- tomcat运行时产生的临时文件存放的目录,不需要我们管理

webapps --- 开发中最常用的目录,web应用放置到此目录下浏览器可以直接访问

work --- 工作目录,tomcat运行时产生的工作文件存放在这个目录中

虚拟主机:

一个tomcat可以认为是一台真实主机.在一台真实主机中可以配置多个站点,这些站点在访问者看来访问他们就像在访问各自独立的主机一样,所以我们可以认为这些站点都运行在tomcat这台真实主机当中的各自的虚拟主机当中.一个网站就可以认为是一个虚拟主机.

web应用:

一个虚拟主机中会有很多的web资源,但是web资源不能直接交给虚拟主机管理,需要按照一定方式组织成web应用虚拟主机才能使用.一般来说我们会按照功能将某一功能相关的所有的web资源组织成一个web应用后再交给虚拟主机.

为虚拟主机配置web应用:

(1)在Server.xml的<Host>标签中,配置<Context>标签,就可以为该虚拟主机配置一个web应用了,
如果将path设置为空则这个web应用为缺省web应用
这种配置方式需要重启服务器不推荐

(2)在tomcat/conf/[Engin]/[Host]/在这个目录下写一个xml文件,其中xml文件的名字就是虚拟路径,在这个xml中可以配置<Context>标签,其中配置真实路径.如果所配置的虚拟路径中有/由于文件名中不允许包含/需要用#替代.只要将文件名设置为ROOT.xml则这个xml描述的web应用就成为了缺省web应用这种配置方式不需要重启服务器,推荐

(3)直接将web应用放置到虚拟主机管理的目录下,虚拟主机就可以找到这个web应用,从而管理这个web应用,只要将web应用文件夹的名称改为ROOT,这个web应用就是缺省web应用

*web应用的虚拟路径映射 --就是为web应用的真实存在的路径配置一个浏览器访问的虚拟路径

*配置缺省web应用--
默认的web应用,当不写web应用名时就访问这个web应用

web应用目录结构

web应用目录结构:如果目录结构不合法可能会出现各种奇葩的问题.

news

|

|--静态资源和JSP文件都可以直接放置在web应用的目录下,直接放在web应用下的内容,浏览器可以直接访问到

|

|--WEB-INF -- 可以没有,但是最好有,如果有则一定要保证他的目录结构是完整的.放置在WEB-INF目录下的所有资源浏览器没有办法直接进行访问

|--classes -- 动态web资源运行时的class文件要放在这个目录下

|--lib -- 动态web资源运行时所依赖的jar包要放在这个目录下

|--web.xml -- 整个web应用的配置文件,配置主页/Servlet的映射/过滤器监听器的配置都需要依赖这个文件进行

tomcatweb应用配置_综合演练



在conf/server.xml中<Engin>标签下配置<Host>标签就可以为tomcat增加一台虚拟主机了

name -- 指定虚拟主机的名称,浏览器通过这个名称访问虚拟主机

appBase -- 虚拟主机管理的目录,放置在这个目录下的web应用当前虚拟主机可以自动加载

*由于浏览器访问地址时,需要将地址翻译成对应的ip才能找到服务器,这其中翻译的过程是由dns服务器来实现的.我们在做实验的时候没有办法去修改dns服务器,此时可以使用hosts文件模拟dns的功能,从而完成实验.

*缺省虚拟主机:如果来访者是通过ip来访问,这个时候服务器无法辨别当前要访问的是哪台虚拟主机中的资源,此时访问缺省虚拟主机.缺省虚拟主机可以在server.xml中engin标签上通过defaultHost属性进行配置.



零散知识

打war包,减少web应用的体积方便传输,并且在虚拟主机管理的目录下,war默认可以自动解压

Jar -xvf test.war *

或者压缩为zip文件后,改名为war.

通用Context配置、通用web.xml配置

Tomcat服务器的管理平台

(1)打war包:方式一:jar -cvf news.war *方式二:直接用压缩工具压缩为zip包,该后缀为.war

(2)通用context和通用web.xml,所有的<Context>都继承子conf/context.xml,所有的web.xml都继承自conf/web.xml

(3)reloadable让tomcat自动加载更新后的web应用,当java程序修改后不用重启,服务器自动从新加载,开发时设为true方便开发,发布时设为false,提高性能

(4)Tomcat管理平台,可以在conf/tomcat-users.xml下配置用户名密码及权限

HTTP协议概述

规定客户端和服务器如何进行交互

基于TCP/IP协议的应用层协议

HTTP协议基于请求响应模型

一次请求对应一次响应

请求只能由客户端发出,服务器只能被动的等待请求做出响应

1.0和1.1的区别

telnet/httpwatche

HTTP协议详解

HTTP请求

请求行

GET /books/java.html HTTP/1.1

请求方式

七种请求方式: POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT

真正使用的时候:POST/GET

GET请求方式和POST请求区别在于请求参数在传递的过程中方式不同

如果是GET提交,请求参数将会附加在请求的URL后面作为请求地址的一部分带到服务器端,可以传输的数据大小有限制一般不允许超过1K.

如果是POST提交,请求参数将会在http请求的实体内容中进行传输,这种方式传输的数据没有大小限制.

利用form表单提交数据时,form表明明确的声明要用POST提交,这是请求参数就是POST提交

除此以外所有方式的请求参数都是GET提交

请求的资源部分的名称

所遵循的协议版本

若干请求头

Accept: text/html,image/* 客户端可以接受的数据类型

Accept-Charset: ISO-8859-1 客户端接受数据需要使用的字符集编码

Accept-Encoding: gzip,compress 客户端可以接受的数据压缩格式

Accept-Language: en-us,zh-cn 可接受的语言环境

Host: www.it315.org:80 想要访问的虚拟主机名

If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT
这是和缓存相关的一个头,带着缓存资源的最后获取时间

Referer: http://www.it315.org/index.jsp 这个头表示当前的请求来自哪个链接,这个头和防盗链的功能相关

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
客户端的一些基本信息

Cookie 会在后面讲会话技术的时候单讲

Connection: close/Keep-Alive 指定是否继续保持连接

Date: Tue, 11 Jul 2000 18:23:51 GMT 当前时间

实体内容

HTTP响应

状态行

HTTP/1.1 200 OK

格式: HTTP版本号 状态码 原因叙述<CRLF>

状态码:

200:请求处理成功

302:请求重定向

304、307:服务器通知浏览器使用缓存

404:资源未找到

500:服务器端错误

若干响应头

Location: http://www.it315.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 缓存相关的头

Refresh: 1;url=http://www.it315.org 通知浏览器进行定时刷新,此值可以是一个数字指定多长时间以后刷新当前页面,这个数字之后也可以接一个分号后跟一个URL地址指定多长时间后刷新到哪个URL

Content-Disposition: attachment;filename=aaa.zip
与下载相关的头

Transfer-Encoding: chunked 传输类型,如果是此值是一个chunked说明当前的数据是一块一块传输的

Set-Cookie:SS=Q0=5Lb_nQ; path=/search 和cookie相关的头,后面课程单讲

ETag: W/"83794-1208174400000" 和缓存机制相关的头

Expires: -1 指定资源缓存的时间,如果取值为0或-1浏览就不缓存资源

Cache-Control: no-cache 缓存相关的头,如果为no-cache则通知浏览器不缓存

Pragma: no-cache 缓存相关的头,如果为no-cache则不缓存

以上三个头都是用来控制缓存的,是因为历史原因造成的,不同的浏览器认识不同的头,我们通常三个一起使用保证通用性。

Connection: close/Keep-Alive 是否保持连接

Date: Tue, 11 Jul 2000 18:23:51 GMT 当前时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: