`
king_tt
  • 浏览: 2123379 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JSF In Action 学习一

 
阅读更多
<!-- Feedsky FEED发布代码开始 --> <!-- FEED自动发现标记开始 -->
点击这里使用RSS订阅本Blog: <link rel="alternate" href="http://feed.feedsky.com/softwave" type="application/rss+xml" title="RSS 2.0"> <!-- FEED自动发现标记结束 --><script language="javascript"><!-- main_sub="c1s67"; more_subs=""; --> </script><script language="javascript" src="http://www.feedsky.com/jsout/publishlist_v2.js?burl=softwave&amp;out_html=true"></script><!-- Feedsky FEED发布代码结束 -->

JSF In Action 学习一

转自【http://www.blogjava.net/gembin/archive/2008/02/29/183012.html】
首先介绍一下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
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1<web-app>
2
3<servlet>
4<servlet-name>FacesServlet</servlet-name>
5<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
6</servlet>
7<servlet-mapping>
8<servlet-name>FacesServlet</servlet-name>
9<url-pattern>/faces/*</url-pattern>
10</servlet-mapping>
11
12</web-app>
和传统的Struts类似,JSF也有配置文件faces-config.xml,并且她支持多个Config文件,可以在web.xml这样设置:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->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</
10param-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元素
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1<managed-bean>
2<description>Usedfortesting.
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
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1<%@tagliburi="http://java.sun.com/jsf/html"prefix="h"%>
2<%@tagliburi="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:outputTextvalue="Hello#{testBean.sayHello}!"/>
10</f:view>
11</body>
12</html>
TestBean.java
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1packagenet.blogjava.gembin;
2
3publicclassTestBean{
4
5publicTestBean(){}
6
7publicStringsayHello(){
8return"jsf, Helloworld!";
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 非常有用。
上面的例子运行之后将会在浏览器上显示:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->Hello jsf, Helloworld!!

To be continued(待续...)

<!-- Google Reader shared发布代码开始 --> <script type="text/javascript" src="http://www.google.com/reader/ui/publisher.js"></script><script type="text/javascript" src="http://www.google.com/reader/public/javascript/user/00697638153916680411/state/com.google/broadcast?n=5&amp;callback=GRC_p(%7Bc%3A%22green%22%2Ct%3A%22%5Cu8FD9%5Cu4E9B%5Cu6587%5Cu7AE0%5Cu4E5F%5Cu503C%5Cu5F97%5Cu4E00%5Cu770B%22%2Cs%3A%22false%22%7D)%3Bnew%20GRC"></script><!-- Google Reader shared发布代码结束 -->

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics