JSF笔记 – JSF在项目中的基本使用 实现一个简单的登录跳转
本文由发表于6年前 | J2EE | 暂无评论 |  被围观 6,742 views+
接下来是编写登陆页面login.jsp:开发托管Bean:在faces-config-beans.xml文件中配置该托管Bean:在faces-config-nav.xml中定义导航规则:

下面实现一个登陆功能:

首先是创建一个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" %>
<html>
<head>
    <title>Login</title>
</head>
<body>                   
    <!-- 使用JSF视图输出 -->
    <f:view>
        <h3>用户登录</h3>
        <div><h:outputTest value="#{login.error }" /></div>
        <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>
</body>
</html>

其中的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:
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
              version="1.2">
    <!-- 配置托管Bean -->
    <managed-bean>
        <managed-bean-name>login</managed-bean-name>
        <managed-bean-class>com.itzhai.LoginBean</managed-bean-class> 
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>       
</faces-config>
在faces-config-nav.xml中定义导航规则:
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
              version="1.2">
    <navigation-rule>
        <!-- 导航规则的输入页面 -->
        <from-view-id>/login.jsp</from-view-id>
        <navigation-case>
            <from-outcome>success</from-outcome>
            <to-view-id>/index.jsp</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>failure</from-outcome>
            <to-view-id>/login.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>    
</faces-config>

可以发现,这里跟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" %>
<html>
<head>
    <title>Login</title>
</head>
<body>                   
    <!-- 使用JSF视图输出 -->
    <f:view>
        <h3>用户登录</h3>
        <div><h:outputText value="#{login.error }" /></div>
        <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>          
</body>
</html>

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

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

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

除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/jsf-note-jsf-in-a-project-to-achieve-the-basic-use-of-a-simple-log-jump.html
关键字:
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 12/1
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
文章评论
    没有评论
给我留言

有人回复时邮件通知我
J2EE的相关文章
随机文章 本月热门 热评
1 The Main Function of Activity and its Basic Usage 2011/7/12
2 Java中使用Base64编码URL作为URL的参数 2011/9/12
3 中小应用关系型数据库设计基本思路 2014/8/31
4 C++语法笔记 – 泛型程序设计与C++标准库 2011/9/3
5 Struts2单选按钮标签s:radio的使用及其设置默认值 2011/9/10
6 Python语法笔记1 2014/3/9
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.