2017-06-19 111 views
0

假设有一个JSP包含以下内容JSP类实例成员

<%@ page import="com.example.MyClass" %> 
<% 
    MyClass myClass = new MyClass(); 
%> 

它翻译成像

public void _jspService(HttpServletRequest request, HttpServletResponse response) 
    throws java.io.IOException, ServletException { 

     // ... 

     MyClass myClass = new MyClass(); 

是否有申报myClass的已编译JSP类实例成员的方式,不是作为实例方法的本地成员,为了避免重复创建MyClass而将其重复创建为单例?

我想有像

private MyClass myClass = new MyClass(); 

public void _jspService(HttpServletRequest request, HttpServletResponse response) 
    throws java.io.IOException, ServletException { 

    // ... 

是否可以声明为静态成员?

+1

你可能想看看'application scope'。来自http://www.java-samples.com/showtutorial.php?tutorialid=1009:“** Application Scope ** 具有应用程序范围的对象可以从驻留在同一应用程序中的JSP页面访问,从而创建一个全局对所有页面都可用的对象。“ – Alexander

回答

0

如上所述,不要在JSP中使用实例变量,而应依赖于范围变量。

但这里是一个例子,如何在JSP声明实例变量:

<%! 
private MyClass myClass = new MyClass(); 
%> 

任何内部<%!...%>块将被写成JSP编译的类体。