Integrasi Struts 2 & Tiles

Dalam bab ini, mari kita ikuti langkah-langkah yang terlibat dalam mengintegrasikan kerangka kerja Tiles dengan Struts2. Apache Tiles adalah kerangka kerja template yang dibangun untuk menyederhanakan pengembangan antarmuka pengguna aplikasi web.

Pertama-tama kita perlu mengunduh file jar tiles dari situs web Apache Tiles . Anda perlu menambahkan file jar berikut ke jalur kelas proyek.

  • tiles-api-x.y.z.jar
  • tiles-compat-x.y.z.jar
  • tiles-core-x.y.z.jar
  • tiles-jsp-x.y.z.jar
  • tiles-servlet-x.y.z.jar

Selain di atas, kami harus menyalin file jar berikut dari unduhan struts2 di file WEB-INF/lib.

  • commons-beanutils-x.y.zjar
  • commons-digester-x.y.jar
  • struts2-tiles-plugin-x.y.z.jar

Sekarang mari kita atur web.xmluntuk integrasi Struts-Tiles seperti yang diberikan di bawah ini. Ada dua hal penting yang perlu diperhatikan di sini. Pertama, kita perlu memberi tahu tiles, di mana menemukan file konfigurasi tilestiles.xml. Dalam kasus kami, itu akan di bawah/WEB-INFmap. Selanjutnya kita perlu menginisialisasi pendengar Tiles yang disertakan dengan unduhan Struts2.

<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xmlns = "http://java.sun.com/xml/ns/javaee" 
   xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee 
   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   id = "WebApp_ID" version = "2.5">
   <display-name>Struts2Example15</display-name>
	
   <context-param>
      <param-name>
         org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
      </param-name>
      
      <param-value>
         /WEB-INF/tiles.xml
      </param-value>
   </context-param>

   <listener>
      <listener-class>
         org.apache.struts2.tiles.StrutsTilesListener
      </listener-class>
   </listener>

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

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

   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
</web-app>

Selanjutnya mari kita buat tiles.xml di bawah / folder WEB-INF dengan konten berikut -

<?xml version = "1.0" Encoding = "UTF-8" ?>

<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>

   <definition name = "baseLayout" template="/baseLayout.jsp">
      <put-attribute name = "title"  value = "Template"/>
      <put-attribute name = "banner" value = "/banner.jsp"/>
      <put-attribute name = "menu"   value = "/menu.jsp"/>
      <put-attribute name = "body"   value = "/body.jsp"/>
      <put-attribute name = "footer"   value = "/footer.jsp"/>
   </definition>

   <definition name = "tiger" extends = "baseLayout">
      <put-attribute name = "title"  value = "Tiger"/>
      <put-attribute name = "body"   value = "/tiger.jsp"/>      
   </definition>

   <definition name = "lion" extends = "baseLayout">
      <put-attribute name = "title"  value = "Lion"/>
      <put-attribute name = "body"   value = "/lion.jsp"/>      
   </definition>
  
</tiles-definitions>

Selanjutnya, kami mendefinisikan tata letak kerangka dasar di file baseLayout.jsp. Ini memiliki lima area yang dapat digunakan kembali / diganti. Yaitutitle, banner, menu, body dan footer. Kami memberikan nilai default untuk baseLayout dan kemudian kami membuat dua penyesuaian yang memperluas dari tata letak default. Tata letak macan mirip dengan tata letak dasar, kecuali menggunakantiger.jspsebagai badannya dan teks "Harimau" sebagai judulnya. Demikian pula, tata letak singa mirip dengan tata letak dasar, kecuali menggunakanlion.jsp sebagai badannya dan teks "Singa" sebagai judulnya.

Mari kita lihat file jsp individu. Berikut ini adalah konten daribaseLayout.jsp file -

