Struts1 memerlukan kelas Action untuk mewarisi kelas dasar abstrak. Masalah umum dengan Struts1 adalah pemrograman dengan kelas abstrak, bukan antarmuka.
• Kelas Struts 2 Action dapat mengimplementasikan antarmuka Action atau antarmuka lainnya, sehingga memungkinkan layanan opsional dan disesuaikan. Struts2 menyediakan kelas dasar ActionSupport untuk mengimplementasikan antarmuka yang umum digunakan. Antarmuka Aksi tidak diperlukan. Objek POJO apa pun dengan pengidentifikasi eksekusi dapat digunakan sebagai objek Aksi Struts2.
Modus benang:
• Struts1 Action adalah mode tunggal dan harus thread-safe, karena hanya satu instance Action yang menangani semua permintaan. Strategi tunggal membatasi apa yang dapat dilakukan Struts1 Action, dan perhatian khusus harus diberikan selama pengembangan. Sumber daya tindakan harus aman untuk thread atau disinkronkan.
• Objek Aksi Struts2 menghasilkan sebuah instance untuk setiap permintaan, sehingga tidak ada masalah keamanan thread. (Faktanya, wadah servlet menghasilkan banyak objek yang dapat dibuang per permintaan dan tidak menyebabkan masalah kinerja dan daur ulang LJ)
Ketergantungan servlet:
• Struts1 Action bergantung pada Servlet API karena HttpServletRequest dan HttpServletResponse diteruskan ke metode eksekusi ketika suatu Action dipanggil.
• Struts 2 Action tidak bergantung pada container, memungkinkan Action diuji secara independen dari container. Struts2 Action masih dapat mengakses permintaan dan respons asli jika diperlukan. Namun, elemen lain mengurangi atau menghilangkan kebutuhan untuk mengakses HttpServetRequest dan HttpServletResponse secara langsung.
Kemampuan untuk diuji:
• Masalah utama dalam pengujian Tindakan Struts 1 adalah bahwa metode eksekusi mengekspos API servlet (yang membuat pengujian bergantung pada wadah). Ekstensi pihak ketiga - Struts TestCase - menyediakan sekumpulan objek tiruan Struts1 (untuk pengujian).
Struts 2 Action dapat diuji dengan menginisialisasi, mengatur properti, dan memanggil metode. Dukungan "Injeksi Ketergantungan" juga membuat pengujian lebih mudah.
Tangkap masukan:
• Semua ActionForms harus mewarisi kelas dasar. Karena JavaBean lain tidak dapat digunakan sebagai ActionForms, pengembang sering kali membuat kelas redundan untuk menangkap masukan. Dynamic Beans (DynaBeans) dapat digunakan sebagai alternatif untuk membuat ActionForms tradisional. Namun, pengembang mungkin mendeskripsikan ulang (membuat) JavaBeans yang sudah ada (masih menghasilkan javabean yang berlebihan).
• Struts 2 menggunakan properti Action secara langsung sebagai properti input, menghilangkan kebutuhan akan objek input kedua. Properti masukan mungkin berupa tipe objek kaya dengan (sub) propertinya sendiri. Properti tindakan dapat diakses melalui taglib di halaman web. Struts2 juga mendukung mode ActionForm. Tipe objek kaya, termasuk objek bisnis, dapat digunakan sebagai objek input/output. Fitur ModelDriven ini menyederhanakan referensi taglib ke objek input POJO.
Bahasa ekspresi:
• Struts1 mengintegrasikan JSTL dan karenanya menggunakan JSTL EL. EL ini memiliki traversal grafik objek dasar, namun dukungan untuk koleksi dan properti yang diindeks lemah.
• Struts2 dapat menggunakan JSTL, tetapi juga mendukung bahasa ekspresi yang lebih kuat dan fleksibel - "Object Graph Notation Language" (OGNL).
Ikat nilai ke halaman (tampilan):
• Struts 1 menggunakan mekanisme JSP standar untuk mengikat objek ke halaman untuk diakses.
Struts 2 menggunakan teknologi "ValueStack" untuk mengaktifkan taglib mengakses nilai tanpa mengikat halaman (tampilan) Anda ke objek. Strategi ValueStack memungkinkan penggunaan kembali halaman (tampilan) melalui serangkaian properti dengan nama yang sama tetapi tipenya berbeda.
Ketik konversi:
'Struts 1 Properti ActionForm biasanya bertipe String. Struts1 menggunakan Commons-Beanutils untuk konversi tipe. Satu konverter per kelas, tidak dapat dikonfigurasi per instans.
• Struts2 menggunakan OGNL untuk konversi tipe. Menyediakan konverter untuk objek dasar dan umum digunakan.
memeriksa:
• Struts 1 mendukung verifikasi manual dalam metode validasi ActionForm, atau verifikasi melalui ekstensi Commons Validator. Kelas yang sama dapat memiliki konten verifikasi yang berbeda, tetapi subobjek tidak dapat diverifikasi.
• Struts2 mendukung verifikasi melalui metode validasi dan kerangka verifikasi XWork. Kerangka validasi XWork menggunakan validasi dan validasi konten yang ditentukan untuk tipe kelas atribut untuk mendukung sub-properti validasi rantai.
Kontrol eksekusi tindakan:
•
• Tumpukan dapat digunakan dengan Tindakan berbeda sesuai kebutuhan
Artikel ini berasal dari blog CSDN. Harap sebutkan sumbernya saat mencetak ulang: http://blog.csdn.net/Ryan_lz/archive/2009/12/29/5101758.aspx