Servlet介绍

Servlet介绍

1. 简介:

Servlet(Server Applet),全名叫“Java Servlet,它是运行于服务器上的程序,是用来处理服务器请求的。Servlet采用了经典的B/S模型(Browser/Server),即浏览器/服务器模型,而Servlet就是对请求作出处理的组件,它运行于支持Java的应用服务器中。

2. 工作流程

Servlet的工作方式是由客户通过浏览器向服务器发送request请求,服务器接收到请求后,启动并调用相应的servlet程序,servlet程序根据客户端发送的请求生成响应的内容后返回给服务器,再由服务器将响应后的内容返回给客户端,这些数据一般都呈页面化的方式将响应后的数据展现给客户。

3. 工作原理
  1. 客户端发送请求至服务器端;

  2. 服务器端根据web.xml文件中的Servlet相关配置信息,将客户端请求转发到相应的Servlet

  3. Servlet引擎调用Service()方法,根据request对象中封装的用户请求与数据库进行交互,返回数据之后,Servlet会将返回的数据封装到response对象中;

  4. Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求

  5. 服务器将响应返回给客户端

对于每一个应用程序,Servlet容器还会创建一个ServletContext对象。这个对象中封装了上下文(应用程序)的环境详情。每个应用程序只有一个ServletContext。每个Servlet对象也都有一个封装Servlet配置的ServletConfig对象。

工作原理如下图:

在这里插入图片描述

4. 生命周期

在这里插入图片描述

1) 加载和实例化;在第一次请求Servlet时,Servlet容器将会创建Servlet实例;

2) 初始化;Servlet容器加载完成Servlet之后,必须进行初始化,此时,init方法将被调用;

3) Servlet初始化之后,就处于响应请求的就绪状态,此时如有客户端请求发送,就会调用Servlet实例的service**()**方法,并且根据用户的请求方式,调用doPost或者doGet方法;

4) 最后,Servlet容器负责将Servlet实例进行销毁,调用destroy方法实现;

对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。

一般Servlet只初始化一次(只有一个对象),当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法。

5. HttpServlet

HttpServlet

6. Get、Post、doGet、doPost

(一)Get与Post

1)传送的数据量
GET方式:数据量长度有限制,一般不超过2kb。因为是参数传递,且在地址栏中,故数据量有限制。
POST方式:适合大规模的数据传送。因为是以实体的方式传送的。

2)安全性
GET方式:安全性差。因为是直接将数据显示在地址栏中,浏览器有缓冲,可记录用户信息。所以安全性低。
POST方式:安全性高。因为post方式提交数据时是采用的HTTP post机制,是将表单中的字段与值放置在HTTP HEADER内一起传送到ACTION所指的URL中,用户是看不见的。

3)在用户刷新时
GET方式:不会有任何提示、
POST方式:会弹出提示框,问用户是否重新提交

区别:

  1. get是从服务器上获取数据,post是向服务器传送数据。
  2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
  3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
  4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
  5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。 建议: 1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

(二)doGet与doPost

客户端向服务器端发送请求后,服务器会调用service方法解析请求,如果是Get请求就会调用doGet方法,如果是Post请求就会调用doPost方法。

补充: HTTP协议

特点:

  1. 无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作
  2. 无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
  3. 基于请求和响应:基本的特性,由客户端发起请求,服务端响应
  4. 简单快速、灵活
  5. 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性

部分内容借鉴或转载了CSDN网站以下博客:

Servlet详细教程

HttpServlet 类

JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)

HTTP和HTTPS协议,看一篇就够了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值