读书人

Spring+JSF示范

发布时间: 2012-10-23 12:12:22 作者: rapoo

Spring+JSF示例

JSF本身提供了强大的Bean管理功能。但Spring作为一种轻量的容器,在管理Bean方面有着不可替代的优势,使用起来很方便。在Spring流行的今天,怎么能少了在JSF中整合Spring呢?下面的示例比较简单,但也能清楚的表达如何将JSF+Spring两者互相整合起来。

整个示例,通过输入页面输入特定的字符串,在后面查找此字符串对应的数值,然后展现给客户,如果没有找到则提示错误。


Spring+JSF示范
一、??????
页面

?

1.输入页面:stockInput.jsp

Spring+JSF示范<%@page?contentType="text/html"%>
Spring+JSF示范<%@page?pageEncoding="UTF-8"%>
Spring+JSF示范
Spring+JSF示范
<%@taglib?prefix="f"?uri="http://java.sun.com/jsf/core"%>
Spring+JSF示范<%@taglib?prefix="h"?uri="http://java.sun.com/jsf/html"%>
Spring+JSF示范
Spring+JSF示范
<f:view>
Spring+JSF示范????<html>
Spring+JSF示范????????<head>
Spring+JSF示范????????????<title>字符输入页面</title>
Spring+JSF示范????????</head>
Spring+JSF示范????????<body>
Spring+JSF示范????????????<h:form?id="stockForm">
Spring+JSF示范
Spring+JSF示范????????????????
<h1>
Spring+JSF示范????????????????????请输入一个字符串,如ABC或DEF或GHI或JKL
Spring+JSF示范????????????????
</h1>
Spring+JSF示范
Spring+JSF示范????????????????
<p>
Spring+JSF示范????????????????????<h:inputText?id="stockSymbolInput"?value="#{stockBean.symbolName}"
Spring+JSF示范????????????????????????required="true">
Spring+JSF示范????????????????????</h:inputText>
Spring+JSF示范????????????????</p>
Spring+JSF示范
Spring+JSF示范????????????????
<h:commandButton?id="stockSubmit"?type="submit"?value="提交"
Spring+JSF示范????????????????????action="#{stockBean.findStockValue}">
Spring+JSF示范????????????????</h:commandButton>
Spring+JSF示范
Spring+JSF示范????????????
</h:form>
Spring+JSF示范
Spring+JSF示范????????
</body>
Spring+JSF示范????</html>
Spring+JSF示范</f:view>
Spring+JSF示范


?

2.输出页面:stockOutputFailure.jsp

Spring+JSF示范<%@page?contentType="text/html"%>
Spring+JSF示范<%@page?pageEncoding="UTF-8"%>
Spring+JSF示范
Spring+JSF示范
<%@taglib?prefix="f"?uri="http://java.sun.com/jsf/core"%>
Spring+JSF示范<%@taglib?prefix="h"?uri="http://java.sun.com/jsf/html"%>
Spring+JSF示范
Spring+JSF示范
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"
Spring+JSF示范"http://www.w3.org/TR/html4/loose.dtd">
Spring+JSF示范
Spring+JSF示范
<html>
Spring+JSF示范????<head>
Spring+JSF示范????????<meta?http-equiv="Content-Type"?content="text/html;?charset=UTF-8">
Spring+JSF示范????????<title>取得字符串所对应的值</title>
Spring+JSF示范????</head>
Spring+JSF示范????<body>
Spring+JSF示范
Spring+JSF示范????????
<f:view>
Spring+JSF示范????????????<h1>
Spring+JSF示范????????????????所输入的字符串
Spring+JSF示范????????????????
<h:outputText?value="#{stockBean.symbolName}">
Spring+JSF示范????????????????</h:outputText>
Spring+JSF示范????????????????对应的值是
Spring+JSF示范????????????????
<h:outputText?value="#{stockBean.symbolValue}">
Spring+JSF示范????????????????</h:outputText>
Spring+JSF示范????????????</h1>
Spring+JSF示范????????</f:view>
Spring+JSF示范
Spring+JSF示范????
</body>
Spring+JSF示范</html>
Spring+JSF示范

?

3.错误处理页面:stockOutputFailure.jsp

