📄 jsf.txt
字号:
一、jsf,是基于mvc的一个web框架
1、核心类:
FacesServlet:接收所有的请求。
FacesContext:封装数据
2、核心配置文件
faces-config.xml
<manager-bean>
<manager-bean-name>bean的名称</manager-bean-name>
<manager-bean-class>bean类</manager-bean-class>
<manager-bean-scope>bean的生命周期</manager-bean-scope>
</manager-bean>
<navigation-rule>
<from-view-id>/login.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/success.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>error</from-outcome>
<to-view-id>/error.jsp</to-view-id>
</navigation-case>
</navigation-rule>
3、jsf与struts的比较
struts是一个粗粒度的处理,一个表单只有一个动作。
jsf是一个细粒度的处理,支持事件,支持提交,一个表单
可以有多个动作。
3、jsf的六大生命周期
1、恢复视图:将html请求转化组件树
2、应用请求值:将html请求中的值写入到组件中
3、校验:校验是否符合要求,如值的范围等。
4、更新模型:可以更新后台javaBean的值
5、调用应用程序:调用后台javaBean的值
6、呈现响应:将组件树转化为html返回给客户端。
一、jsf中的五大组件
ui组件
h:inputText
h:outputText
h:form
<h:dataTable value="#{oper.all}" var="user">
<h:column>
<f:facet name="header">
<h:outputText value="姓名"/>
</f:facet>
<h:outputText value="#{user.userName}"/>
</h:column>
</h:dataTable>
<h:selectOneMenu property="#{oper.user.sex}">
<f:selectItems property="#{oper.sexes}"/>
</h:selectOneMenu>
<h:selectOneRadio property="#{oper.user.sex}">
<f:selectItems property="#{oper.sexes}"/>
</h:selectOneRadio>
<h:commandButton action="#{oper.login}" actionListener="#{oper.textClick}"
value=""/>
<h:commandLink action="#{oper.register}" actionListener="#{oper.textClick}"
value="注册"/>
<h:commandButton>
<f:actionListener type="jsf.MyActionListener"/>
</h:commandButton>
<h:inputText>
<f:valueChangeListener type="jsf.MyValueChangeListener"/>
</h:inputText>
监听及事件处理
1、在公开的bean中写方法,参
数必须是ActionEvent或ValueChangeEvent,通
过inputText的valueChangeListener属性说明事件,
通过commandButton的actionListener属性说明单击事件。
2、写一个ActionListener接口实现类或
ValueChangeListener接口实现类
通过
<f:actionListener type="jsf.MyAction"/>
或
<f:valueChangeListener type="jsf.MyValueListener"/>
显示
解码:将html请求转化为组件树
转码:将组件树转化为html标记
转换:
将字符串转化为bean对应的数据类型
<f:convertDateTime pattern="yyyy-MM-dd"/>
校验:
<f:validateLongRange/>
<f:validateDoubleRange/>
<f:validateLength/>
二、jsf中标签
h:
f:
<f:selectItems>
<f:view>
<f:validateLongRange>
<f:validateDoubleRange>
<f:validateLength>
<f:facet name="header"/>
<f:converDateTime/>
<f:actionListener/>
<f:valueChangeListener/>
<f:loadBound values="message" var="msg"/>
<h:outputText value="#{msg.userName}">
一、jsf的核心配置文件
facaes-config.xml:说明受管理的bean,说明页面导航
受管理的bean
<bean-manager>
<bean-manager-name>oper</bean-manager-name>
<bean-manager-class>bean.OperBean</bean-manager-class>
<bean-manager-scope>request/session/application</bean-manager-scope>
</bean-manager>
说明页面导航
<navigation-rule>
<from-view-id>/login.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/success.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>error</from-outcome>
<to-view-id>/error.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/success.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>error</from-outcome>
<to-view-id>/error.jsp</to-view-id>
</navigation-case>
</navigation-rule>
二、jsf的核心类及作用
FacesServlet:接收所有的请求,在web.xml部署说明
FacesContext:封装所有请求信息、reqeust、response、session、application
三、jsf的六大生命周期
恢复视图:将html请求转化为组件树
应用请求值:将页面的值写入到组件中
校验:是否符合要求
更新模型:更新后台的javaBean
调用应用程序:调用后台的java类
呈现响应:将html页面返回给客户端。
四、jsf中的标签
html标签:
<h:inputText value="#{oper.user.userName}">
<h:outputText value="#{oper.user.sex}">
<h:selectOneMenu value="#{oper.user.sex}">
<f:selectItems value="#{oper.sexes}"/>
</h:selectOneMenu>
<h:selectOneRadio value="#{oper.user.sex}">
<f:selectItems value="#{oper.sexes}"/>
</h:selectOneRadio>
<h:selectManyMenu value="#{oper.user.sex}">
<f:selectItems value="#{oper.sexes}"/>
</h:selectManyMenu>
<h:selectManyCheckBox value="#{oper.user.sex}">
<f:selectItems value="#{oper.sexes}"/>
</h:selectManyCheckBox>
<h:form></h:form>
--表格
<h:dataTable values="#{oper.all}" var="user">
<h:column>
<f:facet name="header">
<h:outputText value="姓名"/>
</f:facet>
<h:outputText value="#{user.userName}"/>
</h:column>
</h:dataTable>
核心标签:
<f:view>
<f:facet>
<f:selectItems>
jsf的五大组件:
1、ui组件
h:inputText
h:outputText
2、事件监听器
第一种实现,写Listener类,在标签中说明具体的listener
写Listener类
public class MyActionListener implements ActionListener
{
public void processAction(ActionEvent arg0) throws AbortProcessingException
{
System.out.println("我是按钮或超链的单击事件");
}
}
注册事件
//主要针对提是按钮及超链
<h:commandButton/commandLink>
<f:actionListener type="oper.MyActionListener"/>
</h:commandButton/commandLink>
//主要针对的是文本(输入框、密码域)
<h:inputText>
<f:valueChanageLister type="oper.MyValueChangeListener"/>
</h:inputText>
第二种实现
在bean说明事件方法,参数必须是ActionEvent或ValueChangeEvent
1、方法实现
public void testValueChange(ValueChangeEvent vcl)
{
System.out.println("值改变了");
}
public void testClick(ActionEvent al)
{
System.out.println("被提交了");
}
2、通过标签属性事件
valueChangeListener="#{oper.testValueChange}"
actionListener="#{oper.testClick}"
3、校验
<f:validateLength/>
<f:validateLongRange/>
4、显示:
解码:将html请求转化为组件树
编码:将组件树转化为html请求,转发给客户端。
5、转换:
将表单域的值转化为bean中说明的数据类型。
<f:converDateTime pattern="yyyy-MM-dd"/>
jsf的导航的两种方式
1、静态导航:直接给一个字符串常数
<h:commandAction action="success">
2、动态导航:根据方法执行的结果导航到不同的页面
<h:commandAction action="#{oper.login}">
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
一、jsf的核心类
FacesServlet:接收所有的请求信息
FacasContext:封装表单及request、application、session的所有数据。
二、jsf的核心配置文件:管理bean及页面导航
faces-config.xml
<manager-bean>
<manager-bean-name>user</manager-bean-name>
<manager-bean-class>ejb.entity.Users</manager-bean-class>
<manager-bean-scope>request</manager-bean-scope>
</manager-bean>
<navigation-rule>
<from-view-id>/login.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-coutcome>
<to-view-id>/success.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>success</from-coutcome>
<to-view-id>/success.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>success</from-coutcome>
<to-view-id>/success.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>success</from-coutcome>
<to-view-id>/success.jsp</to-view-id>
</navigation-case>
</navigation-rule>
三、jsf的六大生命周期
恢复视图:将html请求转化为组树
应用请求值:将客户的请求信息写入到服务端组件中
校验:是否符合校验规则
更新模型:更新后台bean的值
调用应用程序:调用后台bean的方法
呈现响应:将组件转化为html提交给ie。
四、jsf的标签
html标签
<h:form>
<h:inputText value="#{oper.user.userName}"/>
<h:inputSecret value="#{oper.user.userName}"/>
<h:commandButton action="#{oper.login}" value="登陆"/>
--显示表格,取所有的数据
1、定义一个get方法返回是一个DataModel
public DataModel getAll()
{
List<users> users=facade.getAll();
DataModel dm=new ListDataModel();
dm.setList(users);
return dm;
}
2、通过表格取数据
<h:datatable value="#{oper.all}" var="user">
<h:column>
<f:facet name="header">
<h:outputText value="姓名"/>
</f:facet>
<h:outputText value="#{user.userName}"/>
</h:column>
</h:datatable>
--显示单选按钮
<f:selectOneRadio value="sex">
<f:selectItems values="sexes"/>
</f:selectOneRadio>
--显示下列列表
<f:selectOneMenu value="#{oper.sex}">
<f:selectItems values="#{oper.sexes}"/>
</f:selectOneMenu>
sexes中是oper的一个属性,其类型为List,每一个数据项是SelectItem的实例。
--日志转化
1、数据类的类型是java.util.Date
2、通过
<h:inputText value="#{oper.user.birthday}">
<f:covertDateTime pattern="yyyy-MM-dd"/>
</h:inputText>
核心标签:
<f:view/>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -