《Head First Servlets & JSP》-4-请求和响应
Posted ITRoad
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Head First Servlets & JSP》-4-请求和响应相关的知识,希望对你有一定的参考价值。
Servlet生命周期
生命周期三大重要时刻
Servlet集成结构:
方法 | init() | service() | doGet()/goPost() |
---|---|---|---|
何时调用 | Servlet实例被创建之后、为客户请求提供服务之前 | 当第一个客户请求到来时 | service()根据HTTP方法来选择调用 |
作用 | 初始化 | 查看客户请求并调用相应的方法 | 这里是我们的功能代码 |
是否覆盖 | 若有自己的初始化要求(如获得数据库连接、想其他对象注册),则需要覆盖;否则运行GenericServlet的init() | 一般不覆盖 | 至少覆盖其一,因为HttpServlet的doGet()/doPost()什么也不做,且service()方法结束,线程就结束(或进入线程池) |
注意:
- 初始化很重要,因为在调用构造函数和init()方法之间,Servlet处于一种薛定谔Servlet状态
- 任何Servlet类都不会有多个实例(只有一种糟糕的情况除外,SingleThreadModel)
- 对应每个客户请求,会生成一对新的请求和响应对象
GET和POST的区别
方法 | GET | POST |
---|---|---|
消息体 | 无 | 有 |
数据大小 | 限制 | 无限制 |
安全控制 | 无 | 有 |
可建立书签 | 是 | 否 |
幂等性 | 是 | 否 |
Servlet生命周期和API要点
HTTP和HttpServletRequest要点
响应
一个最佳实践
response.setContentType("text/html");
如上,先调用setContentType()方法,然后再调用获得输出流的方法(getWriter()或getOutputStream()),这样能保证不会遭遇内容类型和输出流之间的冲突。输出内容的两个选择
PrintWriter:
OutputStream:
请求重定向和请求分派
方法|重定向|请求分派
浏览器地址|改变|不改变
具体工作的完成|客户端(浏览器)|服务器
重定向中的URL
- 相对路径
相对当前请求的路径:
- 绝对路径
绝对路径到应用(即上下文根)
HttpServletResponse要点
以上是关于《Head First Servlets & JSP》-4-请求和响应的主要内容,如果未能解决你的问题,请参考以下文章
《Head First Servlets & JSP》-5-属性和监听
《Head First Servlets & JSP》-4-请求和响应
《Head First Servlets & JSP》-10-定制标记开发
《Head First Servlets & JSP》-6-会话管理