[01]Tomcat和HTTP协议
来源:互联网 发布:sqlserver卸载不干净 编辑:程序博客网 时间:2024/05/16 10:55
1 Tomcat服务器
1.1 Web开发概述
静态资源和动态资源
WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。
Internet上供外界访问的Web资源分为:
静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。
动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。
静态web资源开发技术
Html
常用动态web资源开发技术:
JSP/Servlet、ASP、PHP等
在Java中,动态web资源开发技术统称为Javaweb
,重点也是Java技术开发动态的web资源,即动态web页面。
1.2手动编写简单静态Web服务器
Web应用要运行起来,提供给外部用户通过浏览器访问,需要有一个Web服务器软件(程序)来解析。下面手动来写一个简单的Web服务器程序。
import java.io.*;import java.net.*;//手动编写简单静态Web服务器public class Server { public static void main(String[] args) throws Exception { ServerSocket server=new ServerSocket(8080); Socket sock=server.accept(); FileInputStream in=new FileInputStream("d:\\baidu\\1.html"); OutputStream out=sock.getOutputStream(); int len=0; byte buffer[]=new byte[1024]; while((len=in.read(buffer))>0){ out.write(buffer,0,len); } in.close(); out.close(); sock.close(); server.close(); }}
1.3常见Web服务器介绍
WebLogic:
WebLogic是BEA公司的产品,是目前应用最广泛的Web服务器,支持J2EE规范,而且不断的完善以适应新的开发要求;
WebSphere:
另一个常用的Web服务器是IBM公司的WebSphere,支持J2EE规范;
Apache Tomcat:
在小型的应用系统或者有特殊需要的系统中,可以使用一个免费的Web服务器:Tomcat,该服务器支持全部JSP以及Servlet规范;
1.4 Tomcat基本使用
tomcat的启动与关闭
获得安装包:
到Tomcat官方站点:http://jakarta.apache.org获取安装程序包,有三种版本的安装程序包,分别为:
tar.gz 文件是Linux操作系统下的安装版本(Linux版本)
exe 文件是Windows系统下的安装版本(傻瓜式操作)
zip 文件是Windows系统下的压缩版本(配置更加灵活)
安装Tomcat:
这里我们以zip压缩版的tomcat为例:
1)下载apache-tomcat-7.0.22压缩文件夹。
2)解压apache-tomcat-7.0.22到指定目录,解压后看到tomcat的目录;
3)打开bin目录,双击startup.bat
文件
4)打开浏览器输入:http://localhost:8080,显示tomcat欢迎页代表安装成功!
Tomcat启动常见问题
点击startup.bat后迅速闪退问题
这个问题是因为Tomcat没有找到java的运行环境。解决办法是在环境变量里新建JAVA_HOME(不区分大小写),指向JDK安装目录。
2)端口占用的问题
端口占用一般是因为其他应用程序在运行占用了Tomcat运行所需的端口,这是可以使用cports.exe程序查看端口占用情况,然后在“任务管理器”里面把占用端口的程序进程杀死。
3)CATALINA_HOME环境变量设置问题
CATALINA_HOME这个环境是表示Tomcat所在目录,如果设置了在环境变量里加上了这个变量,则所有startup.bat命令都会去启动同一个Tomcat目录的程序,导致启动的不是我们想要的tomcat。一般不要配置CATALINA_HOME。
1.5 Tomcat目录结构
Tomcat的目录层次结构
1.6 Web应用结构
Tomcat的体系简介
通过 Tomcat\conf\server.xml 配置进行配置(Tomcat的核心配置文件)
web应用组成结构
应用的根(web root)
其名字可以是自定义的
公共目录(public)
其名字也是可以自定义的
在公共目录下的内容都是可以供客户端访问的
WEB-INF
供容器使用,客户端不能直接访问的
web.xml
应用的部署描述符
应用中的servlet、filter、listener等都可以通过此文件部署
classess目录
编译后的类
lib目录
web应用需要的类库
这也作为web应用的类路径的一部分
开发web应用时,不同类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错。
通过修改web.xml文件,配置web应用首页:
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>pay.html</welcome-file> </welcome-file-list></web-app>
通过以上配置就将pay.html设置成web应用的首页!
1.7 部署web应用的方式
Web应用程序:
WEB应用程序指供浏览器访问的程序,通常也简称为web应用。
一个web应用由多个静态web资源和动态web资源组成,如:
html、css、js文件
Jsp文件、java程序、支持jar包、
配置文件
……
Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射。比如有a.html、b.html。。。多个web资源,这个多个web资源用于对外提供支付服务,此时应该把多个web资源放在同一个目录下,组成web应用(或web应用程序)。
直接拷贝到webapps目录下
第一种方法:tomcat自动映射,直接放在tomcat/webapps下
tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚拟目录。换句话说,tomcat服务器webapps目录中的web应用,外界可以直接访问。
用jar -war命令可以打包web应用,直接拷贝到webapps下可自动部署!
注意:如果将Web应用目录名称改为“ROOT”,则该项目为tomcat默认应用。(访问默认应用无需路径名)。
设置虚拟目录
为了让开发好的Web应用在web服务器(tomcat)中能被用户用浏览器访问到,可以为web应用映射虚拟目录。
第一种方式:配置server.xml文件
在Tomcat/conf目录的server.xml文件的host元素中配置,例如:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="/baidu" docBase="c:\app"/> </Host>
path :表示在浏览器中输入http://localhost:8080/虚拟目录名
docBase :表示你的Web应用包的物理绝对路径。
reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。
第二种方法:配置单独的xml文件
在tomcat/conf/Catalina/localhost下面建立xml文件(例如abc.xml),内容如下:
<?xml version="1.0"?><Context docBase="d:/baidu" />
docBase:表示web应用程序所在的实际路径
文件名:表示在访问本应用时加上的路径
1.8 配置虚拟主机
Tomcat的虚拟主机的配置:WEB浏览器与WEB服务器建立连接后,除了将请求URL中的资源路径发送给WEB服务器外,还会将URL中的主机名部分作为HTTP请求消息的Host头发送给WEB服务器。
Tomcat的虚拟主机的配置主要的用途是在一个tomcat服务器中可以放置多个网站,所谓配置虚似主机,就是在tomcat服务器中配置一个网站。如需在WEB服务器中配置一个网站,需使用Host元素进行配置,例:<Host name=”site1” appBase=”c:\app”></Host>
配置的主机(网站)要想被外部访问,必须在DNS服务器或windows系统中注册。
需求:
本地有一个web应用,需要把它发布到tomcat中,通过浏览器输入http://www.baidu.cn可以访问到你自己的web应用。(“做一回黑客”)
具体步骤:
1)在tomcat/conf目录下的server.xml文件中把其中的端口号8080改成本机的80
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
2)在server.xml文件中新建一个<host>
标签其中写上目录名字,地址。例如:
<Host name="www.baidu.com" appBase="c:\app"> <Context path="" docBase="c:\baidu\pay"/> </Host>
3)找到hosts(C:\Windows\System32\drivers\etc)文件,在文件最后加上一行:
127.0.0.1 www.baidu.cn
4)这样,你的浏览器上输入http://www.baidu.cn就不会进入百度的官网,而是进入你设置的网页。
1.9 利用MyEcplise开发并部署web应用
1)在MyEclipse中配置Tomcat
2)开发目录结构和运行目录结构
2 Http协议
2.1 什么是Http协议?
1)客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式。
2)使用telnet程序连上web服务器,并使用HTTP协议获取某个页面,以快速了解 HTTP协议的作用。
3)安装Firefox(火狐)浏览器插件firebug,查看火狐浏览器通过HTTP协议获取某个页面。
安装FireBug插件并通过firebug来观察Http协议信息;
HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。
HTTP协议是学习JavaWEB开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点。
HTTP协议的版本:HTTP/1.0、HTTP/1.1
2.2 Http1.0和Http1.1
在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源。
HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。
一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求。
答案是4次。请求这个页面资源1次,然后每张图片各请求1次,共4次。
2.3 Http请求
客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:
一个请求行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。如下所示:
请求行
请求方式有:
POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用的有:POST、GET
不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上,客户端通过这两种方式都可以带一些数据给服务器:
1)如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:
GET /mail/1.html?name=abc&password=xyz HTTP/1.1
GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量不能超过1K。另一方面,一些用户密码等保密数据不适合以GET方式提交。
2)如请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,例如:
POST /servlet/ParamsServlet HTTP/1.1 Host: Content-Type: application/x-www-form-urlencoded Content-Length: 28
name=abc&password=xyz
Post方式的特点:传送的数据量无限制。
用于HTTP请求中的常用头
2.4 Http响应
一个HTTP响应代表服务器向客户端回送的数据,它包括:
一个状态行、若干消息头、以及实体内容 ,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。
状态行
状态行
格式: HTTP版本号 状态码 原因叙述<CRLF>
举例:HTTP/1.1 200 OK
状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:
常用响应头
HTTP请求中的常用响应头:
Location: http://www.it315.org/index.jsp Server:apache tomcatContent-Encoding: gzip Content-Length: 80 Content-Language: zh-cn Content-Type: text/html; charset=GB2312 Last-Modified: Tue, 11 Jul 2000 18:23:51 GMTRefresh: 1;url=http://www.it315.orgContent-Disposition: attachment; filename=aaa.zipSet-Cookie:SS=Q0=5Lb_nQ; path=/searchExpires: -1Cache-Control: no-cache Pragma: no-cache Connection: close/Keep-Alive Date: Tue, 11 Jul 2000 18:23:51 GMT
常用响应头详解:
Location:这个头配合302状态码使用,用于告诉客户找谁。
Server:服务器通过这个头,告诉浏览器服务器的类型。
Content-Encoding:服务器数据压缩格式。
Content-Length:告诉浏览器回送数据的长度。
Content-Type:告诉浏览器客户端,响应文正的MIME类型。默认text/html
Last-Modified:告诉浏览器当前资源缓存的时间。
Refresh:告诉浏览器多长时间刷新一次。
Content-Disposition:告诉浏览器以下载方式打开数据。
Expires: 告诉浏览器把回送的资源缓存多长时间。-1或0则表示不缓存。
Cache-Control: 通过这个头也是告诉浏览器不要缓存数据。http1.1有效
Pragma: 通过这个头也是告诉浏览器不要缓存数据。http1.0有效
- [01]Tomcat和HTTP协议
- tomcat和http协议
- Javaweb 01—Tomcat和http协议
- tomcat和HTTP协议详解
- Tomcat和http协议简介
- Http协议和Tomcat服务器
- Http协议和Tomcat服务器
- tomcat的http协议和AJP协议
- HTTP协议基础和TOMCAT环境配置
- JavaWeb基础知识:Tomcat服务器和http协议
- tomcat 的http和ajp协议
- Http协议和tomcat目录个人总结
- 初识javaweb之http协议和tomcat
- Tomcat与http协议
- http协议+tomcat学习
- java/tomcat /http协议
- Tomcat http协议-->https
- Tomcat服务器&http协议
- SSM框架----修改mybatis-generate源码实现实体类加上字段注释
- Android动画机制
- 分治思想之归并排序
- leetcode34. Search for a Range
- 利用VPS搭建shadowsocks服务
- [01]Tomcat和HTTP协议
- centos 7 firewall配置
- C语言 sprintf实现
- gulp的node-glob
- Git 学习笔记、相关命令、问答
- 关于libvirt的API编程介绍
- qscoj 28 喵哈哈村的嘟嘟熊魔法(4)(思维+前缀和)@
- U盘安装Ubuntu failed to load ldlinux.c32' UltraISO
- PAT L2-014. 列车调度 二分查找优化,递减序列