jsf开发login实例

Posted on 2005-11-06 11:01 oksonic 阅读(5943) 评论(13)  编辑  收藏 所属分类: java
Eclipse3.1、MyEclipse4.0.3、Tomcat
 
打开Eclipse
新建 web 工程,名称为login,j2ee版本为2.4当然2.3也是可以的
 
添加jsf框架,使用1.1.01版本 、URL pattern: *.faces其它设置使用默认值
 
打开WEB-INF目录下的 faces-config.xml 文件
使用工具栏中的工具创建三个页面login.jsp、ok.jsp、error.jsp
使用工具栏中的工具navigation创建页面的关系
 
以下是配置以后生成的配置文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "
http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
 
<faces-config >
 <navigation-rule>
  <from-view-id>/login.jsp</from-view-id>
  <navigation-case>
   <from-outcome>success</from-outcome>
   <to-view-id>/ok.jsp</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>failure</from-outcome>
   <to-view-id>/error.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>
 <navigation-rule>
  <from-view-id>/ok.jsp</from-view-id>
 </navigation-rule>
 <navigation-rule>
  <from-view-id>/error.jsp</from-view-id>
 </navigation-rule>
</faces-config>
 
创建两个Bean,一个用来处理用户信息的验证,一个是和页面中的数据进行绑定
 
UserValidator.java
package com;
 
public class UserValidator {
 //这是验证用户名和密码的过程
 public String validator(String username,String password){
  if((username==null)||(username.length()<1))
   return "failure";
  if((password==null)||(password.length()<1))
   return "failure";
  if((username.equals("test"))&&(password.equals("test")))
   return "success";
  else
   return "failure";
 }
}
 
LoginBean.java
package com;
 
public class LoginBean {
 
 private String username;
 private String password;
 private UserValidator uv;
 
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public String getUsername() {
  return username;
 }
 public void setUsername(String username) {
  this.username = username;
 }
 public UserValidator getUv() {
  return uv;
 }
 public void setUv(UserValidator uv) {
  this.uv = uv;
 }
 //用户登录过程
 public String login(){
  return uv.validator(username,password);
 }
}

现在按下Ctrl + N 键,使用jsp的向导来配置这两个Bean
选择MyEclipse/WEB-JSF/Managed Bean
Project: login
选中:Open Config File in Editor
Name: UserValidator 就是Bean中的一个,这里的name可以自己起一个,如将第一个字母改为小写userValidator
Class: com.UserValidator
Scope: request
 
点击完成生成配置内容如下:
<managed-bean>
  <managed-bean-name>userValidator</managed-bean-name>
  <managed-bean-class>com.UserValidator</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 
再次配置另一个Bean,不过这一回增加了一个属性
按下Ctrl + N 键,选择MyEclipse/WEB-JSF/Managed Bean
Project: login
选中:Open Config File in Editor
Name: loginBean
Class: com.LoginBean
Scope: request
点击add按钮
Name: uv 这里的内容为LoginBean中的uv属性,这个可是不能乱填的
Class: 这个不填
点下一步
Property Value: #{userValidator} 这里花括号中的内容为刚才配置的UserValidator的name属性,name属性的第一个字母使用的是小写
 
好,确定,完成
配置文件中新增了如下代码:
<managed-bean>
  <managed-bean-name>loginBean</managed-bean-name>
  <managed-bean-class>com.LoginBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
   <property-name>uv</property-name>
   <value>#{userValidator}</value>
  </managed-property>
 </managed-bean>
 
在这一个bean中,它的uv属性被指定要在运行时注入一个com.UserValidator的实例。
 
现在编写login.jsp中的代码如下:
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="
http://java.sun.com/jsf/core" prefix="f" %>
<%@ page language="java" pageEncoding="UTF-8"%>
<html>
  <head>
    <title>Login</title>
  </head>
 
  <body>
    <f:view>
     <h:form>
      <h:panelGrid columns="3">
       <h:outputLabel for="username" value="User Name:" />
       <h:inputText id="username" value="#{loginBean.username}" required="true" />
       <h:message for="username" />
       <h:outputLabel for="password" value="Password:" />
       <h:inputSecret id="password" value="#{loginBean.password}" required="true" />
       <h:message for="password" /> 这里的password要和上一行的id="password"对应才可以返回错误消息
      </h:panelGrid>
      <h:panelGrid>
       <h:panelGroup>
        <h:commandButton value="Login" action="#{loginBean.login}" />
       </h:panelGroup>
      </h:panelGrid>
     </h:form>
    </f:view>
  </body>
</html>
 
修改 index.jsp,代码如下:
<html>
  <head>
    <title>Index</title>
  </head>
  <body>
    <a href="login.faces">Login</a>
  </body>
