Servlet生命周期

生命周期三大重要时刻

Servlet集成结构:

方法 init() service() doGet()/goPost()
何时调用 Servlet实例被创建之后、为客户请求提供服务之前 当第一个客户请求到来时 service()根据HTTP方法来选择调用
作用 初始化 查看客户请求并调用相应的方法 这里是我们的功能代码
是否覆盖 若有自己的初始化要求(如获得数据库连接、想其他对象注册),则需要覆盖;否则运行GenericServlet的init() 一般不覆盖 至少覆盖其一,因为HttpServlet的doGet()/doPost()什么也不做,且service()方法结束,线程就结束(或进入线程池)

注意:

  • 初始化很重要,因为在调用构造函数和init()方法之间,Servlet处于一种薛定谔Servlet状态
  • 任何Servlet类都不会有多个实例(只有一种糟糕的情况除外,SingleThreadModel)
  • 对应每个客户请求,会生成一对新的请求和响应对象

GET和POST的区别

  • GET

  • POST

  • 区别

方法 GET POST
消息体
数据大小 限制 无限制
安全控制
可建立书签
幂等性

Servlet生命周期和API要点



HTTP和HttpServletRequest要点



响应

  • 一个最佳实践

    response.setContentType("text/html");

    如上,先调用setContentType()方法,然后再调用获得输出流的方法(getWriter()或getOutputStream()),这样能保证不会遭遇内容类型和输出流之间的冲突。

  • 输出内容的两个选择

    PrintWriter:



    OutputStream:

请求重定向和请求分派

方法|重定向|请求分派

浏览器地址|改变|不改变

具体工作的完成|客户端(浏览器)|服务器

重定向中的URL

  • 相对路径

    相对当前请求的路径:

  • 绝对路径

    绝对路径到应用(即上下文根)

HttpServletResponse要点



最新文章

  1. php 获取当前服务器 系统
  2. ToolStrip控件在窗体没有焦点的情况下,需要单击二次才能够激发事件的解决办法
  3. Java基础(4):Scanner输入的典型应用
  4. maven在windows环境下加载settings.xml文件
  5. 【虚拟化】支持IDE/SATA/SCSI
  6. PHP中括号“{}”的3个作用
  7. 1036. Boys vs Girls (25)
  8. Duplicate Protocol Definition of DTService Is Ignored
  9. 无法从“const char *”转换为“char *”
  10. JS菜单条智能定位效果
  11. 用U盘安装Ubuntu15.04
  12. Download and Install Apache Zookeeper on Ubuntu
  13. [Swift]LeetCode691. 贴纸拼词 | Stickers to Spell Word
  14. Python动态语言的特性
  15. 【js】【图片瀑布流】js瀑布流显示图片20180315
  16. cocos2dx为Sprite添加触摸事件监听器
  17. Mybatis框架二:增删改查
  18. Sitecore CMS中更改项目的模板
  19. log4j2笔记 #04# Appender的三个基本款以及RollingFile的各种示例配置
  20. memory prefix pre,pro,penta,pseudo out _p 1

热门文章

  1. HihoCoder1181欧拉路(Fleury算法求欧拉路径)
  2. element table固定表头,表的高度自适应解决方法
  3. Python List reverse()方法
  4. BZOJ3489:A simple rmq problem
  5. Monkey测试与MonkeyRunnner测试的区别
  6. Oracle 内存结构
  7. xcode修改横屏
  8. 2010.1.1 CLR 无法从 COM 上下文
  9. java 多线程系列基础篇(九)之interrupt()和线程终止方式
  10. javascript——对象的概念——Object(未完)