1. Servlet 的初始化参数
配置:
<servlet>
<description></description>
<display-name>BeerSelect</display-name>
<servlet-name>BeerSelect</servlet-name>
<servlet-class>com.example.web.BeerSelect</servlet-class>
<init-param>
<param-name>adminEmail</param-name>
<param-value>zhangzhaoyu0524@163.com</param-value>
</init-param>
</servlet>
使用:
ServletConfig sc = this.getServletConfig();
String adminEmail = sc.getInitParameter("adminEmail");
request.setAttribute("adminEmail", adminEmail);
2. 在 Servlet 初始化之前不能使用Servlet 的初始化参数。即不能从构造函数中调用getServletConfig() 方法。
容器调用 init() 之前,它还不能算是一个完整的 Servlet。容器初始化 Servlet使,会为这个Servlet 建一个唯一的
ServletConfig。容器从web.xml 文件中读取 Servlet 的初始化参数,并把这些参数交给 ServletConfig,然后把
ServletConfig 传递给servlet 的init 方法。
3. JSP 能不能得到 Servlet 初始化参数。ServletConfig 用于 Servlet 配置(而不是JSPConfig)。所以,如果想让应用的其
他部分使用你在 web.xml 中配置的Servlet 初始化参数信息,就要通过Servlet 获取,然后request.setAttribute(key, value);
4. 针对应用的初始化参数:上下文初始化参数。
上下文初始化参数与 Servlet 初始化参数很类似,只不过上下文参数对整个Web 应用而不是一个 Servlet 可用。
这说明应用中的所有Servlet 和JSP 都自动地能访问上下文初始化参数,我们不用为每个Servlet 在Web.xml 中配置。
每个Servlet 有一个ServletConfig, 每个Web 应用有一个ServletContext。
ServletContext sct = this.getServletContext();
String contextAdminEmail = sct.getInitParameter("adminEmail");
request.setAttribute("contextAdminEmail", contextAdminEmail);
5. ServletContext 是JSP或Servlet 与容器及Web 其他部分的一个连接。
6. ServletContextListener 它能监听ServletContext一生中两个关键的事件:初始化和撤销。这个类实现了 javax.servlet.
ServletContextListener。
它能做到:上下文初始化时得到通知,上下文撤销时得到通知。
<listener>
<listener-class>com.example.listener.MyServletContextListener</listener-class>
</listener>
在初始化任何 Servlet 之前初始化应用。
7. 监听者不只是针对上下文事件,还可以监听上下文属性、servlet请求和属性,以及HTTP会话和会话属性相关的事件。
8. ServletContextAttributeListener:Web 应用上下文中是否增加、删除或替换了一个属性。
HttpSessionListener:跟踪活动的会话。
ServletRequestListener:每次请求到来之时,你都想知道,以便建立日志记录。
HttpSessionBindingListener:你有一个属性类,而且你希望这个类型的对象绑定到一个会话或从会话删除时得到通知。
HttpSessionAttributeListener:你想知道什么时候增加、删除或替换一个会话属性。
ServletContextListener:你想知道是否创建或撤销了一个上下文。
HttpSessionActivationListener:你有一个属性类,而且希望此类对象绑定的会话迁移到另一个JVM 时得到通知。
HttpAttributeListener 类只是想知道会话中何时增加、删除或替换了某种属性。但是HttpSessionBindingListener
能够让属性本身知道它何时增加到一个会话中,或者何时从会话中删除。
9. 上下文作用域不是线程安全的。同步服务方法意味着Servlet 中一次只能运行一个线程,但是并不能阻止其他Servlet 和
JSP 访问这个属性。但是可以对上下文对象加锁。
synchronized(this.getServletContext()) {
//对上下文操作
}
10. 对会话HttpSession 同步来保护会话属性。
synchronized(request.getSession()) {
//对上下文操作
}
11. 只有请求属性和局部变量是线程安全的。
12. RequestDispatcher 只有两个方法 forward 和 include
1)从ServletRequest 中得到 getRequestDispatcher(String path) path 路径作为一个资源。
2)从ServletContext 得到RequestDispatcher view = this.getServletContext().getRequestDispatcher(String path)
路径必须要以斜线开头。
include 是指把请求发给别人处理,处理完后在返回自己。
13. 当响应已经提交了,就不能再转发请求。提交了的意思是已经把相应发给客户了。
14. 使用一个 HttpSession 对象保存跨多个请求的会话状态。也就是保存与该客户的整个会话期间的会话状态。
客户需要一个唯一的会话ID 对客户的第一次请求,容器会生成一个唯一的会话ID,并通过相应把它返回给客户。
客户再在以后的每一个请求中发回这个会话ID。
15. 客户与容器是如何交换会话ID信息?
在请求发送一个会话cookie HttpSession session = request.getSession();
session.isNew() 用来判断该会话是否新的。
Session 还可以通过会话事件对象获得。
如果有时候只想使用一个已经的会话,并不像创建,则可以使用 request.getSession(false);
16. 如果客户禁用cookie 那么getSession()方法总会返回一个新会话。只能采用URL重写。把会话ID 加到各个URL后面。
URL + ;jsessionid=1234567。这样到当请求到达容器时,容器会去下请求URL 中这个额外的部分。
response.encodeURL(String) 像这个URL增加额外的JD信息。
17. 使用 sendRedirect() 的URL重写。希望把请求重定向到另外一个URL,但是还是想使用一个会话。方法如下:
response.encodeRedirectURL("path");
URL 编码由响应处理。
18. 如果客户不接受Cookie,URL 重写会自动发生,但是必须显示地对所有URL编码。没有办法对静态页面完成自动的URL重写。
所以,如果依赖于会话,就必须使用动态生成的页面。
setMaxInactiveInterval() 指定客户请求的最大时间间隔,超过容器会撤销会话。
invalidate() 结束会话。
19. 设置会话超时
1)在DD 中配置会话超时
<session-config>
<session-timeout>15</sesison-timeout>
</session-config>
2) 设定一个特定会话的会话超时
session.setMaxInactiveInterval(20*60);
20. 利用Servlet API使用Cookie
21. 会话绑定监听者和活化激活监听者不再DD 中配置,因为他们与会话本身相关。而不是与会话中放置的单个属性相关。
分享到:
相关推荐
JSP Servlet 学习笔记 第2版 林信良 随书光盘 第3卷
Servlet学习笔记(java的Servlet)。 jsp的学习基础。此笔记可让你5天内学会使用Servlet,可快速入门,也可当手册使用。 更多:http://download.csdn.net/user/daillo/all
《JSP & Servlet学习笔记(第2版)》是作者多年来教学实践经验的总结,汇集了学生在学习JSP&Servlet;或认证考试时遇到的概念、操作、应用等各种问题及解决方案。 《JSP & Servlet学习笔记(第2版)》针对Servlet 3.0的...
**林学良Jsp&Servlet学习笔记**: 这份学习资料可能是对JSP和Servlet基础知识的系统性讲解,涵盖了上述概念和原理,适合初学者入门。通过阅读这份笔记,你可以了解JSP和Servlet的基本语法、生命周期、以及如何将它们...
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...
Java相关课程系列笔记之九Servlet学习笔记 Java相关课程系列笔记之十JSP学习笔记 Java相关课程系列笔记之十一Ajax学习笔记 Java相关课程系列笔记之十二jQuery学习笔记 Java相关课程系列笔记之十三Struts2学习笔记 ...
吉林大学珠海学院JSP&Servlet学习笔记(第二版)课后答案 本资源为吉林大学珠海学院JSP&Servlet学习笔记(第二版)的课后答案,涵盖了JSP和Servlet相关的知识点。本笔记共分为九章,每章节都包含了相关的问题答案,...
**JSP(Java Server Pages)与Servlet...这个**[JSP&Servlet学习笔记(第2版)]**会涵盖这些主题,并可能包括示例代码、最佳实践和常见问题解答,帮助读者全面掌握JSP和Servlet的使用技巧,进一步提升Java Web开发能力。
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP &Servlet;时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...
[JSP&Servlet学习笔记(第2版)] 林信良
### Servlet学习笔记精炼知识点 #### 一、Servlet初始化与加载机制 1. **Servlet注册与实例化**:在Web应用中,一个Servlet的生命周期始于它的注册与实例化过程。通常,这一过程是在Web服务器启动时,根据`web.xml...
jsp&servlet学习笔记(第2版)光盘,买书附赠光盘,完片版本。
学习 JSP 和 Servlet 要注重理论与实践相结合,不仅要理解它们的工作原理,还要通过编写实际项目来提升技能。同时,不断关注新技术,如 Spring Boot 和微服务架构,这将有助于你更好地适应 Java Web 开发的未来趋势...
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。, 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做...
根据提供的文件信息,标题为“JSP&Servlet学习笔记(第2版)_打印版”,描述指出文档经过空白边裁剪处理以便于打印。虽然提供的部分内文无法直接转化为明确的知识点,但我们可以根据标题和描述推测该文档的主要内容,...