`
com_xpp
  • 浏览: 374665 次
社区版块
存档分类
最新评论

JavaEE学习笔记之JSF(一)

    博客分类:
  • jsf
jsf 
阅读更多

JSF是基于Java的Web应用程序的服务器端用户接口(UI)组件框架,它提供了一种以组件为中心来开发JavaWeb用户界面的方法,从而简化开发。更重要的是JSF将MVC模型继承到它的体系结构中,确保了程序的可维护性。

二、UI组件、JSTL以及EL表达式

刚刚已经提到JSF是以组件为中心进行开发的,所以在JSF中必定会存在与组件有关的技术。JSF定义了一组UI组件,以及一组标准的API。所以的UI组件都可以直接在页面里使用,而且组件几乎都是HTML form系列标记的翻版

JSTL(JavaServer Pages Standard Tag Library)是包括了很多JSP公用的核心功能。取代了在JSP应用中融合种类分多的标签,JSTL使用一种单一的标准的标签集合。

JSTL包括循环标签、流程控制标签、操作XML标签、格式化标签、使用SQL的标签和函数标签。

在JSF页面中,主要使用到的标签库是

Java代码 
  1. <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>  
  2. <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>  

EL表达式是一种特殊的表达式,分为两种:E表达式和L表达式。E表达式是即时表达式,即时表达式意味着页面在第一次调用时,JSP引擎就会计算表达式的值并立即返回结果。L表达式是延迟表达式,意味着不管是否合适,该表达式只能在页面的生命周期以后使用自己的机制计算表达式的值。

关于表达式的计算和赋值,在JSF底层,使用的反射技术实现的。

三、JSFDemo

该例子实现的功能是通过登录页面登录系统,如果登录成功,跳转到登录成功页面,否则跳转到登录失败页面。使用的服务器是JBoss服务器。

login.jsp

Java代码 
  1. <span style="font-size: 12px;"><%@ page language="java" pageEncoding="GB2312"%>  
  2. <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>  
  3. <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>  
  4.   
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  6. <html>  
  7. <head>  
  8.     <title>Login</title>  
  9. </head>  
  10.   <body>  
  11.     <f:view>  
  12.         <h:form>  
  13.             帐号:<h:inputText value="#{user.username}"></h:inputText><br/>  
  14.             密码:<h:inputSecret value="#{user.password}"></h:inputSecret><br/>  
  15.             <h:commandButton value="提交" action="#{user.login}"></h:commandButton>  
  16.         </h:form>  
  17.     </f:view>  
  18.   </body>  
  19. </html>  
  20. </span>  

其中

Java代码 
  1. <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>  
  2. <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>  

是使用JSTL标签库。
第一个是HTML的工具标签(因为组件几乎都是HTML form系列标记的翻版),第二个是核心标签库。

Java代码 
  1. 帐号:<h:inputText value="#{user.username}"></h:inputText><br/>  
  2. 密码:<h:inputSecret value="#{user.password}"></h:inputSecret><br/>  
  3. <h:commandButton value="提交" action="#{user.login}"></h:commandButton>  

使用的是EL表达式中的延迟表达式,因为只有当输入过之后,提交的时候,在利用反射技术,为user实例赋值。并不是立即计算的。

failure.jsp

Java代码 
  1. <span style="font-size: 12px;"><%@ page language="java" pageEncoding="GB2312"%>  
  2. <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>  
  3. <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>  
  4.   
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  6. <html>  
  7. <head>  
  8.     <title>Failure</title>  
  9. </head>  
  10.     
  11. <body>  
  12.     <f:view>  
  13.         登录失败!<a href="${login.jsp}">点此重新登录</a>  
  14.     </f:view>  
  15. </body>  
  16. </html></span>  

success.jsp

Java代码 
  1. <span style="font-size: 12px;"><%@ page language="java" pageEncoding="GB2312"%>  
  2. <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>  
  3. <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>  
  4.   
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  6. <html>  
  7. <head>  
  8.     <title>Success</title>  
  9. </head>  
  10.     
  11. <body>  
  12.     <f:view>  
  13.         <h:outputLabel value="#{user.username}"></h:outputLabel><br/>  
  14.         你好!恭喜你登录成功!  
  15.     </f:view>  
  16. </body>  
  17. </html></span>  

faces-config.xml

Html代码 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">  
  5.     <managed-bean>  
  6.         <managed-bean-name>user</managed-bean-name>  
  7.         <managed-bean-class>edu.cn.beans.User</managed-bean-class>  
  8.         <managed-bean-scope>session</managed-bean-scope>  
  9.         <managed-property>  
  10.             <property-name>username</property-name>  
  11.             <property-class>java.lang.String</property-class>  
  12.             <value />  
  13.         </managed-property>  
  14.         <managed-property>  
  15.             <property-name>password</property-name>  
  16.             <property-class>java.lang.String</property-class>  
  17.             <value />  
  18.         </managed-property>  
  19.     </managed-bean>  
  20.     <navigation-rule>  
  21.         <from-view-id>/login.jsp</from-view-id>  
  22.         <navigation-case>  
  23.             <from-outcome>"success"</from-outcome>  
  24.             <to-view-id>/success.jsp</to-view-id>  
  25.         </navigation-case>  
  26.         <navigation-case>  
  27.             <from-outcome>"failure"</from-outcome>  
  28.             <to-view-id>/failure.jsp</to-view-id>  
  29.         </navigation-case>  
  30.     </navigation-rule>  
  31. </faces-config>  

该配置文件中定义了托管Bean以及Bean的属性,还有就是导航规则,JSF架构会根据该配置文对整个程序件进行管理。

web.xml

Html代码 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  3.   <servlet>  
  4.     <servlet-name>FacesServlet</servlet-name>  
  5.     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>  
  6.     <load-on-startup>0</load-on-startup>  
  7.   </servlet>  
  8.   <servlet-mapping>  
  9.     <servlet-name>FacesServlet</servlet-name>  
  10.     <url-pattern>/faces/*</url-pattern>  
  11.   </servlet-mapping>  
  12.   <welcome-file-list>  
  13.     <welcome-file>login.jsp</welcome-file>  
  14.   </welcome-file-list>  
  15. </web-app>  

该配置文件主要是在客户端访问的时候,web服务器会根据该文件找到相关资源并调用。
User.java

Java代码 
  1. package edu.cn.beans;  
  2.   
  3. public class User {  
  4.     private String username;  
  5.     private String password;  
  6.       
  7.     public User(){  
  8.         super();  
  9.     }  
  10.       
  11.     public User(String username,String password){  
  12.         this.password = password;  
  13.         this.username = username;  
  14.     }  
  15.   
  16.     public String getUsername() {  
  17.         return username;  
  18.     }  
  19.   
  20.     public void setUsername(String username) {  
  21.         this.username = username;  
  22.     }  
  23.   
  24.     public String getPassword() {  
  25.         return password;  
  26.     }  
  27.   
  28.     public void setPassword(String password) {  
  29.         this.password = password;  
  30.     }  
  31.       
  32.     public String login(){  
  33.         if(username.equals(password)){  
  34.             return "success";  
  35.         }  
  36.         return "failure";  
  37.     }  
  38. }  


个人总结:JSF最重要的是faces-config.xml文件。如果该文件中的内容搞清了,那么整个流程就会很清楚,学起来也会很容易,使用起来也会得心应手。

4
4
分享到:
评论
1 楼 aijuans 2012-05-24  
一直在学习,就是没有机会用在真正的项目里面去

相关推荐

    JavaEE学习笔记.pdf

    "JavaEE学习笔记.pdf" JavaEE(Java Enterprise Edition)是Java平台的企业版,用于开发大型企业级应用程序。作为JavaEE学习笔记,以下是相关的知识点总结: JavaEE架构 JavaEE架构主要由以下几个部分组成: * ...

    javaEE学习笔记

    以上就是JavaEE学习笔记中可能涵盖的关键知识点,它们构成了JavaEE开发的基础,并且每个部分都有深入研究的价值。通过学习和实践这些技术,开发者能够构建出高效、稳定和可扩展的企业级Web应用。

    JavaEE5实战笔记04JSF的一些补充

    本篇实战笔记主要补充了在JavaEE5中使用JSF的一些关键点,特别是关于流程转向和界面参数传递。 1. **流程转向**: 在JSF中,流程转向通常通过`faces-config.xml`文件中的`&lt;navigation-rule&gt;`元素来定义。例如,当...

    JavaEE学习笔记

    此外,JavaEE学习笔记还会涉及MVC(Model-View-Controller)设计模式,如JSF(JavaServer Faces)或Spring MVC。这些框架简化了用户界面的构建,并且提供了一种组织代码的良好方式。 最后,笔记可能还会讨论到...

    Javaee课堂笔记精华总结就业必备

    这个"Javaee课堂笔记精华总结就业必备"显然是一份针对求职者或初入职场的开发者准备的学习材料,旨在帮助他们掌握JavaEE的核心概念和技术,以提升就业竞争力。 JavaEE平台包括一组服务、APIs和协议,用于构建分布式...

    JavaEE基础笔记.zip

    这个压缩包“JavaEE基础笔记.zip”很可能是包含了一系列关于学习JavaEE基础的文档或者教程,帮助初学者理解并掌握JavaEE的核心概念和技术。 JavaEE作为服务器端的开发平台,它的核心在于提供了一个用于构建分布式、...

    JavaEE2017最新版基础班学习笔记

    本"JavaEE2017最新版基础班学习笔记"涵盖了JavaEE入门所需的基本概念和技术,是新手学习JavaEE的良好参考资料。以下将详细介绍其中可能涉及的关键知识点: 1. **Servlet与JSP**:Servlet是JavaEE中处理HTTP请求的...

    JavaEE5学习笔记01-JTA和数据库事务

    ### JavaEE5学习笔记01-JTA和数据库事务:深入解析与应用 #### 一、JavaEE5概览与核心组件 JavaEE5是Java Enterprise Edition的第五个版本,标志着企业级Java应用的一个重要里程碑。它引入了一系列重要的新特性,...

    北京圣思园java课堂笔记 (javaSE和javaee)

    【描述】:“北京圣思园java课堂笔记 (javaSE和javaee)最全”意味着这份资料集合可能是关于Java编程语言学习最为详尽的资源之一,不仅包含了JavaSE的基础内容,还深入探讨了javaEE的企业级应用开发。 【标签】:...

    javaEE示例word版

    总的来说,这个“javaEE示例word版”压缩包是一个全面的JavaEE学习资源,从理论到实践,覆盖了从基础到高级的各种知识点。通过学习和实践其中的内容,开发者可以系统地掌握JavaEE的开发技能,提升构建企业级应用的...

    达内javaSE,javaEE个人学习所有基础笔记

    "达内javaSE,javaEE个人学习所有基础笔记"是一个针对初学者的全面学习资源,涵盖了从Java Standard Edition (Java SE)的基础知识到Java Enterprise Edition (Java EE)的高级概念。 Java SE是Java的核心部分,它...

    学习JavaEE的day26

    5. **Spring框架**:Spring是JavaEE开发中最流行的框架之一,它提供了依赖注入、AOP(面向切面编程)、数据访问、Web MVC等功能,简化了应用的开发和测试。 6. **WebSocket**:在现代Web应用中,WebSocket协议允许...

    javaEE培训教案(国内某一IT培训机构2个月的培训内容)

    8. **JSF(JavaServer Faces)**:一种用于构建用户界面的JavaEE组件框架,学员会接触UI组件、事件处理和数据绑定。 9. **Spring框架**:作为JavaEE开发的主流框架,Spring的IoC(控制反转)和AOP(面向切面编程)...

Global site tag (gtag.js) - Google Analytics