- 浏览: 64277 次
- 性别:
- 来自: 北京
最新评论
-
wucaifang819787:
你好!麻烦问下不知道哪个图片行不行的:http://dl.it ...
struts2源码浅析(四) -
ChenXzh:
高手,佩服得五体投地
关于struts2报There is no Action mapped for namespace / and action name xxx_xxx
今天有时间把前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 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 | 会话的生命周期 | 与客户会话有关的资源和数据,比如购物车 |
请求--线性安全 | 应用中能直接访问请求的所有部分 | 请求的生命周期 | 将模型信息传递到视图 |
发表评论
-
JAVA多线程-厕所问题
2012-11-22 11:55 1985在http://my.oschina.net/xpbug/bl ... -
第八章 最大自序列和
2012-11-01 20:29 900第八章的问题是常见的---最大自序列和 的问题 书中提 ... -
第二章 旋转字符串的思考
2012-10-26 16:09 893编程珠玑第二章旋转字符串,abcdefg向左旋转3位,变为de ... -
Mongdb的upsert出现E11000 duplicate key errors的错误分析
2012-10-25 17:36 9213昨日上线的系统,今天查日志时发现有不少E11000 dupli ... -
开源的Mongodb java client -- mango发布
2012-07-20 21:53 1886Mango ---- 一个非常简单的操作mongodb的 ... -
浅出Apache Cxf
2012-03-05 20:14 0由于业务需要,开放了系统的 Web Se ... -
struts2源码浅析(四)
2011-10-19 17:15 1595接上一篇讲了filter后,现在request到了action ... -
struts2源码浅析(三)
2011-10-19 16:50 1614接上篇http://mazhiyuan.iteye.com/b ... -
struts2源码浅析(二)
2011-10-19 16:34 2279接上一篇http://mazhiyuan.iteye.com/ ... -
struts2源码浅析(一)
2011-10-19 16:18 17861. Struts2架构图 请求首先通过Filter ... -
struts2.1权威指南-笔记
2010-12-19 22:36 11311.struts 1.x 和 struts 2.x的 ... -
Hibernate学习总结4---对象状态
2010-12-10 16:14 994session 的几个主要方法: 1,save方法和persi ... -
Hibernate学习总结3 --配置文件
2010-12-10 16:10 995如果不希望使用默认的hibernate.cfg.xml 文件作 ... -
Hibernate 学习总结一
2010-12-10 14:54 897引入: 模型不匹配(阻 ... -
jquery源码分析之属性篇
2010-11-20 20:09 1954jquery提供了一些快捷函 ... -
HF servelt&jsp 定制标记开发 要点总结
2010-11-13 11:41 13351.标记文件使用一个页 ... -
bean相关标准动作总结+复习
2010-11-07 23:22 7961.<jsp:useBean>动作会定义一个变量, ... -
HF servlet&jsp ---include 指令和动作元素
2010-11-07 23:02 8371.include的2种方式 include多用于网站中可重用 ... -
HF servlet&jsp 总结—无脚本的JSP
2010-11-04 18:26 8478无脚本的JSP 8.1在JSP页面使用动作元素 <js ... -
HF servlet&jsp 总结—使用JSP
2010-11-02 17:37 800初看HF系列的servlet&jsp前6章主讲的ser ...
相关推荐
Servlet是Java Web开发中的一个重要组件,它主要用于扩展服务器的功能,处理来自客户端(通常是浏览器)的请求并返回响应。在这个“servlet实现身高体重比测试”的项目中,我们将深入理解Servlet的生命周期、EL...
在描述中的"XHTML第一到十四章习题"部分,你将深入理解如何使用CSS来美化和增强HTML页面的用户体验。 XHTML结合了HTML的易读性与XML的严谨性,要求标签必须闭合,使得文档结构更加规范。例如,` `标签在HTML中...
HF9624串口服务器是一款专为串口设备联网设计的强大硬件,它提供了一整套功能完善的解决方案,使得串口设备能够轻松接入无线或有线网络。此设备支持Wi-Fi连接,同时具备10/100M以太网自适应能力,能够在不同网络环境...
《Vault Guide to PE & HF Interviews》是一本专为求职者准备的指南,主要涵盖了私募股权(Private Equity, PE)和对冲基金(Hedge Fund, HF)行业的面试准备。这本书由Vault.com出版,并且根据Colin H. (hjiang4@u....
ANSYS的HF&SI产品是电磁仿真领域的旗舰级解决方案,主要针对高频和信号完整性问题。在R17版本中,该产品引入了一系列的新功能,旨在提高设计效率、精确度和自动化程度,尤其对于电机高效率设计、电子散热、物联网、...
HF3FF与HF3FD系列继电器是电子产品设计中常用的一种元器件,尤其在自动控制、信号切换等领域有着广泛的应用。这两个系列的继电器都属于5脚单刀双掷(SPDT)类型,这意味着它们拥有一个输入线圈和两个可切换的输出...
标题 "PW20_PW21_HF2211_HF2221_HF6208_HF9610_HF5122_1.40.5_20200426.zip" 提供的是一个固件更新的压缩包文件,其中包含了多个汉枫(HF)设备的固件。这个特定的更新针对的是HF2211型号,版本号为1.40.5。发布日期...
总结一下,HF_VC6sword.exe可能是一个为Visual C++ 6.0用户设计的工具,包含源代码,能够帮助开发者进行某种形式的编程辅助工作。为了深入了解这个工具的具体功能和用法,最佳方式是参考提供的博文链接。如果你是C++...
百度为您找到相关结果约758个HF线切割编控一体化系统|线切割编程|线切割编程教程--琛扬数控在编程中,HF系统均采用双精度计算;HF系统所生成的加工代码均采用绝对式的G代码,其数值精确保留到小数点第四位;HF系统在加工...
### CR95HF操作命令详解 #### 一、概述 CR95HF是一款高性能的射频识别(RFID)读写器芯片,广泛应用于各种近距离无线通讯(NFC)及RFID场景。本文将详细介绍CR95HF的部分核心操作命令及其功能,以便开发者能够更好地...
&he0,&he2,&he4,&he6,&he8,&hea,&hec,&hee,&hf0,&hf2,&hf4,&hf6,&hf8,&hfa,&hfc,&hfe, _ &h1b,&h19,&h1f,&h1d,&h13,&h11,&h17,&h15,&h0b,&h09,&h0f,&h0d,&h03,&h01,&h07,&h05, _ &h3b,&h39,&h3f,&h3d,&h33,&h31,&...
《HF9.0线切割控制软件:智能化与高效加工的典范》 HF9.0线切割控制软件是一款专为线切割工艺设计的先进控制程序,它集成了多种智能化功能,旨在提升加工效率和精度,同时确保操作简便。该软件的核心亮点在于其停电...
标题中的“HF & VUC Fyn-crx插件”指的是一个特定的浏览器扩展程序,用于增强HF & VUC Fyn平台的用户体验。HF & VUC Fyn可能是一个丹麦语的在线服务或者应用,专注于提供某种特定的功能或内容,如教育、信息传播或是...
本篇文章将深入探讨HF3FF继电器的AD封装、JQC-HF3F-005型号及其在Altium Designer中的应用。 首先,让我们了解一下HF3FF继电器的封装。封装是指电子元件在电路板上的物理形状和尺寸,它决定了元件如何在PCB(印制...
下面将根据手册中的主要内容,总结出关于HF500的详细知识点。 首先,HF500扫描器的连接方式包括USB和RS232两种。在连接扫描器之前,需要关闭计算机电源,待扫描器完全连接后,再打开计算机电源。这样做的目的是为了...
hf线切割v7.03下载 703.EXE