<%@page language="java" contentType="text/html"%>
<%@ page import="MyClasses.*"%>
<html><head><title>Switch the log ON</title></head><body>
<%
**MyLog log = (MyLog)application.getAttribute("logFile");**
if (log == null) {
try {
log = new MyLog(
我是Java和Jsp的新手。我从文档中得到了以上几行。我无法用粗体理解这一行。有人可以告诉我它看起来像是一个类型吗?
答案 0 :(得分:1)
获取logFile对象(MyLog)并将其分配给日志,如果对象为空,则继续实例化新对象。我首先阅读了面向对象编程的基础知识。
答案 1 :(得分:0)
这是延迟初始化设计模式的一个示例。您的示例可以使用以下getter表示:
private String var;
public String getVar() {
if(var == null) {
var = "I was initialized lazily in a getter";
return var;
} else {
return var;
}
}
正如您所看到的,var
仅在第一次访问时才初始化:如果不需要,则根本不会创建它。使用此模式,您可以预先避免创建太多对象,并仅在需要时创建它们。当对象非常繁重并且很多对象很少使用时,这种方法可以显着提高应用程序在负载下的性能。
也就是说,你最好找到不提倡在JSP中使用scriptlet的书籍/资源,因为它被认为是一种糟糕的编程习惯。
答案 2 :(得分:0)
1) JSP有许多隐式对象,其中1个是应用程序对象。
2) JSP的应用程序对象= servlet的 ServletContext 对象( getServletConfig()。getServletContext())。
3)这些对象用于访问 web.xml 配置信息。每个Web应用程序只有一个 ServletContext 或应用程序对象。
您的代码解释:
application.getAttribute("logFile")
正在尝试在上下文中找到某个对象/值,其关联的键字符串(变量)为 logFile 。