0
<%@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 的新手。我从一个医生那里得到了以上几行。我无法理解粗体字。有人可以告诉我它是什么样的类型转换吗?

4

3 回答 3

1

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

于 2013-04-22T02:33:11.057 回答
0

1) JSP有很多隐含对象,其中1个是应用对象。

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

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

您的代码解释:

application.getAttribute("logFile")试图在上下文中找到一些关联字符串(变量)为logFile的对象/值。

于 2013-04-22T08:09:55.193 回答
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 的书籍/资源,因为这被认为是一种糟糕的编程实践。

于 2013-04-22T05:43:44.713 回答