JSF Manage Bean详解
来源:互联网 发布:破解winrar密码软件 编辑:程序博客网 时间:2024/05/19 06:16
首先从Model1中的JavaBean说起,大家知道,Model1的基本架构就是JSP页面通过JavaBean访问数据层,那么JavaBean到底是什么东东呢?
其实JavaBean只是一个特别的Java类而已。在JavaBean中,对私有的域用getXXX和setXXX来实现存取,并且必须有一个无参数的构造函数,如下类就是一个JavaBean文件。
package net.moon.beans;
public class UserInfo ......{
private String userName;
private String password;
public String getUserName()......{
return userName;
}
public String getPassword()......{
return password;
}
public void setUserName(String userName)......{
this.userName = userName;
}
public void setPassword(String password)......{
this.password = password;
}
//如果一个类中无构造函数,Java会为它加一个默认的空的无参数的构造函数,
//因此,如无其它构造函数,可省略该构造函数
public UserInfo()......{
}
}
需注意其中的格式要求,域名为第一个单词首字母小写的(usernName),对应一个域,分别有一个getUserName和setUserName两个方法,来读取和设置这一域,方法名为get/set + 域名(首字母大写)。
做过Model1开发的人会知道,JavaBean的引入方式可以是使用标签<jsp:useBean>来引入的,不需开发人员实例化即可产生一个该类的实例,因为实例是由Web容器产生的,所以我们必须提供无参数的构造函数由Web容器来调用。
再来解释JSF中的MBean,其实MBean就是一个JavaBean,因此它有着和JavaBean相同的要求。
最后是MBean的配置,JSF的MBean需要在faces-config文件中做配置,配置方法如下:
<managed-bean>
<description>demo of config</description>
<display-name>userInfo</display-name>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>net.moon.beans.UserInfo</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
对其中的managed-bean-name,managed-bean-class和managed-bean-scope做一下解释。
managed-bean-name是这一MBean的名字,用于其它位置的调用。
managed-bean-class是这一MBean的完整路径,用于指明该MBean的类文件位置。
managed-bean-scope是这一MBean的有效范围。
下面再对manage-bean-scope进行一下详细的解释,其有效取值为:application, session, request, none。很容易理解,它们的存活周期分别如下:
Name Scope
Application 整个应用
Session 整个对话
Request 整个请求
None 需要时,临时
大家知道,JSF是以JSP为基础的,那么,对于JSP的九大对象来说,这四种scope的信息到底是怎么存储的呢?
经过测试证明,scope为applicatoin的MBean的实例保存在ServletContext中,也就是JSP中的application中,因此我们可以用如下的方法得到某个类的引用:
FacesContext fc = FacesContext.getCurrentInstance();
UserInfo ui = (serInfo)fc.getExternalContext().getApplicationMap().get("user");
对session级别的MBean,我们可以用如下方法得到其引用:
FacesContext fc = FacesContext.getCurrentInstance();
UserInfo ub = (UserInfo)fc.getExternalContext().getSessionMap().get("userInfo");
当然,我们也可以用其它的方法得到session对象后,从session中取出实例。
对request级别的MBean,我们可从request对象中取得,代码如下:
FacesContext fc = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest)fc.getExternalContext().getRequest();
UserInfo ui = (UserInfo)request.getAttribute("user");
至于none类型的MBean,应该只能得到新的实例了。
当然,JSF提供了另外的访问MBean的方法,我们可以用如下的代码得到MBean的实例:
FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding = context.getApplication().createValueBinding("#{user}");
UserBean user = (UserBean) binding.getValue(context);
也可用如下的代碼直接得到MBean的一個屬性:
FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding = context.getApplication().createValueBinding("#{user.name}");
String name = (String) binding.getValue(context);
Cookie 操作
Map cookieMap = FacesContext.getCurrentInstance().getExternalContext().getCookieMap();
Cookie cookie = (Cookie) cookieMap.get("cookieName");
response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
其实JavaBean只是一个特别的Java类而已。在JavaBean中,对私有的域用getXXX和setXXX来实现存取,并且必须有一个无参数的构造函数,如下类就是一个JavaBean文件。
package net.moon.beans;
public class UserInfo ......{
private String userName;
private String password;
public String getUserName()......{
return userName;
}
public String getPassword()......{
return password;
}
public void setUserName(String userName)......{
this.userName = userName;
}
public void setPassword(String password)......{
this.password = password;
}
//如果一个类中无构造函数,Java会为它加一个默认的空的无参数的构造函数,
//因此,如无其它构造函数,可省略该构造函数
public UserInfo()......{
}
}
需注意其中的格式要求,域名为第一个单词首字母小写的(usernName),对应一个域,分别有一个getUserName和setUserName两个方法,来读取和设置这一域,方法名为get/set + 域名(首字母大写)。
做过Model1开发的人会知道,JavaBean的引入方式可以是使用标签<jsp:useBean>来引入的,不需开发人员实例化即可产生一个该类的实例,因为实例是由Web容器产生的,所以我们必须提供无参数的构造函数由Web容器来调用。
再来解释JSF中的MBean,其实MBean就是一个JavaBean,因此它有着和JavaBean相同的要求。
最后是MBean的配置,JSF的MBean需要在faces-config文件中做配置,配置方法如下:
<managed-bean>
<description>demo of config</description>
<display-name>userInfo</display-name>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>net.moon.beans.UserInfo</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
对其中的managed-bean-name,managed-bean-class和managed-bean-scope做一下解释。
managed-bean-name是这一MBean的名字,用于其它位置的调用。
managed-bean-class是这一MBean的完整路径,用于指明该MBean的类文件位置。
managed-bean-scope是这一MBean的有效范围。
下面再对manage-bean-scope进行一下详细的解释,其有效取值为:application, session, request, none。很容易理解,它们的存活周期分别如下:
Name Scope
Application 整个应用
Session 整个对话
Request 整个请求
None 需要时,临时
大家知道,JSF是以JSP为基础的,那么,对于JSP的九大对象来说,这四种scope的信息到底是怎么存储的呢?
经过测试证明,scope为applicatoin的MBean的实例保存在ServletContext中,也就是JSP中的application中,因此我们可以用如下的方法得到某个类的引用:
FacesContext fc = FacesContext.getCurrentInstance();
UserInfo ui = (serInfo)fc.getExternalContext().getApplicationMap().get("user");
对session级别的MBean,我们可以用如下方法得到其引用:
FacesContext fc = FacesContext.getCurrentInstance();
UserInfo ub = (UserInfo)fc.getExternalContext().getSessionMap().get("userInfo");
当然,我们也可以用其它的方法得到session对象后,从session中取出实例。
对request级别的MBean,我们可从request对象中取得,代码如下:
FacesContext fc = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest)fc.getExternalContext().getRequest();
UserInfo ui = (UserInfo)request.getAttribute("user");
至于none类型的MBean,应该只能得到新的实例了。
当然,JSF提供了另外的访问MBean的方法,我们可以用如下的代码得到MBean的实例:
FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding = context.getApplication().createValueBinding("#{user}");
UserBean user = (UserBean) binding.getValue(context);
也可用如下的代碼直接得到MBean的一個屬性:
FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding = context.getApplication().createValueBinding("#{user.name}");
String name = (String) binding.getValue(context);
Cookie 操作
Map cookieMap = FacesContext.getCurrentInstance().getExternalContext().getCookieMap();
Cookie cookie = (Cookie) cookieMap.get("cookieName");
response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
- JSF Manage Bean详解
- JSF Managed Bean
- JSF托管Bean注入
- JSF之托管Bean
- JSF之托管Bean
- JSF受管Bean
- ADF: 理解Manage bean 的scope
- ADF: 理解Manage bean 的scope
- ADF: 理解Manage bean 的scope
- JSF详解
- 【JSF小记】jsf bean中的重定向
- nova-manage service list 详解
- JSF 2 托管 bean 注释
- 用C#模拟 Java Bean (四)—— Manage
- 【JSF小记】Managed bean中获取JSF标签自定义属性
- JSF MBean详解
- JSF生命周期详解
- JSF FacesContext 详解
- HP(惠普)大中华区总裁孙振耀退休感言
- 阿拉伯的撒拉丁
- 花的意义
- 用javascript获取asp.net中RadioButtonList的选中值
- 中小企业面临的安全问题有哪些?
- JSF Manage Bean详解
- DataGridView控件使用
- color from name
- 读取NET2.0的配置文件例子-configuration
- pl/sql 编程入门经典教程之触发器篇
- 建立oracle自动增长列,简略版
- Asp.NET 操作配置文件 - Steven Pei - 博客园
- .Net2.0的运行权限进行配置.Net2.0的运行权限进行配置
- 一个典型的英文版权声明---Copyright Notice