2013-02-21 100 views
1

认为我已经声明一个类为:使用<jsp:useBean>标签

public class Calcultor{ 

public int cube(int n){return n*n;} 

} 

现在都是下面的声明一样吗?

1)的index.jsp:

<jsp:useBean id=obj class="Calculator"/> 
<% 
int m=obj.cube(5); 
out.println("cube of 5 is "+m) 
%> 

和 2)的index.jsp:

<% 
Calculator obj=new Calculator(); 
int m=obj.cube(5); 
out.println("cube of 5 is "+m); 
%> 

,如果两者都一样,有什么优势?

回答

0

如果我们用useBean标记将隐藏的“Java编码”得到像HTML代码structure..it的感觉会给统一的外观页面代码...

在第二个是在里面的“jsp scriplet”,当我们想要在jsp页面中编写一个java多重语句时使用(大多数情况下避免在mvc体系结构中将biz逻辑和视图一起写入).... :-)

+0

欢迎SO。考虑改写你的答案,使其更加明确,并更直接地回答问题。 – UpHelix 2013-02-21 16:48:03

2

这不一样。 jsp:useBean将在某个范围(请求,会话...)中找到计算器的一个实例,这个范围有人以前创建过(servlet,框架,控制器等),而scriptlet创建一个新实例。

检查:

http://docs.oracle.com/javaee/1.3/tutorial/doc/JSPIntro11.html

BTW立方体的实现是错误的,应该是返回N * N * N