JavaWeb学习笔记之tomcat与web程序结构与Http协议

1.常见的服务器
1.1 WebLogic服务器 BEA公司提供,支持j2EE规范
1.2 WebSphere IBM公司提供,支持j2EE规范
1.3 TomCat服务器,Apache开源组织开发的开源免费的web服务器,只能支持jsp和Servlet规范
2.下载和安装Tomcat服务器
2.1下载地址:http://tomcat.apache.org/
2.2安装Tomcat:直接将压缩包解压即可,但是要注意tomcat所在目录不要有中文和空格字符。
同时还要注意配置JAVA_HOME环境变量,指定tomcat启动所用的JDK
CATALINA环境变量用于指定启动那一个tomcat,当我们双击startup.bat的时候,会去检查这个环境变量,如果设置了就启动设置的tomcat,如果没有设置就启动当前tomcat,不需要的时候就不要配了。
如果发生端口冲突问题,可以在cmd窗口中使用 netstat -ano查看占用端口的程序。
2.3Tomcat的目录结构及其作用
bin ------ 启动和关闭tomcat所用的批处理程序
conf ----- tomcat运行所使用的配置文件,其中最重要的是server.xml
lib -----tomcat也是一个java程序,次文件夹存放了tomcat运行所需的jar包
logs ----- tomcat运行时产生的日志文件,当我们需要查看运行日志的时候,上这里找
temp ----- tomcat运行时的临时目录,是给tomcat自己用的。
webapps ---- web应用存放的目录,之所以是他,是因为localhost的<Host>指定了 appBase为它
work ----tomcat 运行时的工作目录,以后我们学jsp的时候会用到。
3.虚拟主机
3.1虚拟主机的概念:一台真实的服务器安装好以后,可以在上面跑很多个网站,但是对于浏览器来说,他在访问这些网站的并不知道他们是跑在一台真实主机上的,看起来就像每个网站都跑在各自的主机上一样,所以我们可以认为这些网站跑在各自的虚拟主机上,也就是说,一个网站就相当于一个虚拟主机
3.2如何配置一个虚拟主机到tomcat呢?
3.2.1可以在server.xml中 的<Engine>标签中配置一个<Host>标签,其中name属性表征虚拟主机的主机名,appBase指定虚拟主机的真实目录。
3.2.2拿着你的公网ip地址和主机名去DNS上注册
*浏览器在通过主机名访问服务器的时候,其实是需要将主机名解析成真正的服务器的ip地址,浏览器首先回去问本地的hosts(系统盘/windows/system32/dirvers/etc/hosts)文件,如果里面没有对应的信息就去问网络上的dns服务器,所以我们在服务器上配好虚拟主机后还要去DNS上注册,我们在做实验的时候可以使用hosts文件来模拟dns服务器的作用。
3.2.3缺省虚拟主机:当浏览器直接用服务器的ip地址来访问的时候,到底应该去找服务器中多个虚拟主机中的哪一个呢?这是由<Engine>上的defaultHost属性指定的。
3.2.4ie访问服务器的交互过程
(1)在ie地址栏里输入想访问的URL
(2)浏览器拿着URL中的主机名去查找本地host文件,看本地是否有对应的ip地址信息,如果有就跳过第3步
(3)如果host中没有找到对应的ip信息,就去访问DNS服务器,获取虚拟主机对应的真实ip地址
(4)利用真实ip去连接服务器
(5)发送请求消息,请求消息中带着需要访问的主机名和web应用名和web资源名
(6)服务器接收到请求,分析出要找的主机名,交给响应虚拟主机
(7)虚拟主机找到对应的web应用
(8)查找该web应用中的web资源
(9)把找到的web资源返还给浏览器

4.web应用
4.1web应用的概念:将web资源交给虚拟主机的时候,不能直接将web资源给过去,需要用目录将这些web资源按照一定的规则组织起来,这样的用目录组织起来的具有一定特定功能的web资源的集合我们就叫做一个web应用。
4.2web应用组织结构:
mail (web应用所在的目录)
|
----- html、js、css  (这些静态的资源可以直接放在web应用所在目录下,他们可以直接被外界访问到。)
|
-----WEB-INF (这是一个特殊的目录,名称不能写错,java程序、jar包、配置文件、web.xml都要放到这里,这个文件夹里的资源外界不能直接访问)
|
---- classes(此目录下存放java类)
|
---- lib (此目录下存放程序运行所需的jar包)
|
-- web.xml (整个web应用的配置文件,一个格式良好的web应用都应该有一个web.xml文件,对于web应用的首页、Servlet配置、过滤器等等等等配置都要通过它来实现)
*利用web.xml配置web应用的首页,例子:
<welcome-file-list>
       <welcome-file>index.html</welcome-file>
   </welcome-file-list>


