TurkProgrammers.NeT
Ana sayfa Ana Sayfa | Ana sayfanız yapın | Sık kullanılanlara ekle | Rss/Rdf Besleme| JavaScript
Bölümler
Arşiv
paz sa ça cu cum pa
12345
6789101112
13141516171819
20212223242526
272829

Mailinizi ekleyin
Haberlere abone olun:

anket: Sayfamızda En çok hangi bölüm ilginizi çekmekte
Sayfamızda En çok hangi bölüm yani programlama dili ve makaleleri ilginizi çekmekte?
PHP
C / C++ / C#
Asp ve .NET
JS / Ajax / DHTML /HTML
SQL
Visual Basic
Güvenlik
Action Script
Diğer
Anket sonuçları | Eski Anketler


email Arkadaşınızın maili | print Yazıcı versionu | comment Yanıtlar (0 Gönder)

Struts'a Giriş III

by my efsane on Temmuz 26,2007

image
Struts'a Giriş III




 Struts İle Form Bilgilerinin Validasyonunu sağlamak


Şimdiki dersimizde bir login formundan gelen bilgilerin validasyonu yapılacaktır.Basit bir şekilde form alanlarındaki  bölgelerin boş olmamasını kontrol eden bir uygulama yapacağız.


ActionForm Class’ı
Bu classlar Struts paketindeki org.apache.struts.action.ActionForm classını extend eden java-bean classlarıdır.


Bu classta formdan gönderilen her property yani değer, aynı String değişkeni ile classta tutulur ve işlenir.Örneğin olan bir form elemanının adı ve gönderilen değeri aynı String değişkeni ile ActionForm classımızda temsil edilir.


ActionForm classı daha çok View componentine yakınlık gösterir.Aslında yapılan bir requesti Action’a gitmeden önce ele alan bir firewall gibi düşünülebilir.


Örneğimize geçelim;

Söylendiği gibi ActionForm’da sadece alanların boş olmaması gereken durumda geri yönlendirme yapacak bir uygulama yapacağız.İşte ActionFrom örneğimiz;


import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.*;


public class LoginForm extends ActionForm

{

  private String username=null;

  private String password=null;


  public void setUsername(String username){

            this.username=username;

  }


  public String getUsername(){

            return this.username;

  }


  public void setPassword(String password){

            this.password=password;

  }


  public String getPassword(){

            return this.password;

  }

  public void reset(ActionMapping mapping, HttpServletRequest request) {

            this.username=null;

            this.password=null;

  }


  public ActionErrors validate(

            ActionMapping mapping, HttpServletRequest request ) {

      ActionErrors errors = new ActionErrors();

     

      if( getUsername() == null || getUsername().length() < 1 ) {

        errors.add("username",new ActionError("error.username.required"));

      }

      if( getPassword() == null || getPassword().length() < 1 ) {

        errors.add("password",new ActionError("error.password.required"));

      }

      return errors;

  }


}


Classın validate() metodu sayesinde gelen requesti işliyoruz. de Action’a gitmeden önce gelen request’ten username ve password değerleri alınır ve classtaki değişkenlerine atanır.validate() metoduyla birlikte üretilen hatalar varsa geri döndürülür.Hataları bir Hashmap’te tutan class ActionErrors classıdır.

Classa bir error eklemek için add() metodu kullanılır.Daha sonra da bir ActionError classı örneği yaratılır ve konur.ActionError classı kurucuda bir String alır bu String oluşan hatanın ApplicationResources dosyasında hangi key ile tutulduğunu belirten bir String’dir.Örnekte “error.username.required” ve “error.password.required” adlı iki key ile tanımlanacak değerde tutulacaktır hatalar.


Şimdi sıra ApplicationResources dosyasında ve bu keyler ile alınacak olan değerleri yaratmada.

ApplicationResources dosyasını açın ve şu satırları ekleyin, kaydedin, çıkın;


errors.header=

Validasyon Hataları

Önce,aşağıdaki hataları doğrulayınız...

    errors.footer=



