jsf開發(fā)login實例

          Posted on 2005-11-06 11:01 oksonic 閱讀(5950) 評論(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 文件
          使用工具欄中的工具創(chuàng)建三個頁面login.jsp、ok.jsp、error.jsp
          使用工具欄中的工具navigation創(chuàng)建頁面的關系
           
          以下是配置以后生成的配置文件內(nèi)容:
          <?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>
           
          創(chuàng)建兩個Bean,一個用來處理用戶信息的驗證,一個是和頁面中的數(shù)據(jù)進行綁定
           
          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);
           }
          }

          現(xiàn)在按下Ctrl + N 鍵,使用jsp的向?qū)砼渲眠@兩個Bean
          選擇MyEclipse/WEB-JSF/Managed Bean
          Project: login
          選中:Open Config File in Editor
          Name: UserValidator 就是Bean中的一個,這里的name可以自己起一個,如將第一個字母改為小寫userValidator
          Class: com.UserValidator
          Scope: request
           
          點擊完成生成配置內(nèi)容如下:
          <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 這里的內(nèi)容為LoginBean中的uv屬性,這個可是不能亂填的
          Class: 這個不填
          點下一步
          Property Value: #{userValidator} 這里花括號中的內(nèi)容為剛才配置的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的實例。
           
          現(xiàn)在編寫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開發(fā)login實例  回復  更多評論   

          2005-11-10 11:19 by oksonic
          此部份修改過,原來看過的用戶請注意改正。

          loginBean
          com.LoginBean
          request

          uv
          #{userValidator}



          原來是 um 現(xiàn)改為 uv 和LoginBean中的屬性對應。

          # re: jsf開發(fā)login實例  回復  更多評論   

          2005-11-24 17:10 by 燈雪

          釗釗,,
          能不能這個也做個動畫呀?

          # re: jsf開發(fā)login實例  回復  更多評論   

          2005-11-24 17:11 by 燈雪
          我還沒有入門呢

          # re: jsf開發(fā)login實例  回復  更多評論   

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

          # re: jsf開發(fā)login實例  回復  更多評論   

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

          # re: jsf開發(fā)login實例  回復  更多評論   

          2006-07-19 09:45 by lin5061
          TO: joybike
          -------
          javax.servlet.ServletException: Cannot find FacesContext
          -------
          這是因為你的后輟名沒有和web.xml里面的相對應,你應該是用.jsp進行訪問的,是吧。換成和web.xml里面的相同就行了

          # re: jsf開發(fā)login實例  回復  更多評論   

          2006-11-26 20:06 by 子彈
          感激感激不錯不錯交個朋友吧
          QQ78707038

          # re: jsf開發(fā)login實例  回復  更多評論   

          2006-12-05 13:31 by wdiy
          "使用工具欄中的工具navigation創(chuàng)建頁面的關系"
          這里寫的很含糊,如何創(chuàng)建,怎么創(chuàng)建?

          # re: jsf開發(fā)login實例  回復  更多評論   

          2007-03-27 20:34 by 伊達衛(wèi)浴潔具廠

          伊達衛(wèi)浴潔具廠

          伊達衛(wèi)浴潔具廠是一間專業(yè)從事開發(fā)、設計、生產(chǎn)衛(wèi)浴和潔具配套產(chǎn)品的專業(yè)化企業(yè).
             本廠專業(yè)生產(chǎn)鴻大系列,伊達系列兩大品牌,現(xiàn)有100多款中高檔水龍頭、衛(wèi)浴潔具及配套產(chǎn)品,并且承接客戶各類OEM商品委托制造,產(chǎn)品出口法國、德國、大洋洲及東南亞等20多個國家和地區(qū)。

          公司主要生產(chǎn)衛(wèi)浴潔具一系列,憑著先進的生產(chǎn)工藝,優(yōu)秀的產(chǎn)品質(zhì)量和良好的售后服務,被評為中國著名品牌,工程建筑推薦產(chǎn)品,質(zhì)量信得過產(chǎn)品,行業(yè)優(yōu)秀企業(yè)家,先進私營企業(yè)等稱號。

            “五年品保,終身維護”是我們的品質(zhì)保證和服務承諾。我們力求“以最優(yōu)質(zhì)的產(chǎn)品,最周到的服務”來答謝客戶的支持和厚愛。

            我公司本著“質(zhì)量為生產(chǎn),信譽為根本,互利為原則”的宗旨,熱忱地歡迎國內(nèi)外客商前來指導和洽談,伊達衛(wèi)浴潔具廠愿與您攜手共創(chuàng)輝煌、燦爛的明天!
          聯(lián)系地址: 開平水口鎮(zhèn)后溪開發(fā)區(qū)牛路2號
          聯(lián)系電話: 86 0750-2732812
          傳 真: 86 0750-2732813
          移動電話: 13702222529
          電子郵箱: kp@yidafaucet.com
          網(wǎng) 址: www.yidafaucet.com

          # re: jsf開發(fā)login實例  回復  更多評論   

          2007-12-11 09:31 by JSF學習者
          這個例子存在一個問題:雖然在jsp頁面中嵌入了<h:message for="password" />但源碼中卻沒有生成FacesMessage,望作者盡快更正!!!!

          # re: jsf開發(fā)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開發(fā)login實例  回復  更多評論   

          2008-08-08 01:29 by tim_chao
          "使用工具欄中的工具navigation創(chuàng)建頁面的關系"
          這里寫的很含糊,如何創(chuàng)建,怎么創(chuàng)建?

          能否幫忙解釋清楚點,弄了很久也沒有成功.

          # re: jsf開發(fā)login實例  回復  更多評論   

          2008-08-20 21:22 by yee
          急~~~~~ 請問<value>#{userValidator}</value>這個值有什么作用??????

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

          Copyright © oksonic

          主站蜘蛛池模板: 宝应县| 西林县| 成安县| 隆安县| 桐城市| 阳江市| 永济市| 平湖市| 平舆县| 越西县| 伊吾县| 石林| 临夏市| 务川| 长宁区| 安远县| 德清县| 房山区| 碌曲县| 永福县| 寻乌县| 静海县| 塔城市| 确山县| 扶余县| 青河县| 南乐县| 察哈| 上高县| 太白县| 安图县| 马尔康县| 绥棱县| 临潭县| 佛教| 洮南市| 常州市| 黄山市| 招远市| 汉寿县| 南澳县|