gpt4 book ai didi

java - jsp:useBean 与简单单例

转载 作者:太空宇宙 更新时间:2023-11-04 15:14:45 25 4
gpt4 key购买 nike

我有一个类,我试图从 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>

错误:

org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.test_jsp

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

最佳答案

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

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

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

关于java - jsp:useBean 与简单单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20952032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com