servlet与容器
- 用户点击一个链接,链接的URL指向一个servlet.
- 容器看出这个请求指向一个一个servlet,容器创建两个对象,HttpServletRequest和HttpServletResponse.
- 容器根据请求中的URL查找正确的servlet,为这个请求创建或分配一个线程,并调用servlet的service()方法(传参为HttpServletRequest和HttpServletResponse).
- service()方法根据请求方法(get|post|etc)确定调用那个方法.
- servlet使用响应对象将响应写至客户(java.io.PrintWriter out = response.getWriter()).响应通过容器传回.
- service()方法结束,线程撤销|返回线程池.(请求和响应对象引用已经出了作用域,GC回收).
servlet生命周期:
- 容器加载servlet类
- 初始化servlet(执行构造函数).
- 执行init(),该方法仅调用一次.(该方法在servlet实例创建后,servlet为客户提供服务之前调用.可以覆盖)
- service(),处理客户请求,每个请求都在一个单独的线程中运行.(不太可能覆盖,业务逻辑主要在doPost()等中执行)
- destroy(),容器调用该方法,仅调用一次.
get()和post():service()通过方法决定调用doGet()|doPost()
- get:处理简单请求,参数跟随在URL路径之后.www.example.com/?param1='value1'¶m2='value2'在http规范中是幂等的.
- post:接受和处理表单请求,传递的数据在请求体中.在http规范中不是幂等的.
request:HttpServletRequest API
response:
响应是返回给客户的浏览器,浏览器解析和呈现的.可以为PrintWriter(字符)或