error.username.required=
  • Kullanıcı adı girilmemiş...

  • error.password.required=
  • Şifre girilmemiş...


  • Burada ilk iki key “errors.header” ve “errors.footer” görülmektedir. Bunlar Hata başlığı ve hata sonu keyleridir.

    Sonraki iki satırda ise bunlar bizim boş gönderilen durumda oluşturulacak hata mesajlarımız.Bu iki key aynı zamanda ActionError clasının kullandığı key ve değerlerdir.

    Sırada Login.jsp’nin hazırlanmasında işte Login.jsp;

    <pre>

    <%@ taglib uri="/tags/struts-bean.tld" prefix="bean" %>
       <%@ taglib uri="/tags/struts-html.tld" prefix="html" %>
     
       <html:html locale="true">


       <head>


       <title><bean:message key="login.title"/></title>


       <html:base/>


       </head>


       <body bgcolor="white">


       <html:form action="/Login">


       <html:errors/>


       <table>


            <tr>


              <td align="center" colspan="2">
                <font size="4">Kullanıcı Girişi</font>
          </tr>
          <tr>
              <td align="right">
                Kullanıcı Adı
              </td>
              <td align="left">
                <html:text property="username" size="30" maxlength="30"/>
              </td>
            </tr>
            <tr>
              <td align="right">
                Şifre
              </td>
              <td align="left">
                <html:text property="password" size="30" maxlength="30"/>
              </td>
            </tr>
          <tr>
              <td align="right">
                <html:submit>Login</html:submit>
              </td>
              <td>
            <html:reset>Temizle</html:reset>
              </td>
            </tr>
      </table>
       </html:form>
       </body>
       </html:html>
     

    </pre>


    Login.jsp’miz hazır.from elementinde gördüğünüz üzere Login diye bir action’a gidecek bu form.

    Şimdide LoginAction classımızı yaratalım.

    Bu class yine basit olarak hiç bişey yapmadan sadece success.jsp’ye yönlendiriyor.request bu class tarafından işlenmeden ActionForm’ca işlendiğini unutmayın.

    İşte classımız;


    import javax.servlet.http.*;
    import org.apache.struts.action.*;
    import java.io.IOException;
    import java.servlet.ServletException;

    public class LoginAction extends Action
    {
      public ActionForward perform(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response)
    throws IOException, ServletException{
          return mapping.findForward("success");
      }
    }

    Class görüldüğü üzere success.jsp’ye forward ediyor.Bunun için success.jsp’miz ;

    <pre>

    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
     
       <html:html locale="true">


       <head>


       <title>Giriş başarılı<title>


       <html:base/>


       </head>


       <body bgcolor="white">


       <font color=”red”>Girdiniz!!!</font>
       </body>
       </html:html>
    </pre>
    şeklindedir.
    En sonunda sıra struts-config dosyamızı düzenlemeye geldi.Dosyayı açın.
    <action- mappings>’e bir action haritalaması yapmamız lazım.

    Elementin içine şöyle yazın;

    <pre>
    <action
         path="/Login"
         type="LoginAction"
         name="LoginForm"
         scope="request"
         validate="true"
         input="/Login.jsp">
        <forward name="success" path="/success.jsp"/>
    </action>

    </pre>


    yaratılan actionu haritaladık.Birde bir form-bean kullanılıyorsa onu da eklemeliyiz.Bizim applikasyonda kullanılan bir de LoginForm bean’imiz vardı.Bunun için yine struts-config.xml’de   <form-beans> elementine ekleme yapacağız. Elementi bulup içine;

    <pre>
    <form-bean name="LoginForm" type="LoginForm"/>
    </pre>


    Şeklinde ekleme yapın ve kaydedip çıkın.Ufak bir detay daha kaldı;Login.jsp’de <title> elementi içinde kullanılan <bean:message> elementi ‘login.title’ key’i ile ApplicationResources dosyasından bir değer kullanmaktadır.Bu değeri de dosyaya ekleyin mesela;

    login.title=Kullanıcı adı ve şifre giriniz.

    gibi… sonra kaydedin ve çıkın.
    Sonra Login.jsp’yi index.jsp’de vereceğiniz bir linkle çağırın yada browserden kendiniz girerek çağırın.

    Bir alanın boş bırakılması durumunda aşağıdaki gibi bir sonuç elde edeceksiniz  

    Tüm alanlar doldurulduğunda yönlendirilmiş (girmiş) olacaksınız.

    679 Kere okundu

    Bu makaleyi beyendinizmi ?

    1 2 3 4 5 Rating: 5.00Rating: 5.00Rating: 5.00Rating: 5.00Rating: 5.00 (Toplam 39 Oylar)
    comment Yanıtlar (0 Gönder)
    Çok okunanlar
    En Çok Yorumlananlar
    Yazarlar