Beberapa orang mungkin berpikir bahwa struts tidak mudah dipelajari. Tampaknya beberapa konsep di dalamnya membingungkan orang yang belum pernah mengenalnya struts memiliki pendahuluan yang sederhana. Tentu saja, diperlukan panduan untuk mempelajari struts secara sistematis. Ada banyak hal menarik di dalamnya, tapi itu cerita untuk lain hari.
Kasus ini mencakup halaman beranda, login pengguna, dan halaman wizard situs web. Sesederhana itu. Tidak ada konsep mendalam tentang Struts. Ini terutama bergantung pada pengalaman langsung dan pemahaman dengan hati.
Server WEB menggunakan Tomcat4. Kunjungi http://jakarta.apache.org untuk mengunduh struts1.1, lepaskan file zip ke c:struts, salin C:strutswebappsstruts-example.war ke c:tomcat4webapps, dan mulai Tomcat. Paket war dilepaskan ke folder struts-example, hapus paket war, dan ganti nama folder struts-example menjadi test.
1. Ubah WEB-INFweb.xml menjadi:
<?xml version="1.0" coding="ISO-8859-1"?>
<!DOCTYPE aplikasi web PUBLIC "-//Sun Microsystems, Inc.//DTD Aplikasi Web 2.2//EN" " http://java.sun.com/j2ee/dtds/web-app_2_2.dtd ">
<web -aplikasi>
<!—Ini adalah Controller di struts. Kelas ActionServlet bertanggung jawab atas transfer perintah sistem. Ia membaca informasi konfigurasi dari struts-config.xml dan secara otomatis memulai thread di latar belakang server. Jika tidak ada persyaratan khusus (seperti menambahkan fungsi pengeditan bahasa), pemrogram dapat mengabaikan bagian ini dan menggunakannya saja. -->
<servlet>
<nama-servlet>tindakan</nama-servlet>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<nama-param>konfigurasi</nama-param>
<nilai-param>/WEB-INF/struts-config.xml</nilai-param>
</init-param>
<muat-saat-startup>1</muat-saat-startup>
</servlet>
<!--Servlet sistem ini dapat dipetakan ke file dengan akhiran cool, bukan .jspdo yang umum, dll. Nama akhiran dapat diubah ke nama apa pun, tentu saja namanya harus sehat #◎¥% ! -->
<pemetaan-servlet>
<nama-servlet>tindakan</nama-servlet>
<url-pattern>*.keren</url-pattern>
</pemetaan-servlet>
<!--Halaman beranda default sistem ini adalah index.jsp, bisa ada beberapa, sistem akan menemukannya secara berurutan, mirip dengan IIS-->
<daftar-file-selamat datang>
<file-selamat datang>index.jsp</file-selamat datang>
</daftar-file-selamat datang>
</web-app>
2. Ubah testWEB-INF struts-config.xml menjadi:
<?xml version="1.0" coding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//Konfigurasi DTD Struts 1.1//EN"
" http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd ">
<struts-config>
<!--FormBean adalah konsep struts. Ini pada dasarnya adalah JavaBean. Ini digunakan untuk secara otomatis menyimpan nilai setiap bidang di formulir halaman dan mengisi ulang bidang formulir pada waktu yang tepat ke request.getParameter ("fieldName") seperti tradisional;, sering digunakan oleh tindakan dalam pemetaan tindakan -->
<bentuk-kacang>
<!—Kami akan menambahkan kelas UserForm nanti untuk menyimpan informasi pengguna. -->
<form-bean name="userForm" type="test.UserForm"/>
</bentuk-kacang>
<!--Ini menyimpan alamat penerusan global yang dapat digunakan oleh seluruh sistem, mirip dengan window.location('index.jsp'); dalam JavaScript, dan juga mirip dengan berbagai tombol pada pengontrol TV, warna penyesuaian, dll. adalah aliran kontrol aplikasi web berdasarkan Struts. Dalam keadaan normal, setelah suatu Tindakan diproses, Tindakan tersebut akan diteruskan ke halaman JSP untuk ditampilkan. Ini juga merupakan poin kunci dari implementasi MVC di JSP. -->
<global-maju>
<!--failed.cool akan diperlakukan sebagai permintaan servlet, dan pemrosesan tindakan terkait akan ditemukan di pemetaan tindakan. -->
<nama depan="gagal" jalur="/gagal.keren"/>
<nama depan = "regist" path = "/regist.jsp"/>
</global-maju>
<!--Ingat permintaan dengan akhiran cool di web.xml? Mereka ditangani di sini. Ini setara dengan bagian Model pada penyangga. Bagian Model adalah tempat yang lebih fleksibel pada penyangga. -->
<pemetaan aksi>
<!--Untuk memproses permintaan register.cools, FormBean yang digunakan adalah userForm, yang merupakan kelas test.UserForm. Jika terjadi kesalahan selama pemrosesan, index.jsp akan dikembalikan-->
<jalur tindakan="/regist" type="test.RegistAction" name="userForm" scope="request" input="/index.jsp" />
<jalur tindakan="/ikhtisar" forward="/hello.jsp"/>
<jalur tindakan="/gagal" maju="/wuwu.jsp" />
</pemetaan-aksi>
</struts-config>
3. Tambahkan FormBean dengan jalur kelas test.UserForm Berikut adalah isi dari kelas ini:
paket test;
import org.apache.struts.action.ActionForm;
UserForm kelas publik memperluas ActionForm
{
Private String name="lpw";//Nama pengguna Private String ps="1111";//Password public UserForm(){}
public void setName(String s) {nama=s;}
public String getName() {nama kembalian;}
kekosongan publik setPs(String s) {ps=s;}
String publik getPs() {kembalikan ps;}
}
4. Tambahkan subkelas Action, jalur kelasnya adalah tes RegistAction, berikut isi kelas ini:
paket tes;
import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
impor javax.servlet.ServletException;
impor javax.servlet.http.HttpServletRequest;
impor javax.servlet.http.HttpSession;
impor javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.MessageResources;
impor tes.UserForm;
RegistAction kelas akhir publik memperluas Aksi
{
eksekusi ActionForward publik (pemetaan ActionMapping, formulir ActionForm, permintaan HttpServletRequest, respons HttpServletResponse)
throwsException
{
Lokal lokal = getLocale(permintaan);
MessageResources pesan = getResources(permintaan);
Sesi HttpSession = request.getSession();
UserForm userform = (UserForm) formulir;
//Di sini Anda dapat memanggil kelas lain untuk melakukan penulisan database atau penilaian logis lainnya //Jika nilai nama parameter yang diteruskan oleh UserForm adalah lpw default, maka akan diteruskan ke gagal.
// Nama ini akan dicari untuk alamat url yang dipetakan di <global-forwards> dari struts-config.xml // (bisa berupa jalur absolut atau jalur relatif).
//Ingat? Semua permintaan dengan akhiran "keren" masuk ke pemetaan tindakan untuk menemukan // pemrosesan tindakan yang sesuai.
if( "lpw".sama dengan(formulir pengguna.getName()) )
return (mapping.findForward("gagal"));
kalau tidak
return (mapping.findForward("mendaftar"));
}
}
5. Semua halaman baru atau halaman yang diubah berikut ini setara dengan bagian View pada struts. Ubah homepage index.jsp menjadi:
<%@ page contentType="text/html;charset=GBK" Language="java" %>
<%@ halaman impor = "test.*" %>
<a href="overview.cool">Navigasi Situs</a><br>
<form action="regist.cool" metode="post">
<!—Nama field pada form harus sama dengan parameter pada UserForm, agar data dapat diperoleh secara otomatis tanpa menggunakan request.getParameter("param");-->
Pengguna:<input type="text" name="name"><br>
Kata sandi:<input type="password" name="ps"><br>
<input type=kirim nilai="Tambahkan pengguna">
</form>
6. Tambahkan hello.jsp untuk navigasi situs:
<h1>peta situs</h1>Berikut ini adalah pengisian konten oleh pembaca
7. Tambahkan wuwu.jsp. Jika tidak ada pengguna baru yang login, mereka akan diarahkan ke ini Halaman:
<%@ halaman contentType="text/html;charset=GBK" Language="java" %>
<jsp:useBean id="beanlpw" class="test.UserForm" scope="sesi"/>
Pengguna yang ada: <%=beanlpw.getName()%><br>
Kata sandi: <%=beanlpw.getPs()%><br>
Tidak ada pengguna baru yang diperoleh!
8. Tambahkan register.jsp. Saat pengguna baru login, dia akan diarahkan ke halaman ini:
<%@ page contentType="text/html;charset=GBK" Language="java" %>
<jsp:useBean id="beanlpw" class="test.UserForm" scope="sesi"/>
Akun pengguna baru: <%=beanlpw.getName()%><br>
Kata sandi: <%=beanlpw.getPs()%>
9. Mulai Tomcat4, ketik http://localhost:8080/test/index.jsp di browser, operasikan, Anda dapat melihat hasilnya, dan pahami dulu M dari bagian struts, V, dan C saling bekerja sama, tentunya ini niat baik penulis. Jika pembaca bingung, mohon tunjukkan kesalahannya :)