posts - 310, comments - 6939, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Spring+JSF示例

          Posted on 2007-11-13 23:14 詩特林 閱讀(5534) 評論(7)  編輯  收藏 所屬分類: JSF
           

          Spring+JSF示例

          JSF本身提供了強大的Bean管理功能。但Spring作為一種輕量的容器,在管理Bean方面有著不可替代的優勢,使用起來很方便。在Spring流行的今天,怎么能少了在JSF中整合Spring呢?下面的示例比較簡單,但也能清楚的表達如何將JSF+Spring兩者互相整合起來。

          整個示例,通過輸入頁面輸入特定的字符串,在后面查找此字符串對應的數值,然后展現給客戶,如果沒有找到則提示錯誤。



          一、      
          頁面

           

          1.輸入頁面:stockInput.jsp

          <%@page contentType="text/html"%>
          <%@page pageEncoding="UTF-8"%>

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

          <f:view>
              
          <html>
                  
          <head>
                      
          <title>字符輸入頁面</title>
                  
          </head>
                  
          <body>
                      
          <h:form id="stockForm">

                          
          <h1>
                              請輸入一個字符串,如ABC或DEF或GHI或JKL
                          
          </h1>

                          
          <p>
                              
          <h:inputText id="stockSymbolInput" value="#{stockBean.symbolName}"
                                  required
          ="true">
                              
          </h:inputText>
                          
          </p>

                          
          <h:commandButton id="stockSubmit" type="submit" value="提交"
                              action
          ="#{stockBean.findStockValue}">
                          
          </h:commandButton>

                      
          </h:form>

                  
          </body>
              
          </html>
          </f:view>

           

          2.輸出頁面:stockOutputFailure.jsp

          <%@page contentType="text/html"%>
          <%@page pageEncoding="UTF-8"%>

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

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">

          <html>
              
          <head>
                  
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                  
          <title>取得字符串所對應的值</title>
              
          </head>
              
          <body>

                  
          <f:view>
                      
          <h1>
                          所輸入的字符串
                          
          <h:outputText value="#{stockBean.symbolName}">
                          
          </h:outputText>
                          對應的值是
                          
          <h:outputText value="#{stockBean.symbolValue}">
                          
          </h:outputText>
                      
          </h1>
                  
          </f:view>

              
          </body>
          </html>

           

          3.錯誤處理頁面:stockOutputFailure.jsp

          <%@page contentType="text/html"%>
          <%@page pageEncoding="UTF-8"%>

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

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">

          <html>
              
          <head>
                  
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                  
          <title>錯誤頁面</title>
              
          </head>
              
          <body>

                  
          <f:view>
                      
          <h1>
                          所查找的字符串
                          
          <h:outputText value="#{stockBean.symbolName}">
                          
          </h:outputText>
                          不存在,請再次查找
          !
                      
          </h1>
                  
          </f:view>

              
          </body>
          </html>

           

           

          二、       后臺處理Bean

           StockValueFetcher.java

          package com.sterning.springjsf;

          import java.util.*;

          public class StockValueFetcher {

              
          private Map<String, String> stockSymbolsAndValues;

              
          private String symbolName;
              
          private String symbolValue;

              
          public StockValueFetcher() {
                  stockSymbolsAndValues 
          = new HashMap<String, String>();
                  stockSymbolsAndValues.put(
          "ABC""10");
                  stockSymbolsAndValues.put(
          "DEF""20");
                  stockSymbolsAndValues.put(
          "GHI""30");
                  stockSymbolsAndValues.put(
          "JKL""40");
              }


              
          public String getSymbolName() {
                  
          return symbolName;
              }


              
          public void setSymbolName(String symbolName) {
                  
          this.symbolName = symbolName;
              }


              
          public String getSymbolValue() {
                  
          return symbolValue;
              }


              
          public void setSymbolValue(String symbolValue) {
                  
          this.symbolValue = symbolValue;
              }


              
          public String findStockValue(){
                  
          boolean symbolFound = stockSymbolsAndValues.containsKey(symbolName);
                  
          if (symbolFound){
                      symbolValue 
          = stockSymbolsAndValues.get(symbolName);
                      
          return "stockOutputSuccess";
                  }
          else{
                      
          return "stockOutputFailure";
                  }

              }

          }


              

          三、       配置文件

          1WEB-INF/faces-config.xml

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

          <faces-config version="1.2" 
          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"
          >

          <application>
              
          <variable-resolver>
                  org.springframework.web.jsf.DelegatingVariableResolver
              
          </variable-resolver>
          </application>

          <!--  下面的代碼在沒有使用Spring時起一樣的作用
          <managed-bean>
              <managed-bean-name>stockBean</managed-bean-name>
                  <managed-bean-class>
                      com.sterning.springjsf.StockValueFetcher
                  </managed-bean-class>
              <managed-bean-scope>request</managed-bean-scope>    
          </managed-bean>
          -->
          <navigation-rule>
              
          <description>Navigation from the hello page.</description>
              
          <from-view-id>/stockInput.jsp</from-view-id>
              
          <navigation-case>
                  
          <from-outcome>stockOutputSuccess</from-outcome>
                  
          <to-view-id>/stockOutputSuccess.jsp</to-view-id>
              
          </navigation-case>
              
          <navigation-case>
                  
          <from-outcome>stockOutputFailure</from-outcome>
                  
          <to-view-id>/stockOutputFailure.jsp</to-view-id>
              
          </navigation-case>    
          </navigation-rule>

          </faces-config> 

           

          注意我使用中文注釋的地方。

           

          2WEB-INF/applicationContext.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
          "http://www.springframework.org/dtd/spring-beans.dtd"
          >

          <beans>

          <bean id="stockBean"
          class
          ="com.sterning.springjsf.StockValueFetcher">
          </bean>
           

           3WEB-INF/web.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <web-app version="2.5" 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-app_2_5.xsd"
          >

              
          <listener>
                  
          <listener-class>
                      org.springframework.web.context.ContextLoaderListener
                  
          </listener-class>
              
          </listener>

              
          <context-param>
                  
          <param-name>contextConfigLocation</param-name>
                  
          <param-value>/WEB-INF/applicationContext.xml</param-value>
              
          </context-param>

              
          <servlet>
                  
          <servlet-name>Faces Servlet</servlet-name>
                  
          <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
                  
          <load-on-startup>1</load-on-startup>
              
          </servlet>

              
          <servlet-mapping>
                  
          <servlet-name>Faces Servlet</servlet-name>
                  
          <url-pattern>/faces/*</url-pattern>
              
          </servlet-mapping>

              
          <session-config>
                  
          <session-timeout>30</session-timeout>
              
          </session-config>

              
          <welcome-file-list>
                  
          <welcome-file>faces/stockInput.jsp</welcome-file>
              
          </welcome-file-list>
          </web-app>

           


           

          參考文獻:http://www.javabeat.net/articles/2007/10/integrating-spring-and-jsf/


          評論

          # re: Spring+JSF示例[未登錄]  回復  更多評論   

          2007-11-14 08:56 by 阿蜜果
          蠻好的例子,多謝了,LZ

          # re: Spring+JSF示例  回復  更多評論   

          2007-11-14 13:17 by BeanSoft
          不錯! 收藏了!

          # re: Spring+JSF示例  回復  更多評論   

          2007-12-13 20:27 by OpenBund
          有沒有連接mysql進行查詢並顯示數據的代碼

          # re: Spring+JSF示例  回復  更多評論   

          2008-06-25 09:56 by ddd
          我從你的代碼好像找不到spring管理bean的地方

          # re: Spring+JSF示例  回復  更多評論   

          2008-08-29 15:28 by young_suse
          在spring配置文件里沒有指定Bean的有效范圍request

          # re: Spring+JSF示例  回復  更多評論   

          2011-06-29 20:22 by zlu
          寫的不錯

          # re: Spring+JSF示例  回復  更多評論   

          2014-08-29 10:50 by junjielee
          faces-config.xml沒有managed-bean???
          主站蜘蛛池模板: 白河县| 彩票| 东阿县| 正蓝旗| 金阳县| 邳州市| 星座| 湘西| 庆安县| 长岭县| 德昌县| 柘城县| 株洲市| 胶南市| 平远县| 武冈市| 瑞昌市| 芦溪县| 杂多县| 蒙自县| 汪清县| 隆子县| 德格县| 定远县| 浪卡子县| 修水县| 平阳县| 古浪县| 诏安县| 金川县| 玉屏| 平原县| 东乡族自治县| 太仆寺旗| 焦作市| 祁东县| 太康县| 周宁县| 大丰市| 高淳县| 印江|