我有一个类,我试图从我的jsp页面上检索一个变量值,但是由于它是一个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.ClassNotFoundException:
org.apache.jsp.test_jsp
另外,我不确定如何从jsp页面调用
display()
方法来初始化id
变量? 最佳答案
您不应该再使用jsp:useBean了。顺便说一句,jsp:seBan期望一个公共的无参数构造函数来实例化该bean,并且您不希望有一个新实例,因为该bean应该是单例。
只需使用在部署时初始化的servlet或上下文侦听器将单例存储在应用程序范围内,然后通过EL从JSP直接使用它:
servletContext.setAttribute("myController", MyController.getInstance());