4.3web应用的虚拟路径映射
4.3.1web应用组织好以后,还要交给虚拟主机去管理,这个过程是将本地硬盘中的真实路径下的文件夹映射成一个用在网络上的虚拟的路径的过程,所以这个过程就叫做 web应用的虚拟路径映射。
4.3.2如何将一个web应用映射给虚主机
(方法1)在Server.xml配置文件的对应的虚拟主机<Host>标签内配置<Context>标签,其中用path属性指定虚拟路径名,docBase指定真实路径名
*如果想要将该web应用配置为该虚拟主机的默认web应用,应该将path的值写成空的:path=""。
*这种放发进行配置后,因为修改了配置文件,需要重启服务器,不推荐。
(方法2)在conf/Catalina/主机名/创建一个以虚拟路径名为文件名的xml文件,在这个文件中配置<context>,注意,这个时候的<context>就不用写path了
*此文件文件名可以用#进行分割来带表虚拟路径的/,比如itheima#news.xml就对应着虚拟路径名itheima/news
*可以将次文件文件名取成ROOT.xml,那这个文件描述的web应用就成了该虚拟主机的默认web应用。
*这种方式配置web应用不需要重启服务器,推荐方式。
(方法3)直接将web应用扔到虚拟主机配置中appBase指定的虚拟主机的真实目录下,例如,localhost主机对应的webapps目录下
  *这种方法最方便,但是上面两种也要会
5.其他知识
5.1打war包:war包可以直接放到host对应的虚拟主机真实目录下,war包就会自动解压成web应用
(1)直接用压缩工具,将web应用文件夹内的内容压缩成.zip格式的压缩文件,修改扩展名为.war。
(2)jar -cvf news.war news
5.2通用Context配置、通用web.xml配置:
在conf目录下有context.xml和web.xml配置文件,这是整个服务器的通用context和web.xml的配置,其他的context和web.xml都继承自它。
5.3Tomcat管理服务平台:可以直接访问tomcat主页,左侧有TomcatManager选项,点击进入
是有权限控制的,可以进入,conf下的tomcat-users.xml文件中进行配置,请参看注释内容配置。
5.4Tomcat体系结构
Server:代表服务器
Service:服务器启动时启动服务
Connector:表示连接器,一个连接器处理一类协议的请求
Engine:处理引擎
Host:虚拟主机
Context:web应用
5.5Context的常用配置
path:虚拟路径名
docBase:web应用所在的真是路径
reloadable:当web应用下的class目录和lib目录变更是是否动态加载。一般我们开发时设为true,方便开发。发布时设为false,提高性能。
unpackwar:是否自动解压war压缩包,默认为true。


6.作业:在tomcat中配置一个虚拟主机www.itheima.cn,将c:\itcat作为虚拟主机的真实目录,利用host文件模拟Dns,并在其中发布news和mailweb应用,并设置默认web应用,并设置默认web应用的首页。






============================================
7.HTTP协议
7.1浏览器和服务器之间想要传输数据,必须遵循一定的数据传输规范,这个规范就是HTTP协议
HTTP协议是基于TCP/IP协议的应用协议
HTTP使用请求响应的模式,并且只能由浏览器发送请求,服务器只能被动的等待。
7.2Telnet工具模拟浏览器访问服务器的过程(使用win7的同学请参照老师提供的文档手动打开telnet功能)
(1)在cmd窗口打命令“telnet localhost 80”这会连接服务器,但是界面上输入什么字符都不正确显示
(2)CTRL+]进入编辑窗口,再按一次回车,进入发送消息模式
(3)输入想要发送的请求,注意telnet采用输入一个字符发送一个字符的模式,一但输入错误没有机会更改了,只能重新连接。
推荐先在文本编辑器中写好,复制粘贴:
GET /news/1.html HTTP/1.1
HOST:localhost
(注意此行是一个回车)
(4)HTTP协议1.0版本和1.1版本的区别:1.0一次连接只能获取一个资源,每个资源都要重新连接获取。1.1版本获取资源后可以保持连接一段时间,一次连接可以获取多个资源。我们推荐使用1.1版本。
思考:获取一个带有三幅图片的html,会有几次请求响应的过程?

7.3HTTP请求 : 请求行、若干请求头、一个空行、实体内容
7.3.1请求方式:POST、GET
*默认情况下浏览器发送请求都用get方式,包括在地址栏里输入地址、点击一个超链接、form表单不设置method的提交
*如果想用post方式提交,就要把表达的method显示设置为post
*get方式传输数据是在请求资源名后加?后加参数名=参数值例如:GET /news/3.html?user=xxxx HTTP/1.1,有数据大小的限制一般不能超过1k
*post方式传输数据是在实体内容中传输的。没有数据大小的限制。
7.3.2请求头
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) 浏览器的一些信息
Connection: close/Keep-Alive   是否保持连接
Date: Tue, 11 Jul 2000 18:23:51 GMT 当前时间
7.4HTTP响应:状态行、若干消息头、一个空行、实体内容
7.4.1状态行: HTTP版本号 状态码 原因叙述<CRLF> 例子:HTTP/1.1 200 OK
7.4.2状态码:200 请求成功  302请求转发(你找我借钱,我没有,但是我可以告诉你谁有,你去找他)、304缓存中取、307缓存中取、404资源未找到、500服务器端错误
7.4.3响应头:
Location: http://www.it315.org/index.jsp 配和302使用,通知浏览器跳转到哪一个url
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
Content-Disposition: attachment;filename=aaa.zip 下载相关的头
Expires: -1 控制浏览器是否要缓存资源,如果设置为0或-1,浏览器就不缓存,并且他还可以被设置为一个是兼职,指定资源被缓存到什么时候
Cache-Control: no-cache  控制浏览器是否要缓存资源
Pragma: no-cache   控制浏览器是否要缓存资源
?有这么多控制是否缓存的头是由于历史原因导致的。一般上面的三个头一起使用
Connection: close/Keep-Alive 是否保持连接
Date: Tue, 11 Jul 2000 18:23:51 GMT当前时间

你可能感兴趣的:(tomcat,javaweb)