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会话的生命周期与客户会话有关的资源和数据,比如购物车
请求--线性安全应用中能直接访问请求的所有部分请求的生命周期将模型信息传递到视图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值