我正在学习JSP 最近我遇到了两种在JSP中创建类对象的方法
方法1:
<jsp:useBean id = "obj" class = "ClassName" />
<%
obj.method();
%>
方法2:
<%
ClassName obj = new ClassName();
obj.method();
%>
提前谢谢
答案 0 :(得分:2)
方法1:
<jsp:useBean>
是用于定位或实例化JavaBean组件的标准操作元素。首先<jsp: useBean>
尝试找到Bean类的实例,如果没有找到它,如果没有,那么它将从class
属性中提到的类中实例化它。默认情况下,如果未指定scope
属性,它将在页面范围中查找对象。该bean的名称与我们在id
<jsp:useBean>
属性中给出的名称相同。如果对象引用不存在我们指定的名称,那么它将创建一个实例并找到变量的范围,class
属性定义bean类,type
属性定义父类或Bean类的接口。
您可以使用<jsp:useBean>
:
<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的静态方法。