作者:禅楼望月(http://www.cnblogs.com/yaoyinglong

1. HTTP协议

HTTP协议是TCP/IP协议的上层协议。TCP负责确保从一个网络节点向另一个网络节点发送的文件能作为一个完整的文件到达目的地。IP是一个底层协议,负责把数据块(数据包)沿路/路由到目的地。HTTP是另一个网络协议,它要依赖TCP/IP从一处向另一处完整的传送请求和响应。

1.1 HTTP协议之URL

把URL作为第一个介绍是因为,只有你在浏览器中输入了url地址,才会有后面的HTTP请求和HTTP响应。

rul地址解析如下:

TCP端口只是一个16位数字而已,用于标识服务器硬件上一个特定的软件程序。从0到1023的TCP端口好已经保留。

1.2 HTTP协议之HTTP请求

请求流中关键要素为:

HTTP方法(主要的为GET和POST)

GET和POST的区别:

  • 从安全看 get<post 因为get 会把提交的信息显示到地址栏;

  • 从提交内容看 get<post get 一般不要大于2k, post理论上无限制,但是在实际开发中,建议不要大于64k;

  • 从速度看 get>post,get立即响应,post排队;

  • Get可以保留uri中的参数,利于收藏;

  • 如何使用:GET表示得到某些东西,对服务器不应该做任何改变,所以它是幂等的。POST是一个更新。使用POST体中的数据修改服务器上的某些东西,它是非幂等的;

注:幂等是指,一次和多次请求某一个资源应具有相同的副作用。

访问页面的URL;

表单参数;

Accept: text/html,image/*   [告诉服务器,我可以接受文本,网页,图片]

Accept-Charset: ISO-8859-1 [接受字符编码 iso-8859-1]

Accept-Encoding: gzip,compress [可以接受 gzip,compress压缩后数据]

Accept-Language: en-us,zh-cn [浏览器支持中,英文]

Host: www.sohu.com:80 [我要找主机是 www.sohu.com:80]

If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT [ 告诉服务器,我的缓冲中有这个资源文件,该文件的时间是。。。]

Referer: http://www.sohu.com/index.jsp  [告诉服务器,我来自哪里,该消息头,常用于防止盗链]

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)[告诉服务器,浏览器内核]

Cookie [cookie]

Connection: close/Keep-Alive   [保持连接,发完数据后,我不关闭连接,30秒]

Date: Tue, 11 Jul 2000 18:23:51 GMT [浏览器发送该http请求的时间]

一个请求如下:

1.2 HTTP协议之HTTP响应

在接收和解释请求消息后,服务器返回一个HTTP响应消息。

关键要素为:

状态码:

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

1xx:指示信息--表示请求已接收,继续处理

2xx:成功--表示请求已被成功接收、理解、接受

3xx:重定向--要完成请求必须进行更进一步的操作

4xx:客户端错误--请求有语法错误或请求无法实现

5xx:服务器端错误--服务器未能实现合法的请求

常见状态代码、状态描述、说明:

200 OK      //客户端请求成功

400 Bad Request  //客户端请求有语法错误,不能被服务器所理解

401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403 Forbidden  //服务器收到请求,但是拒绝提供服务

404 Not Found  //请求资源不存在,eg:输入了错误的URL

500 Internal Server Error //服务器发生不可预期的错误

503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

eg:HTTP/1.1 200 OK (CRLF)

Location: http://www.baidu.org/index.jsp  【让浏览器重新定位到该url】

Server:apache tomcat 【告诉浏览器我是tomcat】

Content-Encoding: gzip 【告诉浏览器我使用 gzip】

Content-Length: 80  【告诉浏览器回送的数据大小为80节】

Content-Language: zh-cn 【支持中文】

Content-Type: text/html; charset=GB2312 [内容格式text/html; 编码gab2312]

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 【告诉浏览器,该资源上次更新时间】

Refresh: 1;url=http://www.baidu.com 【过多久去,刷新http://www.baidu.com】

Content-Disposition: attachment; filename=aaa.zip 【告诉浏览器,有文件下载】

Transfer-Encoding: chunked  [传输的编码]

Set-Cookie:SS=Q0=5Lb_nQ; path=/search[后面详讲]

Expires: -1[告诉浏览器如何缓存页面(IE)]

Cache-Control: no-cache  [告诉浏览器如何缓存页面火狐]

Pragma: no-cache   [告诉浏览器如何缓存页面]

Connection: close/Keep-Alive   [保持连接 1.1Keep-Alive]

Date: Tue, 11 Jul 2000 18:23:51 GMT

Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页面,我们可以使用Expires实体报头域指定页面过期的时间。eg:Expires:Thu,15 Sep 2006 16:23:12 GMT

一个请求响应如:

2. Web服务器

Web服务器最擅长提供静态Web页面,但是有时我们不仅仅从Web服务器获取一些动态的内容,这时Web服务器会调用服务器上另一个应用(Web容器,如Tomcat),然后从这些应用中取得相应的响应,再把它发送给客户。

Web容器就是一个动态网页的管理器和解释器,当向Web服务器请求一个Servlet时,Web服务器首先将这个请求交给部署该Servlet的容器。由容器向servlet提供HTTP请求和响应,而且由容器调用Servlet的方法。

容器处理请求的过程:

容器的作用:

1、提供Web服务器与Servlet的通信,无需我们自己写Scoket等内容。

2、管理Servlet的一生。

3、多线程支持;注意会有同步的问题。

4、将JSP翻译为Servlet

3. Tomcat

3.1 安装tomcat服务器

解压即可。

3.2 配置

①在环境变量中添加:JAVA_HOME= 指向你的jdk的主目录(并不是bin文件目录

注:如果没有在环境变量中配置JAVAHOME,则应该在tomcat的startup.bat文件中配置:

② 启动tomcat服务器

到 tomcat 主目录下 bin/startup.bat

③验证是否安装成功

http://localhost:8080(8080是默认端口如果该端口已经被占用需要修改端口)

如果您的机器的8080端口被占用,则无法启动,这是有两种解决方法:

1.关闭8080端口

使用netstat -an或者netstat -anb查看谁占用了8080端口,然后关闭它就可以了。

2.改变Tomcat的端口号

到 conf/server.xml 文件中修改

注意:tomcat有多个Connector,每个Connector代表不同protocol(协议),也是从不同的端口来访问的。如上面的Connector是从8088端口来访问tomcat的,并且只能接受HTTP/1.1协议。因此不要改错了。

3.3 Tomcat的目录结构

bin: 启动和关闭tomcat的bat文件

conf: 配置文件

        -->server.xml : 该文件用于配置server 相关的信息, 比如 tomcat启动端口号,配置Host, 配置Context, 即web应用(当把web应用放在别的地方而不是放在webapps中时就要用它了)

        -->web.xml : 该文件配置web应用(web应用就相当于是一个 web站点)

        -->tomcat-users.xml: 该文件用户配置tomcat 的用户密码 和 权限

lib 目录: 该目录放置运行tomcat 运行需要的jar包

logs 目录:存放日志, 当我们需要去查看日志的时候,很有用!当我们启动tomcat错误时候,可以查询信息.

webapps 目录: 该目录下,放置我们的web应用(web 站点)。

work: 工作目录: 该目录用于存放jsp被访问后生成的对应的server文件和.class文件

3.4 Web应用的目录规范结构及首页配置

一个完整的标准Web应用的目录规范结构如下所示:

在这个目录结构中:WEB-INF目录下的classes目录将来是存放.class文件;lib 目录用来存放.jar文件;web.xml 配置当前这个web应用的信息(目前我们只需要知道这几个就够了,随着不断的深入其他的目录的用途会被一一揭晓)。

假如我们想将index.jsp页面配置为该应用的首页,则应该在web.xml文件中进行如下配置:

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

这样当我们的网址中不带资源名称时Web服务器就会将首页返回给我们。

3.5 管理虚拟目录

大多数情况下,当我们把web 应用直接放到webapps目录下,这时,tomcat会自动管理,但是有时候如果我们希望tomcat也可以管理其它目录下的web应用,该怎么办呢?使用虚拟目录配置

假如我希望tomcat帮我管理我D:\Web2(这是一个web应用):

①在tomcat的conf目录下打开server.xml文件;

②找到Host节点,添加<Context path="/myweb2" docBase="d:\web2"/>

myweb2:是访问时输入的web名,实际取出的是d:\web2中的资源

"d:\web2":要管理的物理路径。

假如我们要访问d:\web2中的index.jsp文件,实际访问时输入的地址:http://localhost:8088/myweb2/index.jsp

③重启tomcat才生效(因为tomcat待用dom技术解析xml文件。)

1 Servlet开篇准备的更多相关文章

  1. Servlet开篇

    Servlet开篇 前面我已经说过好多遍了,如何学习好一个东西其实就是2个问题: 1,这个东西是干嘛的?为什么要玩这个东西? 2,怎么样就玩好这个东西了?具体的应该玩这个东西的什么? 其实现在对于我来 ...

  2. java web简易网上书店项目系列,使用MVC模式(servlet+jstl+dbutils),开篇

    一. 针对很多java web初学者入门困难的问题,笔者利用一个小型web项目,一步一步的展示java web开发方法,每一个章节引入一些java web开发的重点知识,让同学们可以将java web ...

  3. JSP学习 —— 开篇:JSP,servlet容器,Tomcat,servlet容器之间的关系

    JSP(JAVA SERVER PAGE)的缩写,其本身就是servlet的简化,是一种动态网页标准,其特点是在HTML代码中嵌入JAVA代码,JSP标签或用户标签来生成网页.至于它为什么会出现,主要 ...

  4. JSP入门:介绍什么是JSP和Servlet(转)

    转自:http://developer.51cto.com/art/200907/134506.htm JSP入门:什么是jsp? JSP(Java Server Pages)是由Sun Micros ...

  5. 从.Net到Java学习第一篇——开篇

    以前我常说,公司用什么技术我就学什么.可是对于java,我曾经一度以为“学java是不可能的,这辈子不可能学java的.”结果,一遇到公司转java,我就不得不跑路了,于是乎,回头一看N家公司交过社保 ...

  6. Servlet、Tomcat访问(access)日志配置、记录Post请求参数

    一.运行环境: Maven:3.5.2(点击下载) ,下载页 Tomcat:8.5.29(点击下载) ,下载页 JDK:jdk1.7.0_80(点击下载) ,下载页 MavenDependency: ...

  7. Servlet容器请求处理

    红色部分为本章所述模块 所讲述的请求流程模块,大家已经很清楚了.那怎么给大家去讲的更清晰,大家理解的更容易呢?当然是,带着问题去学习,吸收或许会更快些啦.:) 开篇之前,给大家提以下几个问题,这些问题 ...

  8. 【Spring实战】----开篇(包含系列目录链接)

    [Spring实战]----开篇(包含系列目录链接) 置顶2016年11月10日 11:12:56 阅读数:3617 终于还是要对Spring进行解剖,接下来Spring实战篇系列会以应用了Sprin ...

  9. servlet基础梳理(一)

    将近一个月没看servlet了,再加上第一次学习也没有深入.仅仅是笼统的看了一遍,编了一点基础案例就过去了,如今再去看感觉跟没学过一样.这里再用一点时间把这些基础都梳理一下,加深印象并为以后高速复习做 ...

随机推荐

  1. 转:XBMC源代码分析

    1:整体结构以及编译方法 XBMC(全称是XBOX Media Center)是一个开源的媒体中心软件.XBMC最初为Xbox而开发,可以运行在Linux.OSX.Windows.Android4.0 ...

  2. Windows系统补丁KB2962872导致InstallShield无法启动(解决方案已更新)

    20140717最新更新: Flexera Software发布了临时补丁包,该补丁包暂时禁止了InstallShield Trialware功能(中国区用户很少有用此功能)两种安装方法: 方法1. ...

  3. 架设证书服务器 及 让IIS启用HTTPS服务(转)

    无废话图文教程,教你一步一步搭建CA服务器,以及让IIS启用HTTPS服务. 一.架设证书服务器(CA服务) 1.在系统控制面板中,找到“添加/删除程序”,点击左侧的“添加/删除windows组件”, ...

  4. linux的库文件

    静态库和动态库 在windows中静态库是以 .lib 为后缀的文件,共享库是以.dll 为后缀的文件.在linux中静态库是以 .a 为后缀的文件,共享库是以 .so为后缀的文件. 以linux下的 ...

  5. Oracle 11g RAC环境下Private IP修改方法及异常处理

    Oracle 11g RAC环境下Private IP修改方法及异常处理 Oracle 11g RAC环境下Private IP修改方法及异常处理 一. 修改方法 1. 确认所有节点CRS服务以启动 ...

  6. xsocks 64位平台下编译问题小记

    1.src/common/public.h uint32_t lpParameter 改为 void* lpParameter; 2.SocksMgr.cpp DWORD WINAPI CSocksM ...

  7. 圆满完成Selenium自动化测试周末班培训课程!

    圆满完成Selenium自动化测试周末班培训课程! http://automationqa.com/forum.php?mod=viewthread&tid=2704&fromuid= ...

  8. 自定义控件的自定义的属性attrs.xml下的declare-styleable中format详解

    最近在摸索自定义控件,查找到一些自定义属性的一些资料,解决转载记载下来:看了此详解才方便理解! 我们在做项目的时候,由于android自带的属性不能满足需求,android提供了自定义属性的方法,其中 ...

  9. 图文安装Windows Template Library - WTL Version 9.0

    从http://wtl.sourceforge.net/下载 WTL 9.0,或者点此链接下载:WTL90_4140_Final.zip,然后解压到你的VC目录下面, 我的地址是:C:\Program ...

  10. 获取ACCESS数据库中自增变量的值

    /// <summary> /// 获取自增变量值 /// </summary> /// <returns>自增变量值</returns> public ...