1 Servlet开篇准备

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

1. HTTP协议

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

1.1 HTTP协议之URL

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

rul地址解析如下:

e14290d6-64cb-4ff4-89b7-3af03767a73a

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请求的时间]

一个请求如下:

d721d1db-5a13-46a5-bc9d-674be5cbf5b4

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

一个请求响应如:

9ea6a57c-1a2d-4038-b9e4-b34a5d50813c

2. Web服务器

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

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

容器处理请求的过程:

66fff71b-155a-4d7a-92bb-877449d6c4fb

容器的作用:

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

2、管理Servlet的一生。

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

4、将JSP翻译为Servlet

3. Tomcat

3.1 安装tomcat服务器

解压即可。

3.2 配置

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

image

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

image

② 启动tomcat服务器

到 tomcat 主目录下 bin/startup.bat

③验证是否安装成功

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

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

1.关闭8080端口

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

2.改变Tomcat的端口号

到 conf/server.xml 文件中修改

image

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

3.3 Tomcat的目录结构

clip_image002

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应用的目录规范结构如下所示:

image

在这个目录结构中: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文件。)

转载于:https://www.cnblogs.com/yaoyinglong/p/Servlet%e5%bc%80%e7%af%87%e5%87%86%e5%a4%87.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值