在JSP中创建类对象的两种方法之间的区别

时间:2013-07-01 06:06:44

标签: java jsp

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

方法1:

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

方法2:

<%
 ClassName obj = new ClassName();
 obj.method();
%>
  • 任何人都可以解释一下究竟有什么区别吗?
  • 哪种做法很好?
  • 在哪种情况下,方法1 /方法2是相关的,而不是

提前谢谢

4 个答案:

答案 0 :(得分:2)

方法1:

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

您可以使用<jsp:useBean>

访问Java bean的bean样式属性
<jsp:useBean id = "obj" class = "ClassName" />
<jsp:getProperty name="obj" property="someProperty"/>

上面的代码在obj中查找存储为page的Java bean,如果它没有找到尝试使用class指定的类定义创建新bean属性并将新创建的bean设置为page范围。您尝试访问someProperty bean的obj属性。 someProperty属性应该具有bean样式的getter。浏览Oracle tutorial了解更多信息。

方法2:

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

注意:

不建议使用Scriptlet和<jsp:useBean>。请使用JSTL和EL表达式。

答案 1 :(得分:0)

<jsp:useBean>标记允许您定义scope of the bean,而后者

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

的本地范围

答案 2 :(得分:0)

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

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

然后,这将是方法2的好习惯。

答案 3 :(得分:0)

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

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