zoukankan      html  css  js  c++  java
  • 第一个JSF Demo

     

    简介

    JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。JavaServer Faces 还引起了广大 Java/Web 开发人员的兴趣。“企业开发人员”和 Web 设计人员将发现 JSF 开发可以简单到只需将用户界面 (UI) 组件拖放到页面上,而“系统开发人员”将发现丰富而强健的 JSF API 为他们提供了无与伦比的功能和编程灵活性。JSF 还通过将良好构建的模型-视图-控制器 (MVC) 设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。最后,由于 JSF 是通过 Java Community Process (JCP) 开发的一种 Java 标准,因此开发工具供应商完全能够为 JavaServer Faces 提供易于使用的、高效的可视化开发环境。

    体系结构

    JavaServer Faces 的 MVC 实现

    JSF 的主要优势之一就是它既是 Java Web 用户界面标准又是严格遵循模型-视图-控制器 (MVC) 设计模式的框架。用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使 JSF 应用程序更易于管理。为了准备提供页面对应用程序数据访问的 JSF 上下文和防止对页面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端“Faces”servlet(控制器)来处理。

    图 1:JavaServer Faces 的 MVC 实现

    具体DEMO

    导入jar包

    jsf-impl.jar

    jsf-api.jar

    jstl-1.2.jar

    package org.service;

    /**
     *@author:张奇峰
     *2009-7-2 下午08:55:30
     */
    public class Calculate {
     
      private double num1;
     
      private double num2;
     
      private double result;
     
      public double getNum1() {
      return num1;
     }

     public double getNum2() {
      return num2;
     }

    public double getResult() {
     return result;
    }

    public void setNum1(double num1) {
     this.num1 = num1;
    }

    public void setNum2(double num2) {
     this.num2 = num2;
    }


    //计算两数之和
    private double sum(double num1,double num2)
    {
       return num1+num2;
    }

    public String calculateSum()
    {   
      result=sum(num1, num2);
         return "success"; 
    }

     
    }

    页面是index.jsp和result.jsp

    index.jsp

    <%@ page language="java"  pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>第一个JSF</title>
      </head>
      <body>
       <f:view>
       <h:form>
       <h:panelGrid columns="3">
      
       <h:outputLabel value="第一个数"></h:outputLabel>
       <h:inputText id="num1" value="#{calculate.num1}"></h:inputText>

    <!---这个绑定的时候 会调用calculate.getNum1()  -->
       <h:message for="num1"></h:message><!--num1输入错误输出错误信息-->
       
       <h:outputLabel value="第二个数"></h:outputLabel>
       <h:inputText id="num2" value="#{calculate.num2}"></h:inputText>
       <h:message for="num2"></h:message>


       <h:commandButton value="计算和" action="#{calculate.calculateSum}"></h:commandButton>
       <!--调用这个计算两数之和的方法时  先会调用calculate.setNum1()和calculate.setNum2()   然后在执行这个计算方法  所以在 Calculate类中要给这两个数都含有get() 和 set() -->
       </h:panelGrid>
       </h:form>
       </f:view>
      </body>
    </html>

    result.jsp

    <%@ page language="java"  pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>计算结果</title>
      </head>
      <body>
     <f:view>
       <h:outputText value="#{calculate.num1}"/> 
       与
       <h:outputText value="#{calculate.num2}"/>
       的和为:<h:outputText value="#{calculate.result}"/>
     </f:view>
      </body>
    </html>

    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
      <context-param>
        <param-name>javax.faces.CONFIG_FILES</param-name>
        <param-value>/WEB-INF/faces-config.xml</param-value>
      </context-param>
      <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern><!--访问的时候都以.faces访问  可修改-->
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    faces-config.xml

    <?xml version='1.0' encoding='UTF-8'?>

    <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
        version="1.2">
    <managed-bean>
    <managed-bean-name>calculate</managed-bean-name>
    <managed-bean-class>org.service.Calculate</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>

    <navigation-rule>
    <from-view-id>/index.jsp</from-view-id>
    <navigation-case>
    <from-outcome>success</from-outcome>
    <to-view-id>/result.jsp</to-view-id>
    </navigation-case>

    </navigation-rule>
    </faces-config>

    访问  http://localhost:8080/JSFDemo/index.faces 

    点击按钮转发到result.jsp

    显示 :6.0 与 4.0 的和为:10.0

    总结:以前也用过Struts  此前JSF也经常被用来两者相比较   个人觉得两者的设计思想有点类似 都是那种触发似的,但也有不同  此是事件驱动之  而Struts更像是提交式   

  • 相关阅读:
    Android基础知识
    使用Android Studio和Genymotion模拟器搭建Andriod开发环境
    【原】Java开发环境搭建
    【转】JavaScript顶级对象参考模型
    【转】在.Net中关于AOP的实现
    【转】各版本IIS下ASP.net请求处理过程区别
    【转】我们应该如何去了解JavaScript引擎的工作原理
    Linux系统编程(27)——线程控制
    Linux系统编程(26)——守护进程
    Linux系统编程(25)——终端
  • 原文地址:https://www.cnblogs.com/zhangqifeng/p/1515855.html
Copyright © 2011-2022 走看看