【发布时间】:2015-02-01 17:20:36
【问题描述】:
这是我正在阅读的书:
鉴于此代码来自一个有效的 HttpServlet,该 HttpServlet 也已 注册为 ServletRequestAttributeListener:
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
req.setAttribute(“a”, “b”);
req.setAttribute(“a”, “c”);
req.removeAttribute(“a”);
}
public void attributeAdded(ServletRequestAttributeEvent ev) {
System.out.print(“ A:” + ev.getName() + “->” + ev.getValue());
}
public void attributeRemoved(ServletRequestAttributeEvent ev) {
System.out.print(“ M:” + ev.getName() + “->” + ev.getValue());
}
public void attributeReplaced(ServletRequestAttributeEvent ev) {
System.out.print(“ P:” + ev.getName() + “->” + ev.getValue());
}
生成什么日志输出?
答案是:
C. A:a->b P:a->b M:a->c
书上的解释是:
棘手! getValue 方法返回属性的 OLD 值,如果 属性被替换了。
我的问题是这怎么可能? 特别是这部分序列我不清楚:P:a->b 为什么又是 P:a->b 而不是 P:a->c?
【问题讨论】:
标签: servlets servlet-listeners