Spring+JSF示范<%@page?contentType="text/html"%>
Spring+JSF示范<%@page?pageEncoding="UTF-8"%>
Spring+JSF示范
Spring+JSF示范<%@taglib?prefix="f"?uri="http://java.sun.com/jsf/core"%>
Spring+JSF示范<%@taglib?prefix="h"?uri="http://java.sun.com/jsf/html"%>
Spring+JSF示范
Spring+JSF示范<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"
Spring+JSF示范"http://www.w3.org/TR/html4/loose.dtd">
Spring+JSF示范
Spring+JSF示范<html>
Spring+JSF示范????<head>
Spring+JSF示范????????<meta?http-equiv="Content-Type"?content="text/html;?charset=UTF-8">
Spring+JSF示范????????<title>错误页面</title>
Spring+JSF示范????</head>
Spring+JSF示范????<body>
Spring+JSF示范
Spring+JSF示范????????<f:view>
Spring+JSF示范????????????<h1>
Spring+JSF示范????????????????所查找的字符串
Spring+JSF示范????????????????<h:outputText?value="#{stockBean.symbolName}">
Spring+JSF示范????????????????</h:outputText>
Spring+JSF示范????????????????不存在,请再次查找!
Spring+JSF示范????????????</h1>
Spring+JSF示范????????</f:view>
Spring+JSF示范
Spring+JSF示范????</body>
Spring+JSF示范</html>
Spring+JSF示范

?

?

二、?????? 后台处理Bean

?StockValueFetcher.java

Spring+JSF示范package?com.sterning.springjsf;
Spring+JSF示范
Spring+JSF示范import?java.util.*;
Spring+JSF示范
Spring+JSF示范public?class?StockValueFetcher?{
Spring+JSF示范
Spring+JSF示范????private?Map<String,?String>?stockSymbolsAndValues;
Spring+JSF示范
Spring+JSF示范????private?String?symbolName;
Spring+JSF示范????private?String?symbolValue;
Spring+JSF示范
Spring+JSF示范????public?StockValueFetcher()?{
Spring+JSF示范????????stockSymbolsAndValues?=?new?HashMap<String,?String>();
Spring+JSF示范????????stockSymbolsAndValues.put("ABC",?"10");
Spring+JSF示范????????stockSymbolsAndValues.put("DEF",?"20");
Spring+JSF示范????????stockSymbolsAndValues.put("GHI",?"30");
Spring+JSF示范????????stockSymbolsAndValues.put("JKL",?"40");
Spring+JSF示范????}
Spring+JSF示范
Spring+JSF示范????public?String?getSymbolName()?{
Spring+JSF示范????????return?symbolName;
Spring+JSF示范????}
Spring+JSF示范
Spring+JSF示范????public?void?setSymbolName(String?symbolName)?{
Spring+JSF示范????????this.symbolName?=?symbolName;
Spring+JSF示范????}
Spring+JSF示范
Spring+JSF示范????public?String?getSymbolValue()?{
Spring+JSF示范????????return?symbolValue;
Spring+JSF示范????}
Spring+JSF示范
Spring+JSF示范????public?void?setSymbolValue(String?symbolValue)?{
Spring+JSF示范????????this.symbolValue?=?symbolValue;
Spring+JSF示范????}
Spring+JSF示范
Spring+JSF示范????public?String?findStockValue(){
Spring+JSF示范????????boolean?symbolFound?=?stockSymbolsAndValues.containsKey(symbolName);
Spring+JSF示范????????if?(symbolFound){
Spring+JSF示范????????????symbolValue?=?stockSymbolsAndValues.get(symbolName);
Spring+JSF示范????????????return?"stockOutputSuccess";
Spring+JSF示范????????}else{
Spring+JSF示范????????????return?"stockOutputFailure";
Spring+JSF示范????????}
Spring+JSF示范????}
Spring+JSF示范}
Spring+JSF示范


????

三、?????? 配置文件

1WEB-INF/faces-config.xml

