Kasım 10 2008

Struts 2 Login Form Örneği

Etiketler : , , ,

Struts 2 MVC yapısını daha iyi anlayabilmek için gerçek bir struts 2 web projesi yapmamız gerekmektedir. Bunun içinde Login Form örneğini yapmaya çalışalım. Daha önceki yazılarımda da belirttiğim üzere eclipse üzerinde geliştirme yapacağız ve eclipse de yeni bir web projesi yaratmak gerçekten çok kolay. İlk olarak eclipse imizi açıyoruz ve File->New->Project işlemlerini gerçekleştiriyoruz karşımıza aşağıdaki wizard seçme ekranı gelecektir. Burdan da Web->Dynamic Web Project seçeneğini seçiyor Next e basıyoruz.

Daha sonra karşımıza çıkacak olan “New Dynamic Web Project” ekranında proje adını yazıyoruz. Ben proje adını LoginForm yaptım siz istediğinizi yazabilirsiniz. Aşağıdaki ekran da da göreceğiniz üzere, bir alt seçenek olan Target Runtime filter ı var. Eğer daha önceden “Target Runtime” belirlenmiş ise, burası default olarak seçili gelir. Daha önceki yazımda da belirttiğim üzere bizim Target Runtime mımız Apache Tomcat 6.0. Evet devam edelim yani Next…

Daha sonra karşımıza Web Module ekranı çıkıyor burda da aşağıdaki ekran da gelen düzenlemeleri yaptıktan sonra projemizi sonlandırmak için Finish diyoruz.

Artık belli bir dizin yapısına sahip yeni bir web projesi oluşturmuş bulunmaktayız. Bir sonraki işimiz, struts 2 yi, oluşturduğumuz web projesine entegre etme işlemidir. Struts 2 İlk Uygulama başlıklı yazımda belirttiğim gibi, Apache Struts 2 sayfasından struts 2 kütüphanesini indiriyoruz.

İndirilen sıkıştırılmış dosyayı açıyoruz ve ilk işlem olarak indirdiğimiz kütüphanenin WEB-INF dizini altındaki lib dizinini kopyalıyoruz ve  kendi projemizde yer alan WebContent /WEB-INF dizini altındaki lib dizininin üzerine yapıştırıyoruz. Böylece struts 2 jar dosylarını almış olduk.

Şimdide yine WebContent/WEB-INF dizini altında yer alan web.xml dosyasını kullanarak projemize struts 2 kullanacağımızı söylememiz gerekiyor.

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" 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">

    <display-name>Struts Blank</display-name>

    <filter>
     <filter-name>struts2</filter-name>
     <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>

Evet artık elimizde struts 2 tanıtılmış bir web projesi bulunmaktadır.

Şimdi struts 2 ile Login Form yapımına başlayabiliriz. İlk olarak kullanıcıdan gelen istekler doğrultusunda trafik polisi görevi gören struts.xml dosyasını oluşturalım. struts.xml dosyamızı web projemizde src dizini altında oluşturmalıyız. İçeriğine gelince;

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <package name="LoginForm" namespace="/" extends="struts-default">

  <!--
   action tanımlamamızı yapıyoruz. "name" alanındaki Login_* demek, URL den
   http://localhost:8080/LoginForm/Login_showLogin.action olarak çağırabiliriz
   anlamına gelir. "class" alanına da bizim src dizini altında yer
   action class a ait yolu belirtir
  -->
      <action name="Login_*" method="{1}" class="net.gokhansabir.login.Login">
            
             <!-- URL den gelene git -->
            <result name="input">/jsp/login/Login.jsp</result>

            <!-- Eğer dönen değer SUCCESS se tekrar login sayfasını göster -->
            <result name="SUCCESS">/jsp/login/Login.jsp</result>   

            <!--Eğer dönen değer LOGGEDIN ise içeri gir -->
            <result name="LOGGEDIN">/jsp/success/Success.jsp</result>

            <!-- Eğer bilgileri yalnışsa Hata ver -->
            <result name="ERROR">/jsp/login/Login.jsp</result> 
        </action>

    </package>

</struts>

Yukarıdaki struts.xml dende anlaşılacağı üzere,  WebContent dizini altına jsp dizini açıyoruz ve onlarında altına, login ve success dizinleri açıyoruz. Bu dizinleri açmak zorunda değilsiniz,fakat projenizin düzenli olması açısından dizin yapınızı böyle yapmanız uygun olacaktır. login dizini altına Login.jsp yi oluşturuyoruz, içeriği aşağıdaki gibi olacak;

<%@ page contentType="text/html; charset=UTF-8" %>
<!--
 struts taglarını kullanmak istiyorsanız bunu yapmanız gerekmektedir.
 pfrefix alanına istediğiniz değeri verebilirsiniz.
 Fakat struts ın s si genel kullanım şeklidir.
