日期:2014-05-16 浏览次数:20407 次
今天有时间把前6章主要讲servlet的内容坐下总结。好了,开工:
?
1.谁来负责这些任务
?
| 任务 | web服务器 | 容器 | servlet | 
| 创建请求和响应对象 | ? | 在开始线程之前创造 | ? | 
| 调用service()方法 | ? | 
 service()方法调用 ?  | 
? | 
| 开始一个新线程来处理请求 | ? | 开始一个servlet进程 | ? | 
| 把响应对象转换为一个HTTP响应 | ? | 容器由响应对象中的数据生成HTTP响应流 | ? | 
| 了解HTTP | 通过HTTP与客户浏览器对话 | ? | ? | 
| 把html增加到响应对象 | ? | ? | 这是提供给客户的动态内容 | 
| 有响应对象的一个引用 | ? | 容器把它交给servlet | 用它打印响应 | 
| 在部署描述文件中查找URL | ? | 找到对应请求的适当servlet | ? | 
| 删除请求响应对象 | ? | servlet一旦结束就删除请求和响应对象 | ? | 
| 协调生成动态内容 | 知道如何转发到容器 | 知道要调用谁 | ? | 
| 管理生命周期 | ? | 调用服务器方法 | ? | 
| 名字和部署描述文件中的<servlet-class>元素匹配 | ? | ? | 任何公共类 | 
?
?
2.servlet生命周期的3大重要时刻
?
?
??
?
| ? | 何时调用 | 作用 | 是否覆盖 | 
| init | servlet实例被创建之后,并在servlet能为客户请求提供服务之前 | 使你在servlet处理客户请求之前有机会对其初始化 | 可以 | 
| service | 当第一个请求来临时,容器会开始一个新线程 | 这个方法查看请求,确定HTTP方法,并调用 | 不可以 | 
| doGet or doPost | service根据请求的HTTP方法决定 | 从这里开始你的代码 | 至少要覆盖一个 | 
?
3.HttpServletResponse要点
最常使用的是setContentType()和getWriter()。
利用getWriter()方法可以完成字符I/O,向流写入HTML。
还可以使用响应来设置首部,发送错误,以及增加cookie。
请求重定向和请求分派是两码事。请求分派是在服务器端发生的,而重定向在客户端进行。
?
4.servlet初始化参数和上下文参数
?
| 上下文参数 | servlet参数 | 
| 部署描述文件 | |
| 
 不在servlet中 <web-app> <context-param> <param-name></param-name> <param-value></param-value> </context-param> </web-app>  | 
 在servlet中 <servlet> <servlet-name></servlet-name> <servlet-class></servlet-class> <init-param> </init-param> </servlet>  | 
| servlet代码 | |
| getServletContext().getInitParameter("foo") | getServletConfig().getInitParameter() | 
?
?
5.URL重写
在写至响应的HTML中,URL重写把会话ID增加到其中所有的URL的最后。
如果客户不接受cookie,URL重写会自动发生,但是必须显式的对所有URL编码。
要编码一个URL,需要调用response.encodeURL(aString).
  out.println("<a href =\""+response.encodeURL("/BeerTest.do")+"\">Click Me</a>");
?没有办法对静态页面完成自动URL重写,所以,如果你依赖会话,就必须使用动态页面。
?
6.关键的HttpSession方法
?
| ? | 做什么 | 怎么用 | 
| getCreationTime | 返回第一次创建会话的时间 | 得出这个会话有多老,以便限制会话的寿命 | 
| getLastAccessdTime | 返回容器最后一次有此会话ID的请求时间 | ?得出客户最后一次访问这个会话的时间,得出客户是否已经离开很长时间了 | 
| setMaxInactiveinterval | ?对于此会话,指定客户请求的最大间隔时间 | ?用于撤销会话,并可以减少服务器中无用会话的数量 | 
| getMaxInactiveinterval | ?对应此会话,返回客户请求的最大间隔时间 | ? | 
| invalidate | ?结束会话 | ? | 
?
7.8个监听者
?
| 场景 | 监听者接口 | 事件类型 | 
| 你想知道一个web应用上下文中是否增加、删除或替换了一个属性 | 
 ServletContextAttributeListener attributeAdded attributeRemoved attributeRe 
                        免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
                     
                    
                
                
            
            
            
    
        
   
 |