无法理解jsp语法 打开日志

无法理解jsp语法 打开日志,jsp,Jsp,获取日志文件对象(MyLog)并将其分配给log,如果该对象为空,则继续实例化新对象。我先读了面向对象编程的基础知识。这是惰性初始化设计模式的一个例子。您的示例可以用以下getter表示: <%@page language="java" contentType="text/html"%> <%@ page import="MyClasses.*"%> <html><head><title>Switch the log ON</

获取日志文件对象(MyLog)并将其分配给log,如果该对象为空,则继续实例化新对象。我先读了面向对象编程的基础知识。

这是惰性初始化设计模式的一个例子。您的示例可以用以下getter表示:

<%@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(
如您所见,
var
仅在第一次访问时才初始化:如果不需要它,则根本不会创建它。使用此模式,您可以避免预先创建过多对象,而只在需要时创建它们。当对象相当重且其中许多不经常使用时,这种方法可能会显著提高应用程序在负载下的性能

这就是说,您最好找一些不提倡在JSP中使用Scriptlet的书籍/资源,因为这被认为是一种糟糕的编程实践。

1)JSP有许多隐式对象,其中一个是应用程序对象

2)JSP的应用程序object=servlet的ServletContext对象(getServletConfig().getServletContext()

3)这些对象用于访问web.xml配置信息。每个web应用程序只有一个
ServletContext或应用程序对象

您的代码解释:


application.getAttribute(“logFile”)
正在尝试查找一些对象/值,其关联的字符串(变量)是上下文中的logFile。

在jsp文件中发布所有代码。是的,我应该是,我正在阅读核心java并行代码。我可以在哪一部分看到上面的声明呢?你可以试着读一下。虽然如果你正在读一本书,也许你不需要了解你目前的处境。也许作者只是想让你在后面的章节中有一个初步的解释。谢谢你的链接。我了解所有对象共享的应用程序对象及其方法。application.getAttribute(“logfile”)将为我获取属性logfile的值,如果我之前有setAttribute,否则为null。在本例中,它第一次计算为null,然后设置为MyLog类的对象。这意味着在这之后,每当我得到属性,我就得到对象本身。。我的理解正确吗?(MyFile)是用于类型转换的吗?是的,如果MyLog对象已实例化,则会得到它。如果没有,那么代码实例化了一个新的,从我所看到的。是的,就是为了这个。抱歉,我不明白您刚才指的只是语法的(MyLog)部分。
private String var;
public String getVar() {
    if(var == null) {
        var = "I was initialized lazily in a getter";
        return var;
    } else {
        return var;
    }
}