<%@ taglib uri = "http://tiles.apache.org/tags-tiles" prefix = "tiles"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset = UTF-8">
      <title>
         <tiles:insertAttribute name = "title" ignore="true" />
      </title>
   </head>

   <body>
      <tiles:insertAttribute name = "banner" /><br/>
      <hr/>
      <tiles:insertAttribute name = "menu" /><br/>
      <hr/>
      <tiles:insertAttribute name = "body" /><br/>
      <hr/>
      <tiles:insertAttribute name = "footer" /><br/>
   </body>
</html>

Di sini, kami baru saja mengumpulkan halaman HTML dasar yang memiliki atribut ubin. Kami memasukkan atribut ubin di tempat-tempat di mana kami membutuhkannya. Selanjutnya, mari kita buat filebanner.jsp file dengan konten berikut -

<img src="http://www.tutorialspoint.com/images/tp-logo.gif"/>

Itu menu.jsp file akan memiliki baris berikut yang merupakan link - ke TigerMenu.action dan aksi struts LionMenu.action.

<%@taglib uri = "/struts-tags" prefix = "s"%>

<a href = "<s:url action = "tigerMenu"/>" Tiger</a><br>
<a href = "<s:url action = "lionMenu"/>" Lion</a><br>

Itu lion.jsp file akan memiliki konten berikut -

<img src="http://upload.wikimedia.org/wikipedia/commons/d/d2/Lion.jpg"/>
The lion

Itu tiger.jsp file akan memiliki konten berikut -

<img src="http://www.freewebs.com/tigerofdarts/tiger.jpg"/>
The tiger

Selanjutnya, mari kita buat file kelas tindakan MenuAction.java yang berisi berikut ini -

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class MenuAction extends ActionSupport {
   public String tiger() { return "tiger"; }
   public String lion() { return "lion"; }
}

Ini adalah kelas yang sangat mudah. Kami mendeklarasikan dua metode tiger () dan lion () yang mengembalikan harimau dan singa sebagai hasil masing-masing. Mari kita gabungkan semuanya distruts.xml file -

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
   <package name = "default" extends = "struts-default">
      <result-types>
         <result-type name = "tiles" 
         class="org.apache.struts2.views.tiles.TilesResult" />
      </result-types>

      <action name = "*Menu" method = "{1}" 
         class = "com.tutorialspoint.struts2.MenuAction">
         <result name = "tiger" type = "tiles">tiger</result>
         <result name = "lion" type = "tiles">lion</result>
      </action>

   </package>
</struts>

Mari kita periksa apa yang kita lakukan pada file di atas. Pertama-tama, kami mendeklarasikan jenis hasil baru yang disebut "ubin" karena sekarang kami menggunakan ubin alih-alih jsp biasa untuk teknologi tampilan. Struts2 memiliki dukungannya untuk jenis hasil Tampilan Ubin, jadi kita membuat jenis hasil "ubin" menjadi kelas "org.apache.struts2.view.tiles.TilesResult".

Selanjutnya, kami ingin mengatakan jika permintaan untuk /tigerMenu.action membawa pengguna ke halaman ubin harimau dan jika permintaan untuk /lionMenu.action membawa pengguna ke halaman ubin singa.

Kami mencapai ini dengan menggunakan sedikit ekspresi reguler. Dalam definisi tindakan kami, kami mengatakan apa pun yang cocok dengan pola "* Menu" akan ditangani oleh tindakan ini. Metode pencocokan akan dipanggil di kelas MenuAction. Artinya, tigerMenu.action akan memanggil tiger () dan lionMenu.action akan memanggil lion (). Kami kemudian perlu memetakan hasil dari hasil ke halaman ubin yang sesuai.

Sekarang klik kanan pada nama proyek dan klik Export > WAR Fileuntuk membuat file Perang. Kemudian terapkan WAR ini di direktori webapps Tomcat. Terakhir, jalankan server Tomcat dan coba akses URLhttp://localhost:8080/HelloWorldStruts2/tigerMenu.jsp. Ini akan menghasilkan layar berikut -

Demikian pula, jika Anda membuka halaman lionMenu.action, Anda akan melihat halaman singa yang menggunakan tata letak ubin yang sama.