




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JSF 学习笔记(第一天)HELLO WORLD看了一些关于JSF的介绍:JavaServer Faces(JSF) 是一种标准的 J2EE 表示层的技术,其主旨是为了使 Java 开发人员能够快速的开发基于 Java 的 Web 应用程序。它不同于其它 Java 表示层技术的最大优势是其采用的组件模型,事件驱动,并且和其它的 MVC 框架相比,它是一种 Java 标准,在Java EE 5 中,JavaServer Faces 1.2 正式作为一个标准,加入 Java Enterprise 的世界。顺手也写个HELLO WORD 的程序,感觉有点像STRUTS,刚开始上路,没有遇到什么阻碍。想到MYECLIPSE 4.1.1支持JSF,所以就拿来用用看。以下是用的配置ECLIPSE3.1.1+MYECLPISE4.1.1TOMCAT 5.59用IDE 建立一个名字为JSF的WEB project,然后 在菜单上选择MyEclipse add jsf.然后弹出个对话框,基本上就不改了用默认吧,直接点完成。用这个好处,就懒的去SUN 网站上去下包了,JSF 要的包都给加载了。还是首先写个JAVA BEAN。package onlyfun.caterpillar;public class UserBean private String name;/名字private String password;/密码private String errMessage;/错误消息public void setName(String name) = name;public String getName()return name;public String getErrMessage() return errMessage;public void setErrMessage(String errMessage) this.errMessage = errMessage;public String getPassword() return password;public void setPassword(String password) this.password = password;/用来对表单验证的方法用户密码错误返回页面 并且提示错误信息,正确返回success 决定页面流程public String verify()if(name.equals(vincent)&password.equals(123456)return success;elseerrMessage = 名称或者密码错误;return failed;然后在WEB-INF 下找到 faces-config.xml文件,我们来定义流程!-你的来源网页可能是个特定模组,例如在/admin/下,你可以在下使用*例如:/admin/*这个表示,只要是/admin下来的,都可以执行下面的navigation-case如果没有,则表示,网页来源没有限定-/page/index.jsp #user.verify success/page/welcome.jsp failed/page/index.jspuseronlyfun.caterpillar.UserBeansession接着在WEB ROOT 里建一个PAGE目录,然后创建一个index.jsp 第一个JSF程序 请输入你的名字 名称: 密码: 类似于的作用,所有的元件必须在之间.表示产生一个表单表示输出errMessage表示单行文本框表示密码框我们再在PAGE下建立一个welcome.jsp文件 第一个JSF 程序 您好 欢迎使用JSF 最后我们部署到TOMCAT下,运行http:/localhost/jsf/page/index.faces查看一下结果还不错。整个感觉下来,有STRUTS基础,然后在学JSF,入门比较快了,但是STRUTS毕竟只是STRUTS,和JSF不能比啊。呵呵。继续努力 jsf 学习笔记第二天jsf EL 和国际化问题 先来说说JSF EL, 所谓JSF EL 是JSF EXPRESSION LANGUAGE 主要用来搭配JSF标签来使用的,这里好像感觉跟JSTL里的表达式语言类似。JSF EL 是用#开头例如:#someBeanName。里面的变量名称可以是faces-config.xml里定义的如果是bean 的话可以用.来获取他的属性。例如:. .你也可以这么使用:. 姓名,年龄:h:outputText value=#userB,#userBean.age.以上的执行结果将是:姓名,年龄:vincent,23JSF EL 也可以是在程序中命名的名称,也可以是JSF EL 所预定的隐含变量名。例如:. .这里的param 就是JSF EL 所预定的隐含变量名,他代表了request 里所有参数的集合,他实际就是个java.util.Map对于Map 来说,除了用.来读取对象,我们还可以用name来读取例如:. .也可以在之间放其他变量,例如:. .如果是LIST或者数组的话可以用指定索引例如:. .也可以指定常数,比如true,false,字符串,数值,JSF EL 都会尝试做转换。例如:. .如果是字符串常量,必须用单引号或者双引号括住,这样才会不被误认为字符串变量。如果要命名变量名称时候,不可于JSF EL 的保留字和关键字同名,例如:true ,false,null,div,mod,and,or,not,eq,ne,lt,gt,ge,instanceof,emptyJSF EL 也可以算术运算和逻辑运算,关系运算,感觉和都差不多,我就不一一列举了。最主要的还是要#这样的形态表示拉。国际化问题internationalization 国际化,简称I18N,刚开始不知道什么叫I18N,其实就是国际化从第一个字母I到最后一个字母N一共有18个字母,所以叫I18N。JSF 的国际化问题,也有点类似于STRUTS,首先我建立一个包 perties,然后在这个包下建一个basename_pertiestitleText=JSF DEMOhintText=please input your name and passwordnameText=namepassText=passwordcommandText=submiterrMessageText=your name or password errorzh_CnText=chineseen_UkText=englishhelloText=hello然后在建一个basename_zh_CN.txttitleText=JSF 示范hintText=请输入你的名称和密码nameText=名称passText=密码commandText=送出errMessageText=你的用户名或者密码错误zh_CnText=中文en_UkText=英文helloText=您好然后用命令,native2ascii -encoding bgk beasename_zh_CN.txt basename_zh_CN.properties进行转换,转换以后得到以下内容。titleText=JSF u793au8303hintText=u8bf7u8f93u5165u4f60u7684u540du79f0u548cu5bc6u7801nameText=u540du79f0passText=u5bc6u7801commandText=u9001u51faerrMessageText=u4f60u7684u7528u6237u540du6216u8005u5bc6u7801u9519u8befzh_CnText=u4e2du6587en_UkText=u82f1u6587helloText=u60a8u597d然后你就可以用了,以下是个例子:index.jsp : : welcome.jsp userBean.javapackage onlyfun.caterpillar;import javax.faces.event.ActionEvent;public class UserBean private String name;private String password;private String errMessage;private String locale;private String outsome;public String outsome() return outsome;public String getLocale() return locale;public void setLocale(String locale) this.locale = locale;public void setName(String name) = name;public String getName() return name;public String getErrMessage() return errMessage;public void setErrMessage(String errMessage) this.errMessage = errMessage;public String getPassword() return password;public void setPassword(String password) this.password = password;public String verify(ActionEvent event) if(name.equals(vincent)&password.equals(123456) return outsome = success; else errMessage = 名称或者密码错误; return outsome = failed; 看一下上面的两个JSP文件,当不指 定时,则根据操作系统来变化,假如操作系统是中文的,那就显示中文,如果操作系统是英文的,那就显示英文。当指定时,则显示英文。他用的是basename_perties。反之locale=zh_cn时显示中文。他 将用basename_zh_CN.properties。也可以在faces-config.xml 中设定语种: perties.basename en zh_CN 其实这里可以发现,perties.basename和JSP 中 里面的perties.basename 这里采用这样的一种方式,perties 是包名最后一个basename 是文件名。在以上的例子当中,我采用了,自己可选语种的方式。其中。 里面有个 属性有个是value 和ItemValue 刚开始学没搞清这两个有什么区别,刚开始用的是value 属性,无论如何,他都报错。然后换成ItemValue 就能正常显示了。以上例子供参考。今天学习任务完毕!JSF 学习笔记第三天BEAN 的管理Backing Beans backing Bean 又称glue Bean 他是业务逻辑BEAN 和UI连接的桥梁。在Backing Bean 里面可以调用业务逻辑BEAN,也可以被显示层UI元件取出。JSF 将BEAN管理集中在faces-config.xml中。例如:useronlyfun.caterpillar.UserBeansessionnamevincent!-如果是空值则设置成 - password123456一个类最基本要定义,名称,类,和存活返回。也就是:,bean的状态与设定 刚才说BEAN的管理是在faces-config.xml中,不过也可以自行定义名称,是在web.xml中提供javax.faces.CONFIG_FILES 参数。例如: javax.faces.CONFIG_FILES /WEB-INF/faces-config.xml 定义档也可以多个,中间用逗好隔开例如/WEB-INF/faces-config.xml,/WEB-INF/navigation.xml如果要在其他类中取BEAN的属性,则可以先取到javax.faces.context.FacesContext他代表了JSF 目前环境执行的属性。接着尝试取的。javax.faces.el.ValueBinding。例如:FacesContext context = FacesContext.getCurrentInstance();ValueBinding binding = context.getApplication().createValueBinding(#user);UserBean bean = (UserBean) binding.getValue(context);/ 如果要取BEAN的某个属性的值,则采用以下方法。/FacesContext context = FacesContext.getCurrentInstance();/ValueBinding binding = context.getApplication().createValueBinding(#);/String name = (String) binding.getValue(context);如果要在BEAN开启时,就对值进行初始化。就看上面那个XML。当然还可以将其他产生的BEAN 设给另一个BEAN的属性。例如:userActiononlyfun.control.UserBeanActionrequestuser #user bean 上的List,Map 如果BEAN里面有LIST或者MAP的属性。则可以在配置文件中直接设定值。当BEAN属性为LIST时,初始化设置值nameListjava.lang.Integer123当BEAN属性为MAP时,初始化设置值nameMapjava.lang.Integersome1100some2200今天学了BEAN的管理。学到这里,有些地方又感觉SPRING类似了,因为里面有SPRING特有的东西,IOC和DI的东西。学了几天下来,算是个小入门了。感觉还不错。明天开始学标签啦。!JSF 学习笔记第四天数据转换与验证数据转换与验证 标准转换器 JSF定义了一系列的标准转换器(Converter),对基本类型或是其他的Wrapper类别,JSF 会使用javax.faces.Boolean,javax.faces.Byte,javax.faces.Character.javax.faces.Double,javax.faces.Float,javax.faces.Integer,javax.faces.Long,javax.faces.Short等进行自动转换,对于BigDecimal,BigInteger,则会使用javax.faces.BigDecimal,javax.faces.BigInteger自动转换,至于DateTime,Number,可以使用,标签,看以下例子:converter.jsp:My JSF converter.jsp starting page!- 设定的日期是:UserBean:private Date date = new Date();public Date getDate()return date;public void setDate(Date date)this.date = date;faces-config.xml:/*show/page/converter.jsp还有几个可用的属性,参考下Tag Library Documentation自定义转换器除了标准的转换器之外,还可以自定义转换器。你的类,必须实现javax.faces.convert.Converter接口,并且实现下面两个方法。public Object getAsObject(FacesContext context,UIComponent component,String str);public String getAsString(FacesContext context,UIComponent component,Object obj);简单的说,第一个方法会接收从客户端经由http传来的字串资料,在这个方法将之转换自定义类型。第二个方法就是将从Bean类的对象转换成字串,如此才能由HTTP传回给客户端。以下将直接以一个例子来做说明。User.java:package onlyfun.caterpillar;public class Userprivate String firstName;private String lastName;public String getFirstName() return firstName;public void setFirstName(String firstName) this.firstName = firstName;public String getLastName() return lastName;public void setLastName(String lastName) this.lastName = lastName;这个类是我们要用转换器的转换的目标,而有一个GuestBean 类,如下:GuestBean.java:package onlyfun.caterpillar;import javax.faces.convert.Converter;public class GuestBean private UserBean user;public UserBean getUser() return user;public void setUser(UserBean user) this.user = user;这个BEAN上的属性,直接传回或接受User 类的属性,来做一个简单的转换器,如下:UserConverter.java:package onlyfun.caterpillar;import ponent.UIComponent;import javax.faces.context.FacesContext;import javax.faces.convert.Converter;import javax.faces.convert.ConverterException;public class UserConverter implements Converter public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) String strs = arg2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025物业管理抵押借款合同
- 2025智慧合同管理系统:效率与合规的典范案例
- 2025培训师聘用合同模板
- 2025劳动合同终止协议范本
- 公司财务知识培训主持词课件
- 揭阳空港消防知识培训课件中心
- 技术岗位面试题及答案攻略
- 2025财产委托代管合同范本
- 新媒体人才招募实战模拟面试题集锦
- 全场景面试经验分享:全球百强面试题目的运用与解答
- 找对英语学习方法的第一本书
- 2.AD830机台板面操作讲解
- 《诺丁山》经典台词
- 职高英语词汇表优质资料
- YY/T 0752-2009电动骨组织手术设备
- GB/T 40080-2021钢管无损检测用于确认无缝和焊接钢管(埋弧焊除外)水压密实性的自动电磁检测方法
- GB/T 2-2001紧固件外螺纹零件的末端
- 路基土石方工程施工方案
- 教育评价学全套ppt课件完整版教学教程
- 手术通知单模板
- 油气藏类型、典型的相图特征和识别实例
评论
0/150
提交评论