1. Klien menginisialisasi permintaan ke wadah servlet (tomcat);
2. Permintaan ini melewati serangkaian filter, dan kemudian FilterDispatcher dipanggil;
3. FilterDispatcher meminta ActionMapper untuk memutuskan apakah permintaan perlu memanggil tindakan tertentu;
4. Jika ActionMapper memutuskan untuk memanggil suatu tindakan, FilterDispatcher memberikan pemrosesan permintaan ke ActionProxy. ActionPro meminta file konfigurasi kerangka kerja sesuai dengan ConfigurationManager dan menemukan kelas tindakan yang perlu dipanggil, umumnya membaca struts.xml;
5. ActionProxy menciptakan instance ActionInvocation. Contoh ActionInvocation disebut menggunakan pola bernama. Sebelum dan sesudah proses panggilan panggilan, panggilan pencegat yang relevan terlibat;
6. Setelah tindakan dieksekusi, ActionInvocation menemukan hasil pengembalian yang sesuai sesuai dengan konfigurasi di struts.xml.
Misalnya kode:
Setelah Struts2 memperoleh permintaan .action, ia akan memutuskan komponen logika bisnis mana yang akan dihubungi berdasarkan sebagian;
Semua tindakan dalam aplikasi Struts2 didefinisikan dalam struts.xml;
Contoh tindakan yang digunakan oleh Struts2 untuk menangani permintaan pengguna bukanlah pengontrol bisnis yang diimplementasikan pengguna, tetapi proxy tindakan, karena pengontrol layanan yang diimplementasikan oleh pengguna tidak digabungkan dengan servletapi, dan jelas tidak dapat menangani permintaan pengguna.
<html> <head> <title> sukses </title> </ head> <body> <form Action = "hello.action" method = "Post"> Nama pengguna: <input type = "text" name = "name"> </br> kata sandi: <input type = "kata sandi" name = "pass" </br> <input type = "kirim" value "value" value "name =" pass "</br> </br> <input type =" kirim "value" value "value" name = "pass"
Misalnya, hello.action dari formulir di atas, properti tindakan ini bukan servlet biasa atau halaman JSP dinamis. Ketika formulir dikirimkan ke Hello.action, filterDispatcher dari Struts2 akan bekerja dan meneruskan permintaan pengguna ke tindakan yang sesuai.
Perhatikan bahwa tindakan Struts2 mencegat semua permintaan dengan sufiks. Aksi secara default. Jika kita perlu mengirimkan formulir ke tindakan untuk diproses, atribut tindakan formulir harus diatur ke format .action.
Kelas pengontrol
kelas publik helloaction {private string name; private string pass; public void setName (name string) {this.name = name;} public void setPass (string pass) {this.pass = pass;} public string execute () {if ("Yang" .equals (name) & "1234" .Equals (pass) {if ("yang" .equals (name) & "1234" .equals (pass) {if ("yang" .equals (name) & "1234" .Equals (pass) {if ("yang" .equals (name) & "1234" .Equals (pass) {if ("yang" .equals (name) & "1234" .Equals (pass) {if ("yang" .Equals (name) & "1234Setelah eksekusi sebelumnya selesai, penerusan halaman hanya dilakukan, dan status pengguna tidak dilacak. Ketika pengguna masuk, kita perlu menambahkan nama pengguna pengguna sebagai informasi status httpsession.
Untuk mengakses instance httpsession, Struts2 menyediakan kelas ActionContext, yang menyediakan metode getsession (), tetapi nilai pengembalian metode ini bukan httpsession () tetapi peta (), tetapi pencegat Struts2 akan bertanggung jawab untuk beralih antara sesi () dan httpsesi ().
Untuk memeriksa apakah atribut sesi yang kami tetapkan berhasil, kami dapat mengatur antarmuka setelah sukses
<html> <head> <base href = "<%= Basepath%>" rel = "nofollow eksternal"> <itement> sukses </iteme> </head> <body> selamat datang, $ {sessionscope.user}, Anda sudah masuk. </body </html>Gunakan Sintaks Ekspresi JSP2.0 untuk mengeluarkan atribut pengguna di sesi HTTP.
Tindakan Tindakan Kelas Integrasi Dukungan
Kelas Actionsupport adalah kelas alat, dan telah menerapkan antarmuka tindakan. Selain itu, ini juga mengimplementasikan antarmuka yang divalidateableZ, menyediakan fungsi verifikasi data.
Untuk meningkatkan fungsi verifikasi data input, tambahkan metode validasi ulang dalam tindakan.
public void validate () {if (getName () == null || getName (). trim (). Equals ("")) {addFielderRor ("name", getText ("name.Required");} if (getPass () () == null || getPass (). trim (). " getText ("pass.Required"));}}Metode validasi yang ditulis ulang yang ditambahkan di atas akan dieksekusi sebelum metode Execute () sistem. Jika fielderror dari kelas tindakan sudah berisi kesalahan verifikasi data setelah menjalankan metode ini, permintaan akan diteruskan ke tampilan logis input, jadi Anda juga perlu menambahkan nama tampilan logis input di struts.xml untuk membiarkannya melompat ke halaman login.
Kerugian dari metode validasi ini adalah bahwa ia membutuhkan banyak penulisan ulang metode validasi, sehingga Anda dapat menggunakan kerangka kerja verifikasi Struts2.
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Validator Doctype Publik "-// OpenSymphony Group // XWork Validator 1.0.3 // en" "http://www.opensymphony.com/xwork/xwork-validator-.0.3.sdtd"> "- validator- validator-validator -.3.-2" <field-validator type = "wnteredString"> <pesan pesan = "name.required"/> </field-validator> </field> <!-Verifikasi formulir lulus-> <nama bidang = "pass"> <field-validator type = "wajib"> <pesan key = "pass.required"/</field-validator = <pes pesan = "pass.required"/</field-validator = <pes pesan = "pass.required"//</field-validator> <pes pesan = "pass.required"//</field-validator </field field = "pass.required"/</field-validator "> <pes pesan =" pass.Required "//</field-validator
Meringkaskan
Di atas adalah seluruh konten artikel ini tentang proses Struts2 dan serangkaian analisis kode pengetahuan terkait. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!