Struts 2 - Sonuçlar ve Sonuç Türleri
Daha önce bahsedildiği gibi, <results> etiket bir viewStruts2 MVC çerçevesinde. Eylem, iş mantığını yürütmekten sorumludur. İş mantığını çalıştırdıktan sonraki adım, görünümü,<results> etiket.
Genellikle sonuçlara eklenmiş bazı gezinme kuralları vardır. Örneğin, eylem yöntemi bir kullanıcının kimliğini doğrulamaksa, üç olası sonuç vardır.
- Başarılı Giriş
- Başarısız Giriş - Yanlış kullanıcı adı veya şifre
- Hesap Kilitlendi
Bu senaryoda, eylem yöntemi, sonucu oluşturmak için üç olası sonuç dizesi ve üç farklı görünümle yapılandırılacaktır. Bunu daha önceki örneklerde görmüştük.
Ancak, Struts2 sizi JSP'yi görüntüleme teknolojisi olarak kullanmaya bağlamaz. Sonuçta, MVC paradigmasının tüm amacı, katmanları ayrı ve yüksek oranda yapılandırılabilir tutmaktır. Örneğin, bir Web2.0 istemcisi için çıktı olarak XML veya JSON döndürmek isteyebilirsiniz. Bu durumda, XML veya JSON için yeni bir sonuç türü oluşturabilir ve bunu başarabilirsiniz.
Dikmeler bir dizi önceden tanımlanmış result types ve daha önce gördüğümüz her ne ise, bu varsayılan sonuç türü idi dispatcher, JSP sayfalarına göndermek için kullanılır. Struts, sonuçları sunmak için görünüm teknolojisinin diğer biçimlendirme dillerini kullanmanıza izin verir ve popüler seçenekler şunları içerir:Velocity, Freemaker, XSLT ve Tiles.
Dağıtıcı Sonuç Türü
dispatchersonuç türü varsayılan türdür ve başka bir sonuç türü belirtilmezse kullanılır. Sunucu üzerindeki bir sunucu uygulamasına, JSP'ye, HTML sayfasına vb. İletmek için kullanılır. RequestDispatcher.forward () yöntemini kullanır .
Sonuç etiketinin gövdesi olarak bir JSP yolu sağladığımız önceki örneklerimizde "steno" versiyonunu gördük.
<result name = "success">
/HelloWorld.jsp
</result>
JSP dosyasını, <result ...> öğesi içindeki bir <param name = "location"> etiketini kullanarak aşağıdaki gibi de belirtebiliriz -
<result name = "success" type = "dispatcher">
<param name = "location">
/HelloWorld.jsp
</param >
</result>
Ayrıca bir parseparametresi, varsayılan olarak doğrudur. Ayrıştırma parametresi, konum parametresinin OGNL ifadeleri için ayrıştırılıp ayrıştırılmayacağını belirler.
FreeMaker Sonuç Türü
Bu örnekte, nasıl kullanabileceğimizi göreceğiz. FreeMakergörüntüleme teknolojisi olarak. Freemaker, önceden tanımlanmış şablonları kullanarak çıktı oluşturmak için kullanılan popüler bir şablon oluşturma motorudur. Şimdi bir Freemaker şablon dosyası oluşturalım.hello.fm aşağıdaki içeriklerle -
Hello World ${name}
Yukarıdaki dosya bir şablondur. nametanımlanmış eylem kullanılarak dışarıdan iletilecek bir parametredir. Bu dosyayı CLASSPATH'inizde tutacaksınız.
Sonra, değiştirelim struts.xml sonucu aşağıdaki gibi belirtmek için -
<?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>
<constant name = "struts.devMode" value = "true" />
<package name = "helloworld" extends = "struts-default">
<action name = "hello"
class = "com.tutorialspoint.struts2.HelloWorldAction"
method = "execute">
<result name = "success" type = "freemarker">
<param name = "location">/hello.fm</param>
</result>
</action>
</package>
</struts>
HelloWorldAction.java, HelloWorldAction.jsp ve index.jsp dosyalarımızı örnekler bölümünde oluşturduğumuz gibi saklayalım.
Şimdi proje adına sağ tıklayın ve Export > WAR File Savaş dosyası oluşturmak için.
Sonra bu SAVAŞI Tomcat'in webapps dizininde konuşlandırın. Son olarak, Tomcat sunucusunu başlatın ve URL'ye erişmeyi deneyinhttp://localhost:8080/HelloWorldStruts2/index.jsp. Bu, aşağıdaki ekranı oluşturacaktır.
"Struts2" değerini girin ve sayfayı gönderin. Bir sonraki sayfayı görmelisiniz.
Gördüğünüz gibi, bu JSP görünümü ile tamamen aynıdır, ancak JSP'yi görüntüleme teknolojisi olarak kullanmaya bağlı değiliz. Bu örnekte Freemaker'ı kullandık.
Yönlendirme Sonucu Türü
redirectsonuç türü, standart response.sendRedirect () yöntemini çağırarak tarayıcının verilen konuma yeni bir istek oluşturmasına neden olur.
Konumu <result ...> öğesinin gövdesinde veya <param name = "location"> öğesi olarak sağlayabiliriz. Yönlendirme ayrıcaparseparametre. İşte XML kullanılarak yapılandırılmış bir örnek -
<action name = "hello"
class = "com.tutorialspoint.struts2.HelloWorldAction"
method = "execute">
<result name = "success" type = "redirect">
<param name = "location">
/NewWorld.jsp
</param >
</result>
</action>
Yani struts.xml dosyanızı, yukarıda belirtildiği gibi yeniden yönlendirme türünü tanımlamak için değiştirin ve merhaba eylemi başarılı olduğunda yeniden yönlendirileceğiniz NewWorld.jpg adlı yeni bir dosya oluşturun. Daha iyi anlamak için Struts 2 Redirect Action örneğini inceleyebilirsiniz.