JSF的简介
JavaServerFaces
是2004年SUN推出的一个规范,也是基于MVC的一种架构
Struts2是基于标准的HTTP请求响应
的模式,而JSF是基于事件
的一种编程模型
JSF中页面表单的每一个输入域都绑定到后台backingbean
中对应的属性上
JSF也是基于Web的
,属于JSP跟Servlet层次,所以使用Tomcat即可运行
而无需借助类似于WebLogic、JBoss、GlassFish
之类的应用服务器
JSF的实现
比较有名的是Apache的MyFaces
,它提供了更多的组件,也是比较成熟的
使用MyFaces
可以满足日常所需的绝大多数功能的需求,比较全面
JSF与ASP.NET
SUN之所以推出JSF
,其实很大程度上是模仿了微软的ASP.NET
编写JSF时也是通过标签来引入相应元素
,例如填写完表单内容后点击提交按钮
它就会执行与提交按钮所绑定的事件所对应的方法
因此从这点来说,JSF跟ASP.NET是异曲同工的
它们都是将期望的原始的Web开发方式转化成接近于桌面应用的开发方式
下面是JSF应用的简单示例
首先是web.xml文件
然后是faces-config.xml文件
接着是index.jsp页面
接着是login.jsp页面
<B><h:outputText value="#{userBean.message}" /></B>
<h:form>
<h:outputText value="username: " />
<h:inputText value="#{userBean.username}" /><BR>
<%-- 这里#{}表示一种绑定,这里是与userBean对象的username属性进行绑定 --%>
<h:outputText value="password: " />
<h:inputSecret value="#{userBean.password}" /><BR>
<%-- action属性表示:点击该按钮时就会触发userBean对象的validateUser()方法 --%>
<%-- 但是注意,页面中不要写成action="#{userBean.validateUser()}"的形式 --%>
<h:commandButton value="Login" action="#{userBean.validateUser}" />
</h:form>
</f:view>
接着是success.jsp页面
最后是ManagedBean
/*--三个属性对应的getter和setter略--*/
//如果该方法最后return null的话,那么该请求就会返回到原页面,即login.jsp页面
public String validateUser() {
if ("admin".equals(username) && "jadyer".equals(password)) {
return "success"; //并不是一定要写成success,也可以使用其它有意义的字符串
}
this.setMessage("username or password error!");
return "failure";
}
}