Java secara bertahap memanas dalam beberapa tahun terakhir. Dengan diluncurkannya Java SE 5 dan Java SE 6, masa depan Java semakin cemerlang. Namun, JSP berbasis Java belum mampu bangkit sebelum peluncuran Java SE 5. Alasan terpentingnya adalah meskipun JSP sangat kuat, keunggulan terbesarnya juga merupakan kelemahan terbesarnya. Fungsi yang kuat berarti kompleksitas, terutama Ada tidak banyak alat visual untuk mendesain antarmuka front-end, dan alat tersebut tidak cukup kuat. Oleh karena itu, mendesain halaman JSP menjadi sangat rumit dan tidak praktis...
Java secara bertahap memanas dalam beberapa tahun terakhir. Dengan diluncurkannya Java SE 5 dan Java SE 6, masa depan Java semakin cemerlang. Namun, JSP berbasis Java belum mampu bangkit sebelum peluncuran Java SE 5. Alasan terpentingnya adalah meskipun JSP sangat kuat, keunggulan terbesarnya juga merupakan kelemahan terbesarnya. Fungsi yang kuat berarti kompleksitas, terutama Ada tidak banyak alat visual untuk mendesain antarmuka front-end, dan alat tersebut tidak cukup kuat. Oleh karena itu, mendesain halaman JSP menjadi sangat rumit dan tidak praktis. Namun, bersamaan dengan peluncuran Java SE 5, Sun meluncurkan spesifikasi JavaServer Faces (disingkat JSF) baru untuk menyederhanakan pengembangan JSP. Hal ini menempatkan JSP pada jalan yang cerah.
1. Apa itu JSF?
JSF dan JSP adalah pasangan baru. JSP adalah teknologi yang digunakan untuk pemrosesan logika latar belakang, sedangkan JSF justru sebaliknya. Ini adalah teknologi yang memungkinkan pengembang dengan cepat mengembangkan aplikasi Web berbasis Java. Ini adalah teknologi lapisan presentasi. Saat ini JSF1.2 telah resmi ditambahkan ke Java EE 5 sebagai standar.
Sebagai teknologi yang sangat terkomponen, pengembang dapat menerapkan operasi pengeditan drag-and-drop dengan dukungan beberapa alat pengembangan. Pengguna hanya perlu menyeret komponen JSF ke halaman untuk melakukan pengembangan Web dengan mudah. Inilah manfaat terbesarnya sebagai teknologi terkomponen. Komponen yang dapat kita gunakan tidak hanya kotak masukan yang relatif sederhana, tetapi juga komponen yang lebih kompleks, seperti komponen tabel seperti komponen Pohon DataTable.
Sebagai teknologi standar, JSF juga didukung oleh beberapa penyedia alat. Pada saat yang sama, kami juga akan memiliki banyak alat pengembangan gratis yang tersedia. Belum lama ini, Sun Java Studio Creator 2 dan Oracle JDeveloper 10g dirilis sebagai alat pengembangan gratis yang mendukung JSF, yang membawa banyak vitalitas ke JSF. Selain itu, kami juga memiliki beberapa alat pengembangan komersial yang sangat baik untuk dipilih. Alat pengembangan plug-in berbasis Eclipse seperti BEA Workshop (sebelumnya M7 NitroX), Exadel, dan MyEclipse telah memberikan kemudahan yang luar biasa bagi sebagian besar pengguna Eclipse IBM saat ini Pengembang Aplikasi Rasional dan JBuilder Borland juga merupakan alat pengembangan komersial yang sangat baik yang mendukung pengembangan visual JSF.
JSF pada dasarnya berbeda dari teknologi Web tradisional. Teknologi Web tradisional mengharuskan pengguna untuk menangkap permintaan browser, menyimpan status klien, dan mengontrol pengalihan halaman secara manual, dll. Kemunculan JSF tidak diragukan lagi memberi kita kemudahan yang luar biasa. JSF menyediakan model navigasi halaman berbasis peristiwa, yang memungkinkan pengembang aplikasi merancang aliran halaman aplikasi. Mirip dengan pendekatan Struts, semua informasi aliran halaman didefinisikan dalam file XML konfigurasi JSF (faces-config.xml) dan bukan dalam kode keras dalam aplikasi. Hal ini sangat menyederhanakan kesulitan pengembangan bagi pengembang dan menyederhanakan pengembangan aplikasi.
Pada saat yang sama, JSF juga merupakan kerangka kerja yang mengikuti pola model-view-controller (MVC). Ini mencapai pemisahan lengkap antara kode tampilan (Tampilan) dan logika aplikasi (Model), memungkinkan aplikasi yang menggunakan teknologi JSF mencapai pemisahan halaman dan kode yang baik. Semua permintaan halaman JSF akan diproses melalui pengontrol front-end (FacesServlet). Sistem secara otomatis memproses permintaan pengguna dan mengembalikan hasilnya kepada pengguna. Ini tidak jauh berbeda dengan kerangka MVC tradisional.
JSF tidak hanya menggunakan teknologi POJO, tetapi juga menggunakan teknologi Spring-like Inversion of Control (IoC) (atau Dependency Injection-DI). Di Backing Bean JSF, kita dapat memasukkan data dan operasi yang diperlukan oleh view ke dalam Backing Bean . Pada saat yang sama, berkat teknologi DI yang digunakan oleh JSF, kami dapat menginisialisasi Managed Bean di file konfigurasi. Pada saat yang sama, kami juga dapat menggunakan teknologi ini untuk berintegrasi dengan mudah dengan Spring, yang menggunakan teknologi serupa.
2. Cara menggunakan JSF di JSP
JSF dapat memberikan efek penuh hanya dengan menggabungkannya dengan JSP. JSF terintegrasi melalui perpustakaan tag dan JSP. Pustaka tag setara dengan komponen sisi server ASP.NET. JSF menyediakan perpustakaan tag yang sangat kaya, melalui mana berbagai model klien dapat dihasilkan, seperti HTML, WML, XML dan JavaScript. Melalui tag ini, Anda dapat dengan mudah membangun model klien berskala besar dan secara otomatis menangani permintaan klien melalui tag ini.
Selanjutnya mari kita lihat contoh bagaimana membuat JSF dan JSP bekerja sama. Ada dua perpustakaan di JSF. Yang pertama disebut perpustakaan kernel, yang berisi berbagai tag utama, seperti mengonfigurasi komponen, mengelola peristiwa, memvalidasi informasi masukan, dll. Fungsi utama perpustakaan kedua adalah untuk menyesuaikan dengan berbagai tag HTML dan JSF. Setiap tag JSF berhubungan dengan komponen HTML. Misalnya, tag UIInput sesuai dengan kotak teks atau kotak kata sandi dalam HTML.
Kotak input teks dalam tag JSF disebut inputText, dan perpustakaan input kata sandi disebut inputSecret. Berikut ini adalah program antarmuka pengguna sederhana yang menggabungkan JSF dan JSP.
<%@ taglib uri=" http://java.sun.com/jsf/html " awalan="h" %>
<%@ taglib uri=" http://java.sun.com/jsf/core " awalan ="f" %>
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=GB2312">
<title>Program JSF pertama </title>
</head >
<body>
<f:view>
<h:form id="simpleForm">
<h:outputText id="favoriteLabel" value="Silakan masukkan angka:"/>
<h:inputText id="favoriteValue" value= " #{simple.longValue}">
<f:validateLongrange maksimum="30" minimum="0"/>
</h:inputText>
<p/>
<h:commandButton id="submit" value="Kirim" action = "#{simple.simpleActionMethod}"/>
</h:form>
</f:view>
</body>
</html>
Pada kode di atas, kita dapat memahami bagaimana JSF terintegrasi dengan JSP. Pertama-tama kita dapat melihat label kernel: view. Lalu ada beberapa komponen JSF. Seperti form, outputText, inputText dan commandButton. Komponen-komponen ini ditempatkan di dalam formulir dan menjadi bagian dari formulir. Di awal program, dua perpustakaan tag harus diimpor menggunakan import. Kodenya adalah sebagai berikut.
<%@ taglib uri=" http://java.sun.com/jsf/html " awalan="h" %>
<%@ taglib uri=" http://java.sun.com/jsf/core " awalan ="f" %>
Dua baris kode di atas menyatakan perpustakaan tag JSF mana yang akan digunakan di JSP. Pustaka kernel dideklarasikan dengan awalan f, sedangkan pustaka HTML dideklarasikan dengan awalan h. Kedua awalan ini tidak wajib, namun hanya sekedar saran. Dalam program tersebut, perpustakaan kernel harus digunakan, karena tampilan harus digunakan di semua halaman JSF. Tag HTML mengubah tag JSF menjadi komponen HTML saat runtime. Awalan h ini tidak diperlukan, tetapi direkomendasikan oleh spesifikasi JSF. Dengan cara ini, kami membuat program JSF lebih mudah dibaca.
Setelah deklarasi terdapat beberapa baris pernyataan HTML standar, yang tidak akan dijelaskan secara rinci dalam artikel ini. Dimulai dari
<f:view>
<h:form id="simpleForm">
<h:outputText id="favoriteLabel" value="Silakan masukkan nomor:"/>
<h:inputText id="favoriteValue " value="#{simple.longValue}">
<f:validateLongrange maksimum="30" minimum="0"/>
</h:inputText>
<p/>
<h:commandButton id="submit" value=" Kirim
Tag"
action="#{simple.simpleActionMethod}"/>
</h:form>
</f:view>
</f:view> menandai dimulainya JSF, dan bentuk tag selanjutnya akan membuat Formulir HTML. Tag outputText setara dengan komponen label dalam HTML. Tag inputText setara dengan komponen textField dalam HTML. Tag commandButton setara dengan tombol kirim dalam HTML. Saat Anda menjalankan program JSP ini, Anda akan mendapatkan efek seperti yang ditunjukkan pada Gambar 1.
3. Bagaimana JSP merespon permintaan JSF?
Dari contoh di atas, kita sudah mengetahui cara menggunakan JSF di JSP. Pada bagian ini, mari kita lihat bagaimana permintaan diproses di JSF.
Pertama mari kita lihat contoh mengubah Fahrenheit ke Celcius. Program akan melakukan transisi ketika pengguna mengklik tombol kirim.
<%@ taglib uri=" http://java.sun.com/jsf/html " awalan="h" %>
<%@ taglib uri=" http://java.sun.com/jsf/core " awalan ="f" %>
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=GB2312">
<title>Program konversi suhu</title>
</head>
< body>
<f:view>
<h:form>
<div>
<h:outputText id="fahrenheitLabel" value="Silahkan masukkan suhu Fahrenheit:"/>
<span>
<h:inputText id="temperature" value= " #{tc.fahrenheitTemp}">
<f:validateDoublerange minimum="-100.0" maksimum="100.0"/>
<f:valuechangeListener type="tempconv.page.TCChangedListener"/>
</h:inputText>
</span >
</div>
<div>
<h:outputText id="celsiusLabel" value="Suhu Celsius:"/>
<span>
<h:outputText id="celsiusValue" value="#{tc.celsiusTemp}">
< f :convertNumber maxFractionDigits="3" type="number"/>
</h:outputText>
</span>
</div>
<div>
<h:commandButton value="Convert" action="#{tc.convert} " >
</h:commandButton>
</div>
</h:form>
</f:view>
</body>
</html>
Dalam dua baris pertama program, pustaka inti JSF dan pustaka HTML diimpor Hal ini sudah pernah dibahas sebelumnya dan tidak akan dibahas secara detail di sini.
Mari kita lihat bagaimana tag JSF berinteraksi dengan backend. Karena kita menggunakan JSF di JSP, tidak ada perbedaan antara ini dan JSP normal; JSP sebenarnya adalah Servlet. Saat JSP dijalankan untuk pertama kalinya, kompiler JSP mengkompilasi file .JSP ke dalam Servlet dan kemudian memanggilnya dengan menggunakan JSP. Servlet. Servlet kemudian menerima aliran data dari klien. Namun tidak seperti program JSP biasa, tag JSF dipanggil oleh JSF API (hal ini memungkinkan pemisahan lapisan logika dan lapisan presentasi). Selain itu, tag tersebut tidak berbeda dengan tag JSP biasa.
Ketika tag UIComponent menerima metode doStartTag, JSF akan menggunakan properti ini untuk menetapkan nilai tag. Misalnya, tag inputText pada contoh ini akan disetel sesuai dengan nilai atributnya. Di bawah ini adalah cuplikan kode dari JSF.
<h:inputText id="temperature" value="#{tc.fahrenheitTemp}">
<f:validateDoublerange minimum="-100.0" maksimum="100.0"/>
<f:valuechangeListener type="tempconv.page.TCChangedListener" />
</h:inputText>
Tag inputText menyetel atribut id dan value sesuai dengan nilai terkait. Di JSF, setiap nilai atribut diatur melalui setAttribute (Nama string, Nilai objek). Namun yang perlu kita perhatikan adalah tag JSF dapat menentukan nilai default yang sesuai. Ini agak mirip dengan properti sistem di Java. Jika Anda memberi nama properti, sistem akan mengembalikan nilai properti tersebut. Jika Anda menentukan nilai defaultnya dan properti tersebut tidak ada, nilai default akan dikembalikan.
Selanjutnya, mari kita lihat bagian terpenting dari program di atas, yaitu penanganan event pada komponen UIInput.
Di JSF, pemrosesan peristiwa diselesaikan oleh tag valuechangeListener. Peristiwa yang diwakili oleh label ini memicu peristiwa ketika nilai kotak teks berubah. Namun yang menarik adalah acara ini tidak langsung dikirimkan. Sebaliknya, acara dan data terkait tidak dikirimkan ke backend hingga pengguna mengklik tombol "Kirim". Oleh karena itu, permintaan kejadian ini disebut juga pra-komitmen. Terakhir, mari kita lihat implementasi kode UICommand.
<div>
<h:commandButton value="Conversion" action="#{tc.convert}">
</h:commandButton>
</div>
Kode di atas menghubungkan metode convert() dan UICommand, artinya , setelah mengklik tombol "Kirim", metode convert() akan dijalankan. Setelah menemukan tag view, program JSF menghasilkan hasil, dan JSFAPI akhirnya memanggil metode doEnd untuk mengakhiri program JSF. Setelah menguraikan program ini, mesin JSF mengubah tag JSF yang sesuai menjadi komponen HTML.
Terakhir, mari kita lihat bagaimana JSP merespons event JSF. Di bawah ini adalah potongan kode Java yang merespons peristiwa JSF.
public class TCCangedListener mengimplementasikan ValueChangeListener
{
public TCChangedListener()
{
super
();
}
// Penanganan event
public void processValueChange(ValueChangeEvent event)
throws AbortProcessingException
{
UIComponent comp = event.getComponent();
Nilai objek = event.getNewValue();
null != nilai)
{
float curVal = ((Nomor) nilai).floatValue();
Nilai peta = comp.getAttributes();
jika (curVal < 0)
{
value.put("styleClass", "red") ;
}
else
{
value.put
("styleClass"
, "black"
)
;
Yang perlu diperhatikan dalam program di atas adalah warna yang bersangkutan akhirnya diatur sesuai dengan nilai masukan. Nilai-nilai ini tidak bergantung pada JSP. Tentu saja, Anda juga dapat mengaturnya ke null dan membiarkan tag JSP mengatur warnanya.