blogjava's web log

blogjava's web log
...

jsf学习三(简单登陆)


学习掌握:

jsf 验证
jsf 国际化
jsf 导航

login_zh_CN.properties

title=第一个jsf程序
username=用户名
password=密码
submit=登陆
usererror=用户名必须添
passerror=密码错误


这个文件放在 新建的  firstjsf包下
编译

native2ascii –encoding gb2312 login_src.properties  login_zh_CN.properties



新建文件
Login.java

放在
login.firstjsf包下.

src

package login.firstjsf;

import javax.faces.context.FacesContext;
import javax.faces.component.UIComponent;
import javax.faces.application.FacesMessage;
import javax.faces.validator.ValidatorException;
import java.util.ResourceBundle;
import java.util.Map;
import domain.SecurityManager;
import java.io.Serializable;

public class Login extends Object implements Serializable{

  
private String username;
  
private String password;
  
private ResourceBundle bundle;
  
private FacesMessage loginErrorMessage;
  
private FacesMessage usernameRequiredMessage;
  
private FacesMessage passwordRequiredMessage;

  
public LogonForm() {
    
// 初始化资源文件
     bundle = ResourceBundle.getBundle("login.logon");//得到国际化资源文件
     usernameRequiredMessage = new FacesMessage(FacesMessage.SEVERITY_INFO, message, null);
     string  message 
= bundle.getString("usererror");
     passwordRequiredMessage 
= new FacesMessage(FacesMessage.SEVERITY_INFO, message, null);
     message 
= bundle.getString("passworderror");
  }



  
public String logining() {
 
    
if (getUsername()=="okok") {
         
return "success";
          
//success在 faces-config.xml配置,这就是动态导航
    else
    
return "failure";
  }

  
public String getPassword() {
    
return password;
  }
  
public void setPassword(String string) {
    password 
= string;
  }
  
public String getUsername() {
    
return username;
  }

  
public void setUsername(String string) {
    username 
= string;
  }
//前台验证 没有填提示错误信息 用户必须填写
  public void validateName(FacesContext context, UIComponent toValidate,

                               Object value) 
throws ValidatorException {
 
    
if(name.length()< 1|| length > 16) {
     
throw new ValidatorException(usernameErrorMessage);
    }
    
return;
  }
//验证密码必填
  public void validatePassword(FacesContext context, UIComponent toValidate,

                               Object value) 
throws ValidatorException {


    
if(name.length()< 1|| length > 16) {
     
throw new ValidatorException(passwordErrorMessage);
    }
    
return;
  }
}




前台

<!--导入jsf标签-->
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<!--国际化 文件-->
<f:loadBundle basename="firstjsf.login" var="first"/>
<f:view>
<head>
<title>
<!--输出标题-->
  
<h:outputText value="#{first.title}"/>
</title>
</head>
<body>
<h:form>
<!--输出用户名-->
<h:outputText value="#{first.username}"/>
<!--文本框 用户名 “login" 在配置文件 实际是login.firstjsf.Login类 validator 验证-->
<h:inputText id="username" value="#{login.username}" maxlength="20"validator="#{login.validateName}"/>
<!--输出密码-->
 
<h:outputText value="#{first.Password}"/>
<!--文本框--〉
   <h:inputText id="username" value="#{login.password}"  maxlength="16" validator="#{login.validatePassword}"/>
<!--btton 按钮
-->
  
<h:commandButton value="#{login.submit}" action="#{login.logining}"/>

<!--消息提示-->
 
<h:messages showSummary="true" showDetail="false" layout="table"/>
</f:view>
</body>


web.xml 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
  
<display-name>JSFWebModular</display-name>
  
<servlet>
    
<servlet-name>Faces Servlet</servlet-name>
    
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    
<load-on-startup>1</load-on-startup>
  
</servlet>
  
<servlet-mapping>
    
<servlet-name>Faces Servlet</servlet-name>
    
<url-pattern>*.jsf</url-pattern>
  
</servlet-mapping>
</web-app>



jsf faces-config.xml 文件

配置受管理的Bean
  
<managed-bean>
    
<description>first jsf</description>
    
<managed-bean-name>login</managed-bean-name>
    
<managed-bean-class>login.firstjsf.Login</managed-bean-class>
    
<managed-bean-scope>request</managed-bean-scope>
  
</managed-bean>

导航配置

<navigation-rule>
    
<!--from-view-id 标识初始页-->
    
<from-view-id>/Logon.jsp</from-view-id>
     
<!--navigation-case 标识一个导航块--> 
     
<navigation-case>
      
<from-outcome>success</from-outcome>
<!--to-view-id元素为这个导航块指定目标页-->
      
<to-view-id>/ok.jsp</to-view-id>
    
</navigation-case>
    
<navigation-case>
<!--from-outcome元素是navigation-rule中from-view-id子元素处理的结果-->

      
<from-outcome>failure</from-outcome>
      
<to-view-id>/error.jsp</to-view-id>
    
</navigation-case>



注:
要实现动态导航,按钮或链接必须有一个方法引用,以用于调用相应的方法,导航处理器根据方法返回的字符串来匹配导航规则

posted on 2006-08-22 22:27 record java and net 阅读(2525) 评论(2)  编辑  收藏 所属分类: jsf学习

评论

# re: jsf学习三(简单登陆) 2008-05-27 14:10 wdiy

import domain.SecurityManager;
这个导入的包是什么啊。我怎么没有啊。你用的是什么框架。  回复  更多评论   

# re: jsf学习三(简单登陆) 2008-07-03 14:44 海中沙

没必要在托管BEAN里验证数据吧?直接在前端设置<f:validator/>进行输入验证会更好。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

常用链接

留言簿(44)

新闻档案

2.动态语言

3.工具箱

9.文档教程

友情链接

搜索

最新评论