下面实现一个登陆功能:
首先是创建一个JSFTest项目,按照MVC和JSF的介绍和下载使用文章说明加入Jar包和配置web.xml文件。
接下来是编写登陆页面login.jsp:
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
<%@ taglib prefix=“f” uri=“http://java.sun.com/jsf/core” %>
<%@ taglib prefix=“h” uri=“http://java.sun.com/jsf/html” %>
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
用户登录
其中的login是托管Bean,LoginBean,后面会实现这个类。
现在把项目部署到JBoss服务器中,并启动服务器,输入URL访问:
http://localhost:8080/JSFTest/login.jsf
可以发现页面正常显示,表示程序正常运行。
开发托管Bean:
托管Bean非常类似Struts2中的Action,但有一点不同:Struts2的Action是通过表单提交的方式把请求提交到Struts2的Action中,需要开发者理解请求/相应架构;但是对于JSF的托管Bean而言,系统直接将JSF中UI组件的行为绑定到托管Bean的属性或者方法。
下面编写托管Bean LoginBean:
public class LoginBean {
//下面的三个属性与JSF标签绑定
private String username;
private String password;
private String error;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
//被绑定到UI组件的action方法,返回值被导航规则处理结果页面跳转判断时使用,导航规则将在后面编写
public String valid(){
if(username.equals("arthinking") && password.equals("123")){
return "success";
}
setError("用户名或密码错误!");
return "failure";
}
}
在faces-config-beans.xml文件中配置该托管Bean:
<!-- 配置托管Bean -->
在faces-config-nav.xml中定义导航规则:
<!-- 导航规则的输入页面 -->
可以发现,这里跟Struts2的Action配置很相似,都是为方法的结果参数设置不同的跳转页面。这里还要提供一个login.jsp页面:
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
<%@ taglib prefix=“f” uri=“http://java.sun.com/jsf/core” %>
<%@ taglib prefix=“h” uri=“http://java.sun.com/jsf/html” %>
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
用户登录
这样,重启服务器,输入访问URL:
http://localhost:8080/JSFTest/login.jsf
输入用户名:arthinking和密码123即可跳转到index.jsp页面,否则跳转会index.jsp页面并提示错误信息。