Parameter passing berarti mentransfer parameter ke latar belakang program. Latar belakang dapat melakukan beberapa pemrosesan, dan kemudian menyimpan konten ke dalam database.
Ada banyak metode untuk melewati parameter, seperti yang dijelaskan satu per satu.
1. Metode parameter langsung beraksi
Ada file index.jsp berikut
Salinan kode adalah sebagai berikut: <? Xml Version = "1.0" encoding = "GB18030"?>
<%@ halaman bahasa = "java" contentType = "text/html; charset = gb18030"
pageEncoding = "GB18030"%>
<%
String path = request.getContextPath ();
String basePath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/";
%>
<! Doctype html public "-// w3c // dtd xhtml 1.0 transisi // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv = "konten tipe" content = "text /html; charset = gb18030" />
<base href = "< %= Basepath %>"/>
<title> masukkan judul di sini </iteme>
</head>
<body>
Gunakan atribut Tindakan untuk menerima parameter <a href = "pengguna/pengguna! Tambahkan? Name = A & Age = 8"> Tambahkan pengguna </a>
</body>
</html>
Untuk <a> </a>, lewati dua parameter ke program, satu adalah nama dan yang lainnya adalah usia. Konfigurasi di struts.xml adalah sebagai berikut:
Salin kode kode sebagai berikut: <? 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>
<nama konstan = "struts.devmode" value = "true" />
<nama paket = "user" extends = "struts-default" namespace = "/user">
<action name = "user">
<rence> /User_add_success.jsp </hasilnya>
</ses Action>
</packer>
</struts>
Bagaimana kita harus menulis pengguna kami saat ini? Contohnya adalah sebagai berikut:
Salinan kode adalah sebagai berikut: paket com.bjsxt.struts2.user.action;
impor com.opensymphony.xwork2.actionsupport;
UserAction kelas publik memperluas ActionSupport {
nama string pribadi;
usia int pribadi;
public string add () {
System.out.println ("name =" + name);
System.out.println ("usia =" + usia);
Sukses kembali;
}
Public String getName () {
nama pengembalian;
}
public void setName (nama string) {
this.name = name;
}
publik int getage () {
usia kembali;
}
public void setage (int usia) {
this.age = usia;
}
}
Ini sangat sederhana, mendefinisikan dua properti. Catatan: Metode set dan get dari kedua properti ini harus ditulis, dan metode generasi gerhana yang cepat digunakan, yang sangat sederhana. Dengan cara ini, program di atas akan mencetak hasil yang diinginkan saat dijalankan
Nama = A dan usia = 8.
Penjelasannya adalah sebagai berikut: Pertama, Struts2 akan secara otomatis melewati parameter, dan kita tidak perlu berpartisipasi dalam proses ini; Kedua, struts pass parameter untuk mengatur dan mendapatkan metode, bukan atribut nama dan usia. Dengan kata lain, jika kita memodifikasi nama di dalamnya menjadi nama lain, seperti nama pengguna, tetapi metodenya masih setname dan getName, tidak ada perbedaan antara implementasi seluruh fungsi, itu hanya sedikit canggung; Ketiga, dan poin yang paling penting adalah bahwa jika ada banyak atribut, kita membutuhkan banyak metode set dan mendapatkan, yang sangat tidak nyaman, sehingga metode berikut diperluas.
2. Tindakan Tambahkan Metode Objek Kelas
Pada saat ini, properti dalam 1 kami semuanya diklasifikasikan ke dalam kelas, seperti pengguna
Salinan kode adalah sebagai berikut: paket com.bjsxt.struts2.user.model;
pengguna kelas publik {
nama string pribadi;
usia int pribadi;
Public String getName () {
nama pengembalian;
}
public void setName (nama string) {
this.name = name;
}
publik int getage () {
usia kembali;
}
public void setage (int usia) {
this.age = usia;
}
}
Ini membuat kelas menulis di aksi lebih mudah
Salinan kode adalah sebagai berikut: paket com.bjsxt.struts2.user.action;
impor com.bjsxt.struts2.user.model.user;
impor com.opensymphony.xwork2.actionsupport;
UserAction kelas publik memperluas ActionSupport {
Pengguna Pribadi;
public string add () {
System.out.println ("name =" + user.getName ());
System.out.println ("usia =" + user.getage ());
Sukses kembali;
}
pengguna publik getUser () {
Pengguna Kembali;
}
public void setuser (pengguna pengguna) {
this.user = pengguna;
}
}
Catatan: Saat ini, kita tidak perlu secara manual menghasilkan objek pengguna sendiri. Proses ini secara otomatis diselesaikan oleh Struts2.
Dan URL perlu dimodifikasi saat ini, yaitu, tag <a> </a> dalam indeks dimodifikasi:
Salinan kode adalah sebagai berikut: <? Xml Version = "1.0" encoding = "GB18030"?>
<%@ halaman bahasa = "java" contentType = "text/html; charset = gb18030"
pageEncoding = "GB18030"%>
<%
String path = request.getContextPath ();
String basePath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/";
%>
<! Doctype html public "-// w3c // dtd xhtml 1.0 transisi // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv = "konten tipe" content = "text /html; charset = gb18030" />
<base href = "< %= Basepath %>"/>
<title> masukkan judul di sini </iteme>
</head>
<body>
Gunakan model domain untuk menerima parameter <a href = "pengguna/pengguna! Tambahkan? User.name = a & user.age = 8"> Tambahkan pengguna </a>
</body>
</html>
Modifikasi ke bagian 18-baris di atas.
Di atas menjelaskan dua metode passing parameter struts2, metode kedua disebut: domainmodel, model domain. Artinya, buat kelas baru untuk menyimpan atribut.
Metode lain dijelaskan di bawah ini, yang disebut ModelDriven, didorong oleh model.
Ini sangat mirip dengan metode kedua, dan yang lainnya sama, kecuali bahwa ada perbedaan antara tindakan dan akses. Tindakannya adalah sebagai berikut:
Salinan kode adalah sebagai berikut: paket com.bjsxt.struts2.user.action;
impor com.bjsxt.struts2.user.model.user;
impor com.opensymphony.xwork2.actionsupport;
impor com.opensymphony.xwork2.modeldriven;
Public Class UserAction memperluas ActionSupport mengimplementasikan ModelDriven <User> {
Pengguna Pengguna Pribadi = Pengguna Baru ();
public string add () {
System.out.println ("name =" + user.getName ());
System.out.println ("usia =" + user.getage ());
Sukses kembali;
}
@Mengesampingkan
pengguna publik getModel () {
Pengguna Kembali;
}
}
Kita dapat melihat dari ini bahwa ini mengimplementasikan antarmuka ModelDriven dan mengadopsi teknologi generik. Dengan cara ini, Struts2 tidak akan secara otomatis instantiate suatu objek, sehingga kami hanya dapat menghasilkannya secara manual. Ini mengesampingkan metode getModel () dari antarmuka ModelDriven, dan fungsinya adalah mengembalikan objek kelas.
Aksesnya berbeda dari yang kedua (seperti pada metode pertama):
Salin kode kode sebagai berikut: Gunakan ModelDriven untuk menerima parameter <a href = "pengguna/pengguna! Tambahkan? Name = A & Age = 8"> Tambahkan pengguna </a>
Itu tidak menggunakan metode user.name, itulah sebabnya perlu untuk objek baru.
Proses ideologis dasar dari metode ini adalah: pertama, tindakan mem -parsing URL, memperoleh parameter, dan kemudian memasuki tindakan. Ditemukan bahwa tindakan ini mengimplementasikan antarmuka ModelDriven. Pada saat ini, metode getModel dari antarmuka ModelDriven dipanggil untuk mendapatkan objek kelas, dan kemudian metode set dan mendapatkan kelas ini dipanggil untuk meneruskan parameter.
Metode ini mencerminkan ide MVC dari struts2, m --- model, v --- view, c --- controller, tetapi metode ini jarang digunakan, dan metode kedua yang paling kami gunakan adalah yang paling di atas.
Di atas adalah seluruh konten metode pengiriman parameter di Struts2. Saya harap ini dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.