Java jsp:useBean与简单单例

Java jsp:useBean与简单单例,java,jsp,singleton,Java,Jsp,Singleton,我有一个类,我正试图从我的jsp页面上检索一个变量值,但因为它是一个单例,所以它似乎有问题 MyController.java public class MyController { private static volatile MyController myController = new MyController(); private Integer id; private MyController() { } public static My

我有一个类,我正试图从我的jsp页面上检索一个变量值,但因为它是一个单例,所以它似乎有问题

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>

测验

ID为:${myController.ID}!

错误

<%@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.jaspereException:java.lang.ClassNotFoundException: org.apache.jsp.test\u jsp


另外,我不知道如何从jsp页面调用
display()
方法来初始化
id
变量?

您不应该再使用jsp:useBean了。顺便说一句,jsp:seBan需要一个公共的无参数构造函数来实例化bean,而您不需要一个新实例,因为bean应该是一个单实例

只需使用在部署时初始化的servlet或上下文侦听器将单例存储在应用程序范围中,并使用EL从JSP直接使用它:

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

这是一个可以接受的答案吗?应在何处插入该行?servletContext是什么类/包?