Spring+JSF示范<?xml?version='1.0'?encoding='UTF-8'?>
Spring+JSF示范
Spring+JSF示范<faces-config?version="1.2"?
Spring+JSF示范xmlns="http://java.sun.com/xml/ns/javaee"?
Spring+JSF示范xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?
Spring+JSF示范xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?
Spring+JSF示范http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
Spring+JSF示范
Spring+JSF示范<application>
Spring+JSF示范????<variable-resolver>
Spring+JSF示范????????org.springframework.web.jsf.DelegatingVariableResolver
Spring+JSF示范????</variable-resolver>
Spring+JSF示范</application>
Spring+JSF示范
Spring+JSF示范<!--??下面的代码在没有使用Spring时起一样的作用
Spring+JSF示范<managed-bean>
Spring+JSF示范????<managed-bean-name>stockBean</managed-bean-name>
Spring+JSF示范????????<managed-bean-class>
Spring+JSF示范????????????com.sterning.springjsf.StockValueFetcher
Spring+JSF示范????????</managed-bean-class>
Spring+JSF示范????<managed-bean-scope>request</managed-bean-scope>????
Spring+JSF示范</managed-bean>
Spring+JSF示范-->
Spring+JSF示范<navigation-rule>
Spring+JSF示范????<description>Navigation?from?the?hello?page.</description>
Spring+JSF示范????<from-view-id>/stockInput.jsp</from-view-id>
Spring+JSF示范????<navigation-case>
Spring+JSF示范????????<from-outcome>stockOutputSuccess</from-outcome>
Spring+JSF示范????????<to-view-id>/stockOutputSuccess.jsp</to-view-id>
Spring+JSF示范????</navigation-case>
Spring+JSF示范????<navigation-case>
Spring+JSF示范????????<from-outcome>stockOutputFailure</from-outcome>
Spring+JSF示范????????<to-view-id>/stockOutputFailure.jsp</to-view-id>
Spring+JSF示范????</navigation-case>????
Spring+JSF示范</navigation-rule>
Spring+JSF示范
Spring+JSF示范</faces-config>?
Spring+JSF示范

?

?

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

?

2WEB-INF/applicationContext.xml

Spring+JSF示范<?xml?version="1.0"?encoding="UTF-8"?>
Spring+JSF示范<!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"
Spring+JSF示范"http://www.springframework.org/dtd/spring-beans.dtd">
Spring+JSF示范
Spring+JSF示范<beans>
Spring+JSF示范
Spring+JSF示范<bean?id="stockBean"
Spring+JSF示范class="com.sterning.springjsf.StockValueFetcher">
Spring+JSF示范</bean>
Spring+JSF示范?

?3WEB-INF/web.xml

Spring+JSF示范<?xml?version="1.0"?encoding="UTF-8"?>
Spring+JSF示范<web-app?version="2.5"?xmlns="http://java.sun.com/xml/ns/javaee"
Spring+JSF示范????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Spring+JSF示范????xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?
Spring+JSF示范http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
Spring+JSF示范
Spring+JSF示范????<listener>
Spring+JSF示范????????<listener-class>
Spring+JSF示范????????????org.springframework.web.context.ContextLoaderListener
Spring+JSF示范????????</listener-class>
Spring+JSF示范????</listener>
Spring+JSF示范
Spring+JSF示范????<context-param>
Spring+JSF示范????????<param-name>contextConfigLocation</param-name>
Spring+JSF示范????????<param-value>/WEB-INF/applicationContext.xml</param-value>
Spring+JSF示范????</context-param>
Spring+JSF示范
Spring+JSF示范????<servlet>
Spring+JSF示范????????<servlet-name>Faces?Servlet</servlet-name>
Spring+JSF示范????????<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
Spring+JSF示范????????<load-on-startup>1</load-on-startup>
Spring+JSF示范????</servlet>
Spring+JSF示范
Spring+JSF示范????<servlet-mapping>
Spring+JSF示范????????<servlet-name>Faces?Servlet</servlet-name>
Spring+JSF示范????????<url-pattern>/faces/*</url-pattern>
Spring+JSF示范????</servlet-mapping>
Spring+JSF示范
Spring+JSF示范????<session-config>
Spring+JSF示范????????<session-timeout>30</session-timeout>
Spring+JSF示范????</session-config>
Spring+JSF示范
Spring+JSF示范????<welcome-file-list>
Spring+JSF示范????????<welcome-file>faces/stockInput.jsp</welcome-file>
Spring+JSF示范????</welcome-file-list>
Spring+JSF示范</web-app>
Spring+JSF示范

?

Spring+JSF示范
? Spring+JSF示范

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

读书人网 >JavaScript

热点推荐