JSF入门 一 介绍 安装

1. 什么是JSF

    a. jsf是一个基于web的GUI组件和相关处理器的集合

         jsf提供了许多内置的包含组件事件处理代码的html组件

    b. jsf是一个独立的GUI组件框架

        jsf可以生成图表等,比起html来说功能更强大,而且JSF不是仅仅依赖于HTTP协议。

    c. 可以作为比struts更优秀的mvc框架

        象Apache的Struts,jsf也可以被看作一个MVC框架,它可以构建html表单,验证表单域,调用业务逻辑,显示结果等。

2. JSF的优点

    a. 自定义GUI组件

     b. 事件处理机制

    c. 受管Bean

    d. jsf表达式语言

    e. 表单域的数据类型转换与验证

    f. 集中控制的基于文件的配置

3. JSF的缺点

    a. 较长的学习曲线

    b. 很少的文档资料

    c. 较少的开发工具

4. 安装和配置JSF

    a. 下载 the JSF 1.1 zip file

        http://java.sun.com/j2ee/javaserverfaces/download.html

        http://www.myfaces.org/

    b. 构建应用程序目录

    /WEB-INF/

        --web.xml

        --faces-config.xml

        --classes/

        --lib/

                ---commons-beanutils.jar

                ---commons-collections.jar

                ---commons-digester.jar

                ---commons-logging.jar

                ---jsf-api.jar

                ---jsf-impl.jar

                ---jstl.jar

                ---standard.jar

JSF入门 二 页面导航

1. JSF的控制流程

    a. 由各种GUI组件构建的web表单显示给用户

    b. 这个表单被提交给自己

    c. 创建一个描绘表单数据的bean

    d. 在form中描述的action方法被调用

    e. action方法返回一个条件

    f. 相应于这个条件的页面返回给用户

2. 使用JSF开发的步骤

    a. 创建一个描绘表单数据的Bean

    b. 使用f:view和h:form来创建输入表单

    c. 用h:commandButton的 action属性来详细说明一个Action controller

    d. 创建一个Action controller来读取数据,调用业务逻辑,存储结果,返回一个和某结果页面相关的条件。

    e. 使用faces-config.xml来声明form bean和页面导航。

    f. 创建和每一条件相关联的jsp页面。

3. 事例1:静态导航

    a. 输入表单

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<f:view>
<!DOCTYPE …>
<HTML>
<HEAD>…</HEAD>
<BODY>
<CENTER>
<TABLE BORDER=5>
<TR><TH CLASS="TITLE">New Account Registration</TH></TR>
</TABLE>
<P>
<h:form>
Email address: <h:inputText/><BR>
Password: <h:inputSecret/><BR>
<h:commandButton value="Sign Me Up!" action="login"/>
</h:form>
</CENTER></BODY></HTML>
</f:view>

b. 页面导航

<faces-config>
<navigation-rule>
<from-view-id>/login.jsp</from-view-id>
<navigation-case>
<from-outcome>login</from-outcome>
<to-view-id>/WEB-INF/…/result.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>

c. 说明

   由于是静态导航,所以h:commandButton中的action属性没有指明控制器中的方法,而是直间赋予了导航条件(from-outcome),因此当点击按钮后会直接转向result.jsp页面.(当然一般情况下应在action属性中指明控制器处理方法)

4. 事例2:动态导航

a. 输入表单

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<f:view>

<h:form>
First name: <h:inputText/><BR>
Last name: <h:inputText/><BR>
...
<h:commandButton
value="Sign Me Up!"
action="#{loginAction.validate}"/>
</h:form>…
</f:view>

b. 控制器

public class LoginAction {
         public String validate() {
                 if (...) {
                        return "error";
                  }
                  else {
                        return "success";
                 }
          }
}

c. 导航

<faces-config>

<navigation-rule>

<managed-bean>
<managed-bean-name>
loginAction
</managed-bean-name>
<managed-bean-class>
net.boyce.LoginAction
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

<from-view-id>/signup.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/WEB-INF/results/success.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>error</from-outcome>
<to-view-id>/WEB-INF/results/error.jsp</to-view-id>
</navigation-case>
</navigation-rule>

</faces-config>

d. 说明

在action属性中指明了控制器,由控制器返回条件,再根据导航转到不同的结果页面。注意在action属性中指明的控制器方法是无输入参数,且返回String类的函数

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值