java学习------Head First Servlets & Jsp学习

为什么使用Servlet和JSP

Web服务器接收客户请求,然后向客户返回一些结果。

服务器一般向浏览器发送一组用HTML编写的指令,使用HTTP发送。

HTTP是Web上客户和服务器之间进行通信所使用的协议。

web服务器只提供静态内容,servlet负责提供动态内容。

HTTP代表超文本传输协议,这是web上使用的网络协议,HTTP运行在TCP/IP之上,使用一种请求/相应模型,客户做出一个HTTP请求,Web服务器返回一个HTTP相应,再由浏览器(根据响应的内容类型)确定如何处理。

MIME类型(content-type)告诉浏览器需要接受哪一类数据,以便浏览器知道如何加以处理(呈现html、显示图片。。。)

Web应用体系结构

Servlet没有main()方法,它们受控于另一个java应用,这个java应用称为容器。(如tomcat)

请求---->web服务器应用----->web容器应用----->servlet

容器为servlet提供了:

  • 通信支持,利用容器提供的方法,你能轻松的让servlet与web服务器对话,无需自己建立ServerSocket、监听端口、创建流等。
  • 生命周期管理,容器控制着servlet的生与死,它会负责加载类、实例化和初始化类、调用servlet方法,并使servlet实例能够被垃圾回收。
  • 多线程支持,容器会自动的为它加收的每个servlet请求创建一个新的java线程。
  • 声明方式实现安全,利用容器,可以使用XML部署描述文件来配置安全性,而不必将其硬编码写到servlet类代码中
  • JSP支持

作为servlet

servlet的存在就是为了客户服务,servlet的任务是得到一个客户的请求,再发回一个响应。

容器全盘控制着servlet的一生,它会创建请求和响应对象,为servlet创建一个新线程或分配一个线程,另外调用servlet的service()方法,并传递请求和响应对象的引用作为参数。

servlet的生命周期其实很简单,只有一个主要的状态-----初始化,如果servlet没有初始化,那要么正在初始化(运行其构造函数或init()方法)、正在撤销(运行其destroy方法),要么就是还不存在。

  1. 加载类    servlet.class
  2. 初始化servlet(默认的午餐构造器运行)
  3. init()方法,servlet实例创建后,并在servlet能为客户请求提供服务之前,容器对servlet调用init()方法,一生只调用一次。
  4. service()方法,每一个客户请求到来时,容器会开始一个新线程,或者从线程池中分配一个线程,并调用servlet的service()方法
  5. doGet()、doPost()方法,在这里执行你真正的业务代码。
  6. destroy()方法,在servlet被杀死之前,有机会清理资源。

每个请求都是在一个单独的线程中运行(单实例、多线程)

作为web应用

每个servlet都有一个servletConfig对象,

每个web应用都有一个servletContext对象

8种主要监听者

  1. ServletContextAttributeListener    监听web上下文是否增加、删除、替换属性
  2. HttpSessionListener     如果你想知道有多少个并发用户,追踪活动的会话
  3. ServletRequestListener     每次请求到来时,你都想知道,以便建立日志记录
  4. ServletRequestAttributeListener     增加、删除、替换一个请求属性时,你希望知道
  5. HttpSessionBindingListener     你有一个属性类,而且你希望这个类型的对象在绑定到一个会话、从一个会话中删除时,你可以得到通知。
  6. HttpSessionAttributeListener     增加、删除或替换一个会话属性时,你希望知道。
  7. ServletContextListener     你想知道是否创建或者撤销了一个上下文
  8. HttpSessionActivationListener    你有一个属性类,而且希望这个类型的对象在其绑定的会话迁移到另一个JVM时得到通知。

三个主要作用域:上下文、会话、请求

会话管理

Web服务器没有短期记忆

http协议使用的是无状态连接,客户浏览器与服务器建立连接,发出请求,得到响应,然后关闭连接。连接只为一个请求/响应存在。

HttpSession  对客户的第一个请求,容器会生成一个唯一的会话ID,并通过响应把它返回给客户,客户在以后的每一个请求中发回这个会话ID,容器看到ID后,就会找到匹配的会话,并把这个会话和请求关联。,cookie

部署Web应用

war文件只是web应用结构的一个快照,采用了一种更可移植的压缩形式。

servlet安全划分为4大概念:认证、授权、机密性、数据完整性。

过滤器和包装器

过滤器允许你拦截请求,而且servlet对此一无所知。




















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值