Kata pengantar
Saya telah memperkenalkan Anda pada tutorial pengantar tentang Struts2. Saya akan terus membagikan pengetahuan yang telah saya pelajari, masalah yang saya temui selama proses pembelajaran dan solusi. Tentu saja, jika pembaca menemukan masalah, mereka dapat memberi tahu saya di komentar di bawah. Terima kasih sebelumnya
Mengakses Sumber Daya Web Beraksi
Sumber Daya Web
Sumber daya web yang disebut mengacu pada API asli seperti HttpservletRequest, HttpservletResponse, dan ServletContext. Sebagai pengontrol pengembangan aplikasi B/S, ia harus dapat mengakses sumber daya web, seperti membaca dan menulis properti ke objek domain.
Cara mengakses sumber daya web
Metode decoupling dari servletapi: Untuk menghindari penggabungan dengan servletapi dan memfasilitasi pengujian unit dalam aksi, struts2 merangkum httpservletrequest, httpsession dan servletcontext, membangun 3 objek peta untuk menggantikan 3 objek ini. Dalam tindakan, Anda dapat menggunakan objek peta yang sesuai dari httpservletRequest, httpservletsession, dan httpservletContext untuk menyimpan dan membaca data.
public Object get(Object key) untuk lulus parameter permintaan untuk mencapai implementasi.setRequest() , sehingga permintaan dapat dipanggil dalam semua metode tindakan. Gunakan ActionContext untuk mendapatkan demonstrasi kode dari objek domain
Kirim permintaan dari halaman index.jsp ke showpage.jsp dan menyerahkan permintaan ke class class objectAction.java untuk menangani permintaan tersebut
Di ObjectAction.java, objek domain diambil oleh ActionContext dan nilai properti ditambahkan ke dalamnya, dan permintaan diteruskan ke showpage.jsp
Di halaman showpage.jsp, kita bisa mendapatkan nilai dari setiap objek domain
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Handle</title></head><body>-- Pass the name parameter, which can be obtained from the Params domain object in the Action class to test the Params domain object<a href="showPage.action?name=bgZyy" rel="external nofollow" > Aplikasi </a> </body> </html>
Objectaction.java
package com.request.test;import com.opensymphony.xwork2.ActionContext;import java.util.Map;public class ObjectAction { public String print() {// Get ActionContext ActionContext actionContext = ActionContext.getContext();// Get the Map corresponding to the action domain object Map<String, Object> applicationMap = actionContext.getApplication();// Assign applicationMap.put("applicationMap", "applicationMapValue");// Get the Map corresponding to Session Map<String, Object> sessionMap = actionContext.getSession();// Assign sessionMap to sessionMap.put("sessionMap", "sessionMapValue");// Get the Map corresponding to request, there is no corresponding getRequest() method, so use the get("request") method Map<String, Object> requestMap = (peta <String, Object>) ActionContext.get ("Request"); // Dapatkan peta yang sesuai dengan permintaan. Tidak ada metode getRequest () yang sesuai, jadi gunakan metode GET ("request") Metode <String, Object> requestMap = (peta <String, Object>) actionContext.get ("request"); // be revandmap penetapan requestMap.put ("requestMap", "requestMapValue"); // dapatkan peta yang sesuai dengan peta (Params), "requestMaPvalue"); // dapatkan peta yang sesuai dengan peta <params, (puperppar, PARAMANS; Action = Action = Action = Action = Action (Action (Action, "PARUPPAR (ACTION/ PARAMET (ACTIONS; Nilai parameter params string [] params = (string []) paramsmap.get ("name"); // cetak nilai parameter ke konsol system.out.println (params [0]); mengembalikan "kesuksesan"; }}struts.xml (hanya menampilkan simpul paket)
<nama paket = "showValue" extends = "struts-default"> <action name = "showpage" method = "print"> <result name = "success">/showpage.jsp </result> </cich> </packer>
showpage.jsp (hanya menampilkan konten tag tubuh)
<%-Dapatkan nilai objek domain aplikasi-%> $ {applicationsCope.applicationMap} <br> <%-dapatkan nilai objek domain sesi-%> $ {sesionscope.SessionMap} <br> <%-dapatkan nilai dari permintaan domain-%> $ {requestscope.requestsope} <perqubr> <perqubr> <perquin <%noile / $ {requestscope. Objek-%> $ {RequestScope.RequestMap}Detail dan perhatian untuk (seret gambar ke halaman tab baru browser untuk melihat gambar yang lebih besar)
Mengakses Sumber Daya Web Menggunakan Antarmuka XXXAWARE
Seperti menggunakan ActionContext, mengirim permintaan ke ObjectAction.java pada halaman index.jsp diproses dengan metode print2() .
Tetapkan nilai ke objek domain dalam metode print2() di ObjectAction.java dan dapatkan nilai parameter yang diteruskan
Akhirnya, kami mendapatkan nilai objek domain di showpage.jsp. Untuk membedakan dari yang sebelumnya, kami menambahkan simbol ke setiap nilai output untuk membedakan.
index.jsp (menampilkan bagian tag tubuh)
<a href = "showpage2.action? name = smzyy" rel = "eksternal nofollow"> topage2 </a>
Objectaction.java
Paket com.request.test; impor com.opensymphony.xwork2.actioncontext; impor org.apache.struts2.interceptor.applicationAware; import org.apache.struts2.interceptor.parameteraware; import org.apache.struts2.interceptor.requestawar; impor org.apache.struts2.interceptor.requestawar; java.util.map; ObjectAction kelas publik mengimplementasikan permintaan, sessionAware, applicationAware, parameterAware {private map <string, objek> requestMap; peta pribadi <string, objek> sessionmap; peta pribadi <String, Object> ApplicationMap; peta pribadi <string, string []> parameterMap; // showpage.action Eksekusi metode yang diperlukan public string print2 () {applicationMap.put ("applicationMap", "applicationMapVal ==="); requestMap.put ("RequestMap", "RequestMapVal ==="); sessionmap.put ("sessionmap", "sessionmapval ==="); String [] name = parameterMap.get ("name"); System.out.println (nama [0] + "===="); mengembalikan "kesuksesan"; } @Override public void setApplication (peta <string, object> peta) {this.applicationMap = peta; } @Override public void setParameters (peta <string, string []> peta) {this.parametermap = peta; } @Override public void setRequest (peta <string, object> peta) {this.RequestMap = peta; } @Override public void setSession (peta <string, object> peta) {this.SessionMap = peta; }}struts.xml (menampilkan bagian simpul paket)
<nama paket = "showValue" extends = "struts-default"> <action name = "showpage2" method = "print2"> <name hasil = "sukses">/showpage.jsp </hasilnya> </ctive> </packer>
showpage.jsp (sama seperti di atas, itu tidak berubah sama sekali)
Saran seleksi
Melalui dua metode di atas untuk mendapatkan sumber daya web, kita dapat mengetahui bahwa jika metode pertama memiliki banyak metode tindakan yang memerlukan objek domain panggilan, setiap metode harus diimplementasikan, sedangkan metode kedua hanya perlu diimplementasikan sekali, jadi dalam pengembangan aktual, metode yang sesuai dipilih untuk mengimplementasikannya sesuai dengan situasi.
Ditambah dengan servletapi: lebih banyak servletapis dapat diakses dan metode asli dapat dipanggil
Metode implementasi di sini mirip dengan metode implementasi di atas, jadi saya tidak akan membicarakannya.
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.