您的位置:首页 > Web前端 > JavaScript

浅谈<jsp:useBean />与<% import>引包

2014-02-26 14:27 302 查看
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部分组成。 

规范定义了以下几种重要的机制:内省、通信、持续、属性和定制,通过这些可实现在设计平台上所规定的操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jsp 引包 import include