0

我在学习JSP 最近遇到了两种在JSP中创建类对象的方法

方法一:

<jsp:useBean id = "obj" class = "ClassName" />
<%
 obj.method();
%>

方法二:

<%
 ClassName obj = new ClassName();
 obj.method();
%>
  • 谁能解释一下到底有什么区别?
  • 哪个是好习惯?
  • 在哪种情况下方法 1/方法 2 是相关的,在哪些情况下不相关

先感谢您

4

4 回答 4

2

方法一:

<jsp:useBean>是用于定位或实例化 JavaBean 组件的标准操作元素。首先<jsp: useBean>尝试定位 Bean 类的实例,如果发现它没问题,那么它将从class属性中提到的类实例化它。默认情况下,如果scope未指定属性,它将在页面范围内查找对象。bean 的名称与我们在id属性中给出的相同<jsp:useBean>。如果对象引用不存在我们指定的名称,那么它将创建一个实例并找到变量的范围,class属性定义 bean 类,type属性定义 Bean 类的父类或接口。

您可以使用以下方法访问 Java bean 的 bean 样式属性<jsp:useBean>

<jsp:useBean id = "obj" class = "ClassName" />
<jsp:getProperty name="obj" property="someProperty"/>

上面的代码查找存储为objin的 Java bean page,如果找不到,则尝试使用class属性指定的类定义创建新 bean,并将新创建的 bean 设置为page范围。您尝试访问bean的someProperty属性。objsomeProperty属性应该有一个 bean 样式的 getter。阅读Oracle 教程了解更多信息。

方法二:

service()您正在生成的 Servlet的方法中创建本地对象。您没有将其设置为任何范围。

笔记:

Scriptlet 并<jsp:useBean>不可取。请使用 JSTL 和 EL 表达式。

于 2013-07-01T06:09:37.353 回答
0

<jsp:useBean>标记允许您定义bean 的范围,而在后者

的范围是生成方法的obj本地jspService()

于 2013-07-01T06:09:08.760 回答
0

在方法 1 中:您应该将方法表示为:

<jsp:useBean id = "obj" class = "ClassName" />
${obj.method()}

那么这将是比方法 2 更好的做法。

于 2013-07-01T06:11:08.860 回答
0

而是在控制器(servlet 或 portlet)中创建对象,然后使用 EL 和 JSTL 来呈现视图 (JSP)。如果可能,不要使用 scriptlet (<% %>)。

我猜方法 1 是 ClassName 类的静态方法。

于 2013-07-01T06:13:24.437 回答