</html>
修改 ok.jsp,代码如下:
<html>
  <head>
    <title>Login OK!!!</title>
  </head>
  <body>
    Login Ok!!!<br>
  </body>
</html>
修改 error.jsp,代码如下:
<html>
  <head>
    <title>Error!!!</title>
  </head>
  <body>
    Error!!!<br>
  </body>
</html>
好了,代码完成可以进行测试了,输入正确的用户名和密码,提交后进入ok.jsp

Feedback

# re: jsf开发login实例  回复  更多评论   

2005-11-10 11:19 by oksonic
此部份修改过,原来看过的用户请注意改正。

loginBean
com.LoginBean
request

uv
#{userValidator}



原来是 um 现改为 uv 和LoginBean中的属性对应。

# re: jsf开发login实例  回复  更多评论   

2005-11-24 17:10 by 灯雪

钊钊,,
能不能这个也做个动画呀?

# re: jsf开发login实例  回复  更多评论   

2005-11-24 17:11 by 灯雪
我还没有入门呢

# re: jsf开发login实例  回复  更多评论   

2006-07-18 15:32 by joybike
javax.servlet.ServletException: Cannot find FacesContext
是什么问题?

# re: jsf开发login实例  回复  更多评论   

2006-07-18 15:51 by joybike
换了jboss后就
The requested resource (/Login/login.faces) is not available.了?明明在一个目录阿?

# re: jsf开发login实例  回复  更多评论   

2006-07-19 09:45 by lin5061
TO: joybike
-------
javax.servlet.ServletException: Cannot find FacesContext
-------
这是因为你的后辍名没有和web.xml里面的相对应,你应该是用.jsp进行访问的,是吧。换成和web.xml里面的相同就行了

# re: jsf开发login实例  回复  更多评论   

2006-11-26 20:06 by 子弹
感激感激不错不错交个朋友吧
QQ78707038

# re: jsf开发login实例  回复  更多评论   

2006-12-05 13:31 by wdiy
"使用工具栏中的工具navigation创建页面的关系"
这里写的很含糊,如何创建,怎么创建?

# re: jsf开发login实例  回复  更多评论   

2007-03-27 20:34 by 伊达卫浴洁具厂

伊达卫浴洁具厂

伊达卫浴洁具厂是一间专业从事开发、设计、生产卫浴和洁具配套产品的专业化企业.
   本厂专业生产鸿大系列,伊达系列两大品牌,现有100多款中高档水龙头、卫浴洁具及配套产品,并且承接客户各类OEM商品委托制造,产品出口法国、德国、大洋洲及东南亚等20多个国家和地区。

公司主要生产卫浴洁具一系列,凭着先进的生产工艺,优秀的产品质量和良好的售后服务,被评为中国著名品牌,工程建筑推荐产品,质量信得过产品,行业优秀企业家,先进私营企业等称号。

  “五年品保,终身维护”是我们的品质保证和服务承诺。我们力求“以最优质的产品,最周到的服务”来答谢客户的支持和厚爱。

  我公司本着“质量为生产,信誉为根本,互利为原则”的宗旨,热忱地欢迎国内外客商前来指导和洽谈,伊达卫浴洁具厂愿与您携手共创辉煌、灿烂的明天!
联系地址: 开平水口镇后溪开发区牛路2号
联系电话: 86 0750-2732812
传 真: 86 0750-2732813
移动电话: 13702222529
电子邮箱: kp@yidafaucet.com
网 址: www.yidafaucet.com

# re: jsf开发login实例  回复  更多评论   

2007-12-11 09:31 by JSF学习者
这个例子存在一个问题:虽然在jsp页面中嵌入了<h:message for="password" />但源码中却没有生成FacesMessage,望作者尽快更正!!!!

# re: jsf开发login实例  回复  更多评论   

2008-01-23 14:32 by jjjj
org.apache.jasper.JasperException: /login.jsp(30,43) #{..} is not allowed in template text
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:102)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:711)
org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:935)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2338)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2388)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2394)
org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2338)
org.apache.jasper.compiler.Validator.validate(Validator.java:1737)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:178)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:306)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:316)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

# re: jsf开发login实例  回复  更多评论   

2008-08-08 01:29 by tim_chao
"使用工具栏中的工具navigation创建页面的关系"
这里写的很含糊,如何创建,怎么创建?

能否帮忙解释清楚点,弄了很久也没有成功.

# re: jsf开发login实例  回复  更多评论   

2008-08-20 21:22 by yee
急~~~~~ 请问<value>#{userValidator}</value>这个值有什么作用??????

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


网站导航:
 

posts - 103, comments - 1104, trackbacks - 0, articles - 0

Copyright © oksonic