import 只是帮你在这个页面中声明对一个类的引入,并没有使用这个类
jsp:useBean是帮你产生一个类的实例:),用import是没有直接的产生实例!但是不是说不能生成!
而jsp:useBean是直接生成的!那么效率也就不用说了吧!useBean是在ACTION里serAttribute的实例,也就是带有数据的实
例,而import是没有实例过的CLASS,两者概念完全不同的!
这个无所谓常用不常用的问题,假设我现在要在JSP中引用java.util.Date这个类作为JAVABEAN
可以这样写:
class="java.util.Date" />
/>
也可以这样写:
"java.util.Date"%>
Date date=new Date();
out.println(date.getTime());
%>
两种效果是一样的,
第一种是以标签的形式,即JAVABEAN来实现的,这种方式要求JAVA类中有不带参数的构造函数,并且初始化时只能初始化不带参数的构造函数
第二种是以传统的编码方式来实现的,可以初始化带参数的构造函数,并且不需要JAVA类中一定带有不带参数的构造函数 第一种方式适合JAVABEAN,即那些只需要简单显示属性的值,或设置属性的情况
第二种方式适合工具类的方式,例如需要对某些信息进行格式化输出等等
所以这两种方式的调用要视不同的场合下调用
当然,这些讨论都是基于你的项目是采用JSP+JAVABEAN的这种简单方式而定的,即model1的方式
换一种编程体系,如struts,理想的状况下,这两种方式都不会用到的,一般来说,javabean中只需要包含get和set方法,并且javabean通常只是作为前后台交互数据的媒介,javabean中不应该包含业务逻辑
但在一个项目中,可能或多或少的会在JSP页面中引用JAVA类(如利用工具类对数据进行格式化,尽管不规范,但有时也是很难避免的),这个时候你可能需要用到上述的第二种方式了,当然你如果一定要用JAVABEAN的方式
例如:
class="java.util.Date" />
这样也没错,但这样做会不利于维护,最好的办法就是,尽量不要在页面上包含JAVA代码,把业务逻辑尽量往后台迁移,前台代码尽量的少
其它答案:
一、javabean可以在page,session,application范围内使用,而且只需实例化一次,也就是说如果是
session,application范围,多个jsp页面用的是一个javabean实例,而第二种方法不得不在需要的页面创建实例,那么就不能共享
一个实例了,当bean范围为page时二者无差别;
二、javabeans起初是用于可视化的组件
设计,定义了一些开发规范的类:property,对应的getXXX
&
setXXX,还支持事件处理机制,感觉就像delphi的vcl那么方便。 三、javabean是按技术标准所指定的命名和设计规范而编写的java类,由属性、方法、事件3部分组成。
规范定义了以下几种重要的机制:内省、通信、持续、属性和定制,通过这些可实现在设计平台上所规定的操作。