Java 在JSP中创建类对象的两种方法之间的差异
我在学习JSP 最近我遇到了两种在JSP中创建类对象的方法 方法1:Java 在JSP中创建类对象的两种方法之间的差异,java,jsp,Java,Jsp,我在学习JSP 最近我遇到了两种在JSP中创建类对象的方法 方法1: <jsp:useBean id = "obj" class = "ClassName" /> <% obj.method(); %> 方法2: <% ClassName obj = new ClassName(); obj.method(); %> 有人能解释一下到底有什么区别吗 哪一个是好的做法 方法1/方法2在哪些上下文中相关,在哪些上下文中不相关 提前感谢标记允许
<jsp:useBean id = "obj" class = "ClassName" />
<%
obj.method();
%>
方法2:
<%
ClassName obj = new ClassName();
obj.method();
%>
- 有人能解释一下到底有什么区别吗
- 哪一个是好的做法
- 方法1/方法2在哪些上下文中相关,在哪些上下文中不相关
标记允许您定义,而在后者中
obj
的范围是jspService()
生成方法的本地范围方法1:
是用于定位或实例化JavaBean组件的标准动作元素。首先,
尝试定位Bean类的一个实例,如果发现它很好,那么它将从类
属性中提到的一个类实例化它。默认情况下,如果未指定scope
属性,它将在页面范围中查找对象。bean的名称与我们在
的id
属性中给出的名称相同。如果对象引用与我们指定的名称不存在,那么它将创建一个实例并查找变量的范围,class
属性定义bean类,type
属性定义bean类的父类或接口
您可以使用
访问Java bean的bean样式属性:
上面的代码在page
中查找存储为obj
的Java bean,如果没有找到,则尝试使用class
属性指定的类定义创建新bean,并将新创建的bean设置为page
范围。您尝试访问obj
bean的someProperty
属性。someProperty
属性应该有一个bean风格的getter。再看一遍
方法2:
您正在生成的Servlet的service()
方法中创建一个本地对象。您没有将其设置为任何范围
注意:
不建议使用scriptlet和
。请使用JSTL和EL表达式。在方法1中:应将方法表示为:
<jsp:useBean id = "obj" class = "ClassName" />
${obj.method()}
${obj.method()}
然后,这将是比方法2更好的实践。而是在控制器(servlet或portlet)中创建对象,然后使用EL和JSTL呈现视图(JSP)。如果可能,不要使用scriptlets()
我猜方法1是类ClassName的静态方法 第一种方法根本不创建新对象,除非已经有一个名为
obj
的变量,否则无法工作。这两种情况是不可比较的。在方法1中:obj的参考是什么?
<jsp:useBean id = "obj" class = "ClassName" />
${obj.method()}