HF servlet&jsp 前6章要点总结
今天有时间把前6章主要讲servlet的内容坐下总结。好了,开工:
?
1.谁来负责这些任务
?
任务web服务器容器servlet创建请求和响应对象?在开始线程之前创造?调用service()方法?service()方法调用
?
?开始一个新线程来处理请求?开始一个servlet进程?把响应对象转换为一个HTTP响应?容器由响应对象中的数据生成HTTP响应流?了解HTTP通过HTTP与客户浏览器对话??把html增加到响应对象??这是提供给客户的动态内容有响应对象的一个引用?容器把它交给servlet用它打印响应在部署描述文件中查找URL?找到对应请求的适当servlet?删除请求响应对象?servlet一旦结束就删除请求和响应对象?协调生成动态内容知道如何转发到容器知道要调用谁?管理生命周期?调用服务器方法?名字和部署描述文件中的<servlet-class>元素匹配??任何公共类?
?
2.servlet生命周期的3大重要时刻
??
?
??
?
?何时调用作用是否覆盖initservlet实例被创建之后,并在servlet能为客户请求提供服务之前使你在servlet处理客户请求之前有机会对其初始化可以service当第一个请求来临时,容器会开始一个新线程这个方法查看请求,确定HTTP方法,并调用不可以doGet or doPostservice根据请求的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
attributeReplaced
ServletContextAttributeEvent你想知道有多少个并发用户HttpSessionListener
sessionCreated
sessionDestroyed
HttpSessionEvent每次请求到来时记录日志ServletRequestListener
requestInitialized
requestDestroyed
ServletRequestEvent你想知道什么时候增加、删除和替换一个请求属性ServletRequestAttributeListener
attributeAdded
attributeRemoved
attributeReplaced
ServletRequestAttributeEvent你有一个属性类,并想把它绑定到一个会话或从会话删除时得到通知HttpSessionBinding
valuedBound
valueUnbound
HttpSessionBindingEvent你想知道什么时候增加、删除或替换一个会话属性HttpSessionBinding
attributeAdded
attributeRemoved
attributeReplaced
HttpSessionBindingEvent你想知道是否创建或插销了一个上下文ServletContextListener
contextInitialized
contextDestroyed
ServletContextEvent你有一个绑定到会话的属性类,当它迁移到另一个jvm时得到通知HttpSessionListener
sessionDidActivate
sessionWillPassivate
HttpSessionEvent?
8.属性作用域
?可访问性作用域适用于上下文--非线性安全web应用的所有部分所部署的生命周期整个应用共享的资源会话--非线性安全访问这个特定会话的所有servle和jsp会话的生命周期与客户会话有关的资源和数据,比如购物车请求--线性安全应用中能直接访问请求的所有部分请求的生命周期将模型信息传递到视图