JSF笔记 - JSF在项目中的基本使用 实现一个简单的登录跳转

下面实现一个登陆功能:

首先是创建一个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


<!-- 使用JSF视图输出 –>
<f:view>

用户登录


<h:outputTest value=”#{login.error }” />

<h:form id=”loginForm”>
用户名:<h:inputText value=”#{login.username }”></h:inputText>
密码:<h:inputText value=”#{login.password }”></h:inputText>
<h:commandButton action=”login.valid” value=”登录”></h:commandButton>
</h:form>
</f:view>

其中的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 –>

login
com.itzhai.LoginBean</managed-bean-class>
request

在faces-config-nav.xml中定义导航规则:



<!-- 导航规则的输入页面 –>
/login.jsp

success
/index.jsp


failure
/login.jsp


可以发现,这里跟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" %>



Login


<!-- 使用JSF视图输出 –>
<f:view>

用户登录


<h:outputText value=”#{login.error }” />

<h:form id=”loginForm”>
用户名:<h:inputText value=”#{login.username }”></h:inputText>
密码:<h:inputText value=”#{login.password }”></h:inputText>
<h:commandButton action=”#{login.valid }” value=”登录”></h:commandButton>
</h:form>
</f:view>

这样,重启服务器,输入访问URL:

http://localhost:8080/JSFTest/login.jsf

输入用户名:arthinking和密码123即可跳转到index.jsp页面,否则跳转会index.jsp页面并提示错误信息。

arthinking wechat
欢迎关注itzhai公众号