2014-01-06 21 views
1

我有一個類,我試圖從我的jsp頁面檢索變量值,但因爲它是一個單例,它似乎有問題。jsp:useBean with Simple Singleton

MyController.java

public class MyController { 

    private static volatile MyController myController = new MyController(); 
    private Integer id; 

    private MyController() { 
    } 

    public static MyController MyController() { 
     return myController; 
    } 

    public void display() { 
     id = 1; 
    } 

} 

test.jsp的

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Test</title> 
    </head> 
    <body> 
     <jsp:useBean id="myController" scope="application" class="test.controller.MyController"/> 
     <p> 
      The ID is: ${myController.id}! 
     </p> 
    </body> 
</html> 

錯誤

org.apache.jasper.JasperException:java.lang中.Clas sNotFoundException: org.apache.jsp.test_jsp

而且,我不知道如何調用從JSP頁面中的display()方法來初始化id變量?

回答

0

你不應該選擇jsp:useBean了。 BTW,jsp:seBan期望一個公共的無參數構造函數來實例化這個bean,並且你不需要一個新的實例,因爲bean應該是一個單例。

只需使用是在部署時或上下文監聽器來存儲應用程序範圍內的單身初始化一個servlet,並直接使用它,使用EL,從JSP:

servletContext.setAttribute("myController", MyController.getInstance());