1.<jsp:useBean />与<% import="someClass" %>的区别:
假设已经编写了一个类,现在需要引用他,那么可以这么做:
<jsp:userBean id="theId" scope="theScope" class="className" />
<%
theId.theMethod()
%>
也可以这么用:
<%@ page import="className" %>
<%
className.theMethod()
%>
两种方式有什么区别,哪个更常用?或者各有什么好处??????
最优答案:
import 只是帮你在这个页面中声明对一个类的引入,并没有使用这个类
jsp:useBean是帮你产生一个类的实例:),用import是没有直接的产生实例!但是不是说不能生成!
而jsp:useBean是直接生成的!那么效率也就不用说了吧!useBean是在ACTION里serAttribute的实例,也就是带有数据的实 例,而import是没有实例过的CLASS,两者概念完全不同的! 这个无所谓常用不常用的问题,假设我现在要在JSP中引用java.util.Date这个类作为JAVABEAN
可以这样写:
<jsp:useBean id="date" scope="page" class="java.util.Date" />
<jsp:getProperty name="date" property="time" />
也可以这样写:
<%@ page import = "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的方式
例如:
<jsp:useBean id="date" scope="page" class="java.util.Date" />
<%=date.getTime()%>
这样也没错,但这样做会不利于维护,最好的办法就是,尽量不要在页面上包含JAVA代码,把业务逻辑尽量往后台迁移,前台代码尽量的少
其它答案:
一、javabean可以在page,session,application范围内使用,而且只需实例化一次,也就是说如果是 session,application范围,多个jsp页面用的是一个javabean实例,而第二种方法不得不在需要的页面创建实例,那么就不能共享 一个实例了,当bean范围为page时二者无差别;
二、javabeans起初是用于可视化的组件 设计,定义了一些开发规范的类:property,对应的getXXX & setXXX,还支持事件处理机制,感觉就像delphi的vcl那么方便。
三、javabean是按技术标准所指定的命名和设计规范而编写的java类,由属性、方法、事件3部分组成。
规范定义了以下几种重要的机制:内省、通信、持续、属性和定制,通过这些可实现在设计平台上所规定的操作。