《应用程序的结构(ACCP工程师课件).ppt》由会员分享,可在线阅读,更多相关《应用程序的结构(ACCP工程师课件).ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ACCP V4.0第六章第六章JSF 应用程序的结构ACCP V4.0qJSF 将表示和应用程序行为明确分开,JSF是一种事件驱动型的组件模型q请求处理生命周期包括6个阶段qJSF页面指向Bean属性,业务逻辑包含在Bean实现代码中qJSF提供了一系列可用于JSP页面里的标准UI组件q数据转换模型负责将 UI 组件文本数据转换成 java 数据类型q事件和监听器模型负责注册事件和处理事件。当一个事件被触发时,JSF将调用相应的监听器的方法回顾2ACCP V4.0目标q理解JSF应用的开发过程q在 JBuilder 2005 中创建 JSF 应用程序q国际化 JSF 应用程序3ACCP V4.
2、0JSF 开发角色 2-1页面设计人员应用程序开发人员工具开发人员JSF 实现者组件开发人员4ACCP V4.0页面设计人员组件开发人员应用程序开发人员工具开发人员创建 Web 应用程序的用户界面为模型对象和事件处理编程创建基于JSF组件的定制组件他们负责开发可重用组件、呈现器类以及各种库JSF 实现者提供执行 JSF Web 应用程序的运行时环境为页面设计人员、组件开发人员以及应用程序开发人员开发各种集成开发环境(IDE),以简化多层Web应用的开发JSF 开发角色 2-25ACCP V4.0JSF 开发过程开发模型对象开发模型对象开发基于开发基于JSF的的用户界面用户界面编写事件监听编写事
3、件监听器或者导航规器或者导航规则则6ACCP V4.0开发模型对象2-1组件应用程序开发人员应用程序开发人员应用程序开发人员应用程序开发人员JSP 页页面设计人员页面设计人员页面设计人员页面设计人员模型对象属性后台后台后台后台 Bean Bean !验证验证7ACCP V4.0开发模型对象2-2public class User private String email;private String password;Authenticate obj=new Authenticate();public void setEmail(String email)this.email=email;pu
4、blic void setPassword(String password)this.password=password;public String getEmail()return email;public String getPassword()return password;public boolean verifyUser(String email,String pwd)return obj.validateUser(email,pwd);Userbeanmessages.Usersessionclass Authentication public boolean validateUs
5、er(String email,String pwd)/此代码检查数据库中的用户信息 /如果用户存在则返回 true,否则返回 false 8ACCP V4.0开发用户界面q建立JSP页面,使用定制标签表示将作为HTML 元素的用JSF组件 9ACCP V4.0定义页面导航登录成功!登录成功!欢迎 Thomas!欢迎来到登录页!登录重置输入电子邮件地址:输入密码:*在不同页面之间导航在不同页面之间导航/login.jspsuccess/mygroups.jspfailure/login.jspfaces-config.xml 文件中的导航规则文件中的导航规则10ACCP V4.0JBuilde
6、r提供的JSF工具q创建支持JSF框架的Web模块向导qFaces Config 编辑器 qJSP编辑器 11ACCP V4.0示例程序q将实现一个简单的计算器程序,用户输入两个数,并选择相应的算术运算,系统反馈计算结果676812ACCP V4.0开发模型对象q该应用程序需要两个模型对象q Calculator完成算术运算(加、减、乘和除)q CalculatorController为受管理的Bean,该Bean包含三个属性将用于收集输入和显示结果public class Calculator public double add(double a,double b)return a+b;pu
7、blic double subtract(double a,double b)return a-b;public double multiply(double a,double b)return a*b;public double divide(double a,double b)return a/b;public class CalculatorController private Calculator calculator=new Calculator();private double firstNumber=0.0;private double result=0.0;private do
8、uble secondNumber=0.0;public void setCalculator(Calculator aCalculator)this.calculator=aCalculator;public void setFirstNumber(double aFirstNumber)this.firstNumber=aFirstNumber;public double getFirstNumber()return firstNumber;public void setSecondNumber(double aSecondNumber)this.secondNumber=aSecondN
9、umber;public double getSecondNumber()return secondNumber;public double getResult()return result;public String add()result=calculator.add(firstNumber,secondNumber);return success;public String subtract()13ACCP V4.0配置受管理的Bean 演示:通过JBuilder的Faces Config编辑器配置受管理的Bean CalcBean calc.CalculatorController s
10、ession 14ACCP V4.0开发用户界面index.jspq为计算器应用程序创建三个视图页:index.jsp、calculator.jsp 和 results.jspqindex.jsp 页包含将重定向到 calculator.jsp 的代码首页15ACCP V4.0开发用户界面calculator.jsp计算器算术计算器 16ACCP V4.0开发用户界面result.jsp结果结果页面 第一个数:第二个数:结果:17ACCP V4.0导航配置 演示:通过JBuilder的Faces Config编辑器配置导航规则 /calculator.jsp success /results.
11、jsp 18ACCP V4.0web.xml CalcWebModule Faces Servlet 1 Faces Servlet *.faces Added by JBuilder to compile JSPs with debug info debugjsp classdebuginfo true 3 debugjsp *.jsp 演示:示例示例119ACCP V4.0q国际化(I18N)就是设计软件应用,在不改变它们程序逻辑的前提下支持各种语言和区域q本地化(L10N)就是设计软件应用支持特定地区由于数据经过本地化,因此同一应用程序能在全世界使用当增加一种新的语言时,应用不需要重新编
12、译在显示和文化相关的数据(例如日期或货币)时,格式应用遵循用户的语言和区域文本内容(如状态消息和组件标签)不是硬编码到应用程序中,而通常是从文本文件中动态提取的国际化 JSF 应用程序20ACCP V4.0创建地区属性文件JSP 页面中加载资源包使用普通表达式语言结构提取输出信息 创建一个包含应用程序默认语言的键/值对的文件 文件命名格式:Filename_languagecode_CountryCode.properties例如:ApplicationResources_zh_CN.propertiesJSF 提供 标签以加载资源包此标签具有两个属性:basename 和 varbasena
13、me 指定要加载的 properties 文件的名称var属性用来为该properties文件起一个别名.国际化的步骤21ACCP V4.0示例程序q通过一个猜数游戏的示例来介绍国际化JSF应用程序的步骤。实现更复杂的功能,同时国际化该JSF应用程序 67 151622ACCP V4.0属性文件q该示例程序支持两种语言:英文和中文。所以需要两个属性文件。分别为messages_en_US.properties 和messages_zh_CN.properties。how_to_play=Please pick a number between 0 and 100.makeguess_butto
14、n=Make Guesstrayagain_button=Play Again?success_text=How cool.You have guessed the number,0 is correct!tryagain_smaller=Oops.incorrect guess.Please try a smaller number.tryagain_bigger=Oops.incorrect guess.Please try a bigger number.how_to_play=请猜测一个从0到100之间的数。makeguess_button=猜数tryagain_button=再玩一次
15、?success_text=太酷了.你已经猜对了,0 是正确的!tryagain_smaller=不好意思.你猜错了。请试着猜小一点的数。tryagain_bigger=不好意思.你猜错了。请试着猜大一点的数。messages_en_US.propertiesmessagesCN.propertieshow_to_play=u8bf7u731cu6d4bu4e00u4e2au4ece0u5230100u4e4bu95f4u7684u6570u3002makeguess_button=u731cu6570tryagain_button=u518du73a9u4e00u6b21uff1fsucce
16、ss_text=u592au9177u4e86.u4f60u5df2u7ecfu731cu5bf9u4e86uff0c 0 u662fu6b63u786eu7684!tryagain_smaller=u4e0du597du610fu601d.u4f60u731cu9519u4e86u3002 u8bf7u8bd5u7740u731cu5c0fu4e00u70b9u7684u6570u3002tryagain_bigger=u4e0du597du610fu601d.u4f60u731cu9519u4e86u3002 u8bf7u8bd5u7740u731cu5927u4e00u70b9u7684
17、u6570u3002native2ascii encoding gb2312 messagesCN.properties messages_zh_CN.properties23ACCP V4.0NumberBean 代码片段public class NumberBean Integer userNumber;/用户输入的数字 int randomNumber;/应用程序产生的随机数 public NumberBean()randomNumber=(int)(Math.random()*100);System.out.println(Random number:+randomNumber);pu
18、blic void setUserNumber(Integer value)this.userNumber=value;public Integer getUserNumber()return this.userNumber;/该方法使当前的session失效 public String playagain()FacesContext context=FacesContext.getCurrentInstance();HttpSession session=(HttpSession)context.getExternalContext().getSession(false);session.i
19、nvalidate();return playagain;/检查用户是否猜中 public String checkGuess()if(userNumber.intValue()=randomNumber)return success;else FacesContext context=FacesContext.getCurrentInstance();ResourceBundle bundle=ResourceBundle.getBundle(messages,context.getViewRoot().getLocale();String msg=;if(userNumber.intVal
20、ue()randomNumber)msg=bundle.getString(tryagain_smaller);else msg=bundle.getString(tryagain_bigger);context.addMessage(null,new FacesMessage(msg);return playagain;24ACCP V4.0JSP页面 q在JSP页面中可以使用标签来指定加载属性文件。该示例共有两个页面:inputnumber.jsp和success.jsp inputnumber.jsp success.jsp25ACCP V4.0导航规则演示:示例2 *playagain /inputnumber.jsp /inputnumber.jsp success /success.jsp 26ACCP V4.0总结qJSF 应用程序的用户界面由页面设计人员设计。模型对象是由应用程序开发人员实现的q开发一个JSF应用的步骤包括:开发模型对象、开发基于JSF用户界面、编写时间监听器或者导航规则q JBulider提供的JSF开发工具包括:JSF创建向导、Faces Config 编辑器和JSP编辑器qJSF 通过从属性文件中提供特定于语言环境的数据来实现国际化27