gembin

OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

HBase, Hadoop, ZooKeeper, Cassandra

Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

About Me

 

JSF In Action 学习一[原创]

       
      首先介绍一下JSF(JavaServer Faces)JSF是JavaEE标准的一部分, 是基于组建的架构(component architecture), 而且是事件驱动的,其目的在于把WebApp的开发可以向DesktopApp一样. 可以使各个常用的UI Widgets组件化, 提高重用性,简化创建Web UI的工作量,并且它也提供了丰富的功能集包含事件处理机制(Event Handling Mechanism)、页面导航(Page Navigation)、验证客户端数据(Input Validation)和数据转换(Conversion)等等。JSF框架最主要的特色之一就是它并不仅针对于一种类型的客户端,意味着除了用于桌面的Html浏览器客户端外,它甚至还可能支持用于移动电话的Wml浏览器客户端等。现在已经有很多的Vender在支持JSF:Apache Software Foundation, BEA Systems,Borland Software, IBM, Oracle, Macromedia,等等。
 

JSF她的实现常用的有(当然还有其他的):
   1. Sun RI (Reference Implementation)
        和一般的WebApp一样放在WEB-INF/lib下
       所需的lib: jsf-api.jar   (在JSF specification定义的API)
                        jsf-impl.jar  (Sun JSF的参考实现)
                        jstl.jar         (JSTL API)
                        standard.jar (JSTL的实现Implementation)
   2. Apache MyFaces
         所需的lib: myfaces-api-1.2.2.jar
                        myfaces-impl-1.2.2.jar
                        jstl.jar         (JSTL API)
                        standard.jar (JSTL的实现Implementation)
                        commons-beanutils-1.7.0.jar
                        commons-codec-1.3.jar
                        commons-collections-3.2.jar
                        commons-digester-1.8.jar
                        commons-el-1.0.jar
                        commons-discovery-0.4.jar
                        commons-logging-1.1.1.jar

配置环境:     
1.配置web.xml
 1 <web-app>
 2 
 3 <servlet>
 4 <servlet-name>Faces Servlet</servlet-name>
 5 <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
 6 </servlet>
 7 <servlet-mapping>
 8 <servlet-name>Faces Servlet</servlet-name>
 9 <url-pattern>/faces/*</url-pattern>
10 </servlet-mapping>
11 
12 </web-app>
    和传统的Struts类似,JSF也有配置文件faces-config.xml,并且她支持多个Config文件,可以在web.xml这样设置:
 1 <web-app>
 2 
 3 <context-param>
 4 <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
 5 <param-value>server</param-value>
 6 </context-param>
 7 <context-param>
 8 <param-name>javax.faces.CONFIG_FILES</param-name>
 9 <param-value>/WEB-INF/config1.xml,/WEB-INF/config2.xml</
10 param-value>
11 </context-param>
12 
13 <web-app>
2.配置faces-config.xml,在这里声明managed beans, 并且它支持 EL expression,其实所有的JSF Component都支持EL expression
所有的元素都包含在<faces-config></faces-config>之间,以下是常用的managed-bean元素
1 <managed-bean>
2 <description>Used for testing.
3 </description>
4 <managed-bean-name>testBean</managed-bean-name>
5 <managed-bean-class>net.blogjava.gembin.TestBean
6 </managed-bean-class>
7 <managed-bean-scope>session</managed-bean-scope>
8 </managed-bean>
以上managed-bean的这3个元素是必须的,还有<description><display-name>, and <icon>.是可选的,主要用于可视化工具里显示之用.
定义完managed beans 之后就可以在JSP页面上引用它了。test.jsp
 1 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
 2 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
 3 <html>
 4 <head>
 5 <title>Hello</title>
 6 </head>
 7 <body>
 8 <f:view>
 9    <h:outputText value="Hello #{testBean.sayHello}!"/>
10 </f:view>
11 </body>
12 </html>
TestBean.java
 1 package net.blogjava.gembin;
 2 
 3 public class TestBean{
 4  
 5    public TestBean(){}
 6     
 7    public String sayHello(){
 8        return "jsf, Hello world!";
 9    }  
10 }

这里注意test.jsp中只能有1个<f:view> 元素,并且它不代表任何UI,是JSF UI的Root
managed-bean-scope的值可以是:session,application,request,none。
每个托管的对象(
managed-bean)不能引用生命周期比它还短的对象,所以
  1. 存放在request scope的Object可以引用none, application, session, request里的对象;
  2. 存放在session scope的Object可以引用none, application, session里的对象;
  3. 存放在application scope的Object可以引用none, application里的对象;
  4. 存放在none scope的Object可以引用none里的对象;
 由此可见none scope 非常有用。
上面的例子运行之后将会在浏览器上显示:
Hello jsf, Hello world!!

To be continued(待续...)

posted on 2008-02-29 18:10 gembin 阅读(587) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(6)

随笔分类(440)

随笔档案(378)

文章档案(6)

新闻档案(1)

相册

收藏夹(9)

Adobe

Android

AS3

Blog-Links

Build

Design Pattern

Eclipse

Favorite Links

Flickr

Game Dev

HBase

Identity Management

IT resources

JEE

Language

OpenID

OSGi

SOA

Version Control

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

free counters