jsf開發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 文件
          使用工具欄中的工具創建三個頁面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

          主站蜘蛛池模板: 噶尔县| 扶沟县| 平昌县| 清流县| 天长市| 巴里| 固始县| 新昌县| 高雄市| 中方县| 崇州市| 察隅县| 遂宁市| 商洛市| 永宁县| 嘉黎县| 三台县| 新乡市| 桂东县| 荥阳市| 九江市| 长宁区| 古田县| 磴口县| 山阳县| 长岭县| 且末县| 娄底市| 库尔勒市| 邹平县| 新巴尔虎左旗| 澜沧| 筠连县| 积石山| 富裕县| 万年县| 怀集县| 九寨沟县| 门头沟区| 饶河县| 凌海市|