-->
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>Struts 2 Login Form Example</title>
</head>

<body>
<!--
 form submit edildiğinde Login action ın showLogin methodu çalışacaktır.
-->
<s:form action="Login_showLogin" >
<!--
 Eğer kullanıcı adı veya şifre yalnış ise,
 Login classın da yer alan doLogin methodunda
 kullandığımız addActionError() fonksiyonu içerisindeki
 string ekrana yazılacaktır.
-->
<s:actionerror/>
	<table>
		<tr>
			<td><s:text name="Kullanıcı Adı" /> </td>
			<td><s:textfield name="username" /></td>
		</tr>
		<tr>
		<td><s:text name="Şifre" /></td>
			<td><s:password name="password"/></td>
		</tr>

		<tr>
	            <td colspan="2">
                      <s:submit key="Gönder"  action="Login_doLogin" />
                   </td>
		</tr>

	</table>

</s:form>
</body>
</html>

Evet Login.jsp mizde hazırladık. Birde eğer kullanıcı adı ve şifre doğru ise yönleneceği sayfa var onunda dosya ismi Success.jsp çünkü struts.xml de bu şekilde belirledik. Bunuda daha önceden açmış olduğumuz success dizini altına oluşturuyoruz. İçerisine sadece “Girişi Başarılı…” yazın. Success.jsp şimdilik bu kadar olsun.

Artık Login.java yı oluşturabiliriz. Login.java’ yıda, src dizini altında “net” isimli bir dizin açıyoruz bu dizinin de altına, “gokhansabir” diye bir dizin açıyoruz, bununda altına “login” diye bir dizin açıp, bunun içerisine Login.java dosyasını oluşturuyoruz.( src/net/gokhansabir/login/ şeklinde olacak. ) Dizin yapısını böyle yapmanız şart değil, fakat dizini değiştirdiğinizde, struts.xml ide derlemeniz gerekecektir. Çünkü ben struts.xml i bu dizin yapısına göre şekillendirdim.

package net.gokhansabir.login;

import com.opensymphony.xwork2.ActionSupport;

public class Login extends ActionSupport{

	public String showLogin() throws Exception {
		return net.gokhansabir.util.Constant.SUCCESS;
	}

	public String showErorr() throws Exception {
		return net.gokhansabir.util.Constant.ERROR;
	}

	public String showEnter() throws Exception {
		return net.gokhansabir.util.Constant.LOGGEDIN;
	}

	public String execute() throws Exception {
			return showLogin();
	}

	public String doLogin(){
	  if(getUsername().trim().equals("gokhan")
            && getPassword().equals("123456"))
		return net.gokhansabir.util.Constant.LOGGEDIN;
	  else{
		addActionError("Usename or password doesn't match!!!");
		return net.gokhansabir.util.Constant.ERROR;

		}

	}

	    private String username;

	    public String getUsername() {
	        return username;
	    }

	    public void setUsername(String username) {
	        this.username = username;
	    }

	    private String password;

	    public String getPassword() {
	        return password;
	    }

	    public void setPassword(String password) {
	        this.password = password;
	    }

}

Yukarıdaki kodda da gördüğünüz üzere belli başlı constant değerlerimiz var bunlarıda ayıralım ve gokhansabir dizini altına “util” isimli yeni bir dizin açalım. Burayada Constant.java sayfasını oluşturalım. İçeriğide;

package net.gokhansabir.util;

public class Constant {

	public final static String SUCCESS = "SUCCESS";
	public final static String ERROR = "ERROR";
	public final static String LOGGEDIN= "LOGGEDIN";

}

Yukarıdaki Constant class ında da canstant değerlerimizi tamamladık.  Şimdi son işlemimize gelebiliriz artık, index.html dosyasında, adres çubuğuna http://localhost:8080/LoginForm/ yazıldığı zaman otomatil Login_showLogin.action ın çalışması için, bazı düzenlemeler yapmamız gerekiyor. index.html in içeriği aşağıdaki gibi olmalıdır;

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
  <META HTTP-EQUIV="Refresh" CONTENT="0;URL=/LoginForm/Login_showLogin.action">
</head>

<body>
<p>Loading ...</p>
</body>
</html>

Artık LoginForm örneğimizi çalıştırabiliriz. Bildiğiniz üzere url den çağırmadan önce Eclips de Tomcat üzerinde start etmeliyiz. Bu işlem içinde, Struts 2 İlk Uygulama yazımı okuyabilirsiniz.

Yorumlar:

"Struts 2 Login Form Örneği" » (12) Yorum

Yorum Yazın

Clicky Web Analytics