.设计一个程序,验证在访问作用域范围的内置对象时,如果在不同的属性范围中设置了同一个属性名称,那么它的查找顺序为:page、request、session、application。并且找到就结束,不再继续查找。
时间: 2024-05-03 16:16:58 浏览: 71
以下是一个简单的示例程序,用于演示如何验证在访问作用域范围的内置对象时,属性名称查找的顺序:
```java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ScopeDemoServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 在不同的范围中设置同一个属性名称
pageContext.setAttribute("name", "Page Scope", PageContext.PAGE_SCOPE);
request.setAttribute("name", "Request Scope");
HttpSession session = request.getSession();
session.setAttribute("name", "Session Scope");
getServletContext().setAttribute("name", "Application Scope");
// 在不同的作用域中查找属性名称
String name1 = (String) pageContext.getAttribute("name");
String name2 = (String) request.getAttribute("name");
String name3 = (String) session.getAttribute("name");
String name4 = (String) getServletContext().getAttribute("name");
// 输出查找结果
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h3>属性名称查找顺序:</h3>");
out.println("<ol>");
out.println("<li>" + name1 + "</li>");
out.println("<li>" + name2 + "</li>");
out.println("<li>" + name3 + "</li>");
out.println("<li>" + name4 + "</li>");
out.println("</ol>");
out.println("</body></html>");
}
}
```
在上面的示例程序中,我们在不同的范围中设置了同一个属性名称,然后在不同的作用域中查找该属性名称。程序输出属性名称查找的顺序,并且通过输出结果验证了查找顺序为:page、request、session、application。如果找到了属性名称就结束查找,不再继续查找。
阅读全文