Contoh pengembangan menggunakan JSP + JAVABEAN + XML
Penulis:Eve Cole
Waktu Pembaruan:2009-07-02 17:12:18
Contoh ini mengacu pada dokumen yang relevan tentang operasi JSP pada XML di beberapa situs web, dan menggabungkan beberapa pengalaman pribadi. Contohnya melibatkan pengembangan bagian kode untuk manajemen backend sistem pemesanan internal suatu perusahaan. Fungsinya terutama difokuskan pada pengelolaan informasi dasar tentang restoran.
Contoh itu sendiri dikembangkan sebagai bagian dari lelucon saya dengan rekan-rekan di perusahaan lama saya. Saya juga ingin menyampaikan kerinduan saya kepada teman-teman yang telah bekerja sama.
Contohnya sendiri adalah program terstruktur B/S yang berjalan di bawah platform TOMCAT4.01. Konfigurasi TOMCAT tidak akan dijelaskan di sini. Jelaskan saja struktur direktori file dan folder terkait.
Deskripsi struktur direktori:
/tomcat/webapps/canyin/ -----Direktori beranda
/Tomcat/webapps/canyin/jsp/ ----- Direktori file JSP
/Tomcat/webapps/canyin/jsp/admin/ ----- Direktori penyimpanan untuk file JSP yang menerapkan manajemen latar belakang
/Tomcat/webapps/canyin/WEB-INF/classes/canyin/ ------ Direktori penyimpanan file javabean
/tomcat/webapps/canyin/data/ -----direktori penyimpanan file xml
/tomcat/webapps/ROOT/ -----Folder penyimpanan file startup Tomcat, hanya file index.html yang disimpan
Penjelasan singkat tentang file tersebut:
/tomcat/webapps/canyin/data/users.xml -----Rekam informasi pengguna
/tomcat/webapps/canyin/data/restaurants.xml -----Catat informasi dasar restoran
/Tomcat/webapps/ROOT/index.html ----- Halaman beranda, kotak input muncul di halaman, mengharuskan pengguna memasukkan nama pengguna dan kata sandi.
/tomcat/webapps/canyin/jsp/loginjudge.jsp -----Halaman penilaian identitas pengguna. Berdasarkan nama pengguna dan kata sandi, diputuskan apakah halaman tersebut akan ditransfer ke terminal manajemen latar belakang atau klien front-end . Dalam contoh ini, setelah identitas pengguna dipastikan memiliki hak pengelolaan, dia dapat masuk ke terminal manajemen backend dan melompat langsung ke halaman manajemen informasi dasar restoran, sehingga menyederhanakan proses penjelasan.
/Tomcat/webapps/canyin/jsp/admin/admin_rest.jsp ----- Halaman manajemen informasi dasar restoran, mengelola nama, nomor telepon, alamat, dan informasi restoran lainnya
/tomcat/webapps/canyin/WEB-INF/classes/canyin/checkSessionBean.class ----- Terminal manajemen latar belakang mendeteksi nilai sesi yang menunjukkan identitas pengguna halaman masuk.
/Tomcat/webapps/canyin/WEB-INF/classes/canyin/connXmlBean.class ----- Hubungkan file xml
/Tomcat/webapps/canyin/WEB-INF/classes/canyin/writeXmlBean.class ----- Tulis file xml
Pengenalan mendetail pada file dan deskripsi kode yang menyertainya.
/tomcat/webapps/canyin/data/users.xml
Kode:
<?xml versi="1.0" pengkodean="UTF-8" ?>
- <pengguna>
<nama pengguna = "joard" kata sandi = "joard" role = "admin" />
<nama pengguna="joard01" kata sandi="joard01" role="pengguna" />
<nama pengguna="joard02" kata sandi="joard02" role="pengguna" />
</pengguna>
Deskripsi: Yang dimaksud dengan field adalah nama pengguna, kata sandi, dan identitas pengguna
/tomcat/webapps/canyin/data/restaurants.xml
Kode:
<?xml versi="1.0" pengkodean="UTF-8" ?>
- <restoran num="10">
- <id restoran="1">
<nama>Restoran Cepat Saji Shanghai Ting</name>
<telepon>021-76546726</phone>
<alamat>Broadway Plaza Tower B</alamat>
</restoran>
- <id restoran = "8">
<nama>Hotel Shangri-La</nama>
<telepon>021-2312134</telepon>
<alamat>No.1023, Jalan Nanjing</alamat>
</restoran>
</restoran>
Catatan: Atribut <num> mencatat jumlah total record dalam file restoran.xml Setiap kali record baru ditambahkan, nilainya akan bertambah 1 terlepas dari apakah record tersebut dihapus nanti, sama seperti id yang digunakan. secara otomatis bertambah 1 di item database. Digunakan untuk memberikan nilai unik pada atribut <id> dari <restaurant> yang baru ditambahkan. Arti dari bidang lain lebih jelas.
/Tomcat/webapps/ROOT/index.html (kode HTML murni)
Kode:
<html>
<kepala>
<title>Sistem Katering OddWorld</title>
<meta http-equiv="Jenis Konten" content="teks/html; charset=gb2312">
</kepala>
<body onload="javascript:dataform.namapengguna.fokus()">
<div align="tengah">
<tabel lebar="100%" border="0" Cellspacing="0" cellpadding="0" height="22">
<tr>
<td width="1"><img src="images/top_r1.GIF" width="62" height="22"></td>
<td width=150 align="center"> Login sistem katering </td>
<td><img src="images/top_r2.GIF" width="294" height="22"></td>
</tr>
</tabel>
<br>
<br>
<lebar tabel="300" border="0" cellpacing="1" cellpadding="0" >
<tr>
<td height="200" valign="top" align="center">
<p menyelaraskan="tengah">
<tabel lebar="100%" border="0" Cellspacing="1" cellpadding="5" bgcolor=#999999 class=a9px>
<tr>
<td bgcolor="#efefef">Login sistem katering</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" valign="atas" align="center">
<lebar tabel="100%" border="0" Cellspacing="0" cellpadding="0">
<nama formulir=metode dataform=post action=''canyin/jsp/loginjudge.jsp''>
<tr>
<td width="100"><b>Nama masuk:</b></td>
<td>
<masukan panjang maksimal=16
nama="nama pengguna" kelas=stedit nilai="joard">
</td>
</tr>
<tr>
<td width="100"><b>Sandi:</b></td>
<td>
<kelas masukan=stedit maxlength=16
nama="pass pengguna" type=kata sandi value="oddworld">
</td>
</tr>
</bentuk>
</tabel>
<br>
<batas tabel=0 cellpadding=0 spasi sel=0>
<tubuh>
<tr>
<td>
<masukan kelas=nama stbtm=perbarui onClick='javascript:if (checkform()==false);'
</td>
<td> </td>
<td>
<input class=stbtm name=Kirim onClick="javascript:window.location.href=''index.asp?myjoke=1'';" type=button value="Ubah kata sandi">
</td>
<td> </td>
</tr>
</tbody>
</tabel>
<br>
</td>
</tr>
</tabel>
</td>
</tr>
</tabel>
</div>
</tubuh>
</html>
<Bahasa SKRIP=javascript>
<!--
formulir periksa fungsi()
{
var Centang kosong = /^(s*|( )|(.))*$/;
if (Checkblank.test(dataform.nama pengguna.nilai))
{
alert("Nama login tidak boleh kosong!");
kembali salah;
}
if (Checkblank.test(dataform.userpass.value))
{
alert("Password tidak boleh kosong!");
kembali salah;
}
jendela.dataform.submit();
}
-->
</SKRIP>
Petunjuk: Kirimkan nama pengguna dan kata sandi pengguna ke /Tomcat/webapps/canyin/jsp/loginjudge.jsp
/Tomcat/webapps/canyin/WEB-INF/classes/canyin/checkSessionBean.class (kodenya adalah file java yang sesuai)
paket canyin;
impor javax.servlet.http.HttpSession;
impor javax.servlet.http.HttpServletRequest;
checkSessionBean kelas publik {
boolean pribadi bolCheckPass=false;
permintaan HttpServletRequest pribadi = null;
checkSessionBean boolean publik(permintaan HttpServletRequest,String strSessionName,String strCheckValue){
checkSessionBean boolean publik (permintaan HttpServletRequest){
Sesi HttpSession = request.getSession(false);
kembali(bolCheckPass);
if (strSessionName==null || strCheckValue==null){
kembali(bolCheckPass);
}kalau tidak{
if (sesi!=null && session.getValue(strSessionName)!=null){
bolCheckPass=session.getValue(strSessionName).equals(strCheckValue);
}
kembali(bolCheckPass);
}
}
}
Deskripsi: Periksa apakah nilai nama sesi yang diteruskan sebagai parameter dan nilai bidang yang diteruskan sebagai parameter adalah sama.
/tomcat/webapps/canyin/WEB-INF/classes/canyin/connXmlBean.class
Kode:
paket canyin;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
impor javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
kelas publik connXmlBean {
pabrik DocumentBuilderFactory pribadi=null;
pembuat DocumentBuilder pribadi=null;
dokumen pribadi doc=null;
koneksi publikXmlBean(){}
String publik connXml(String xmlNamaFile){
String strExc="";
mencoba{
pabrik = DocumentBuilderFactory.newInstance();
pembangun=pabrik.newDocumentBuilder();
doc=builder.parse(xmlNamaFile);
doc.normalisasi();
}menangkap(Pengecualian e){
strExc=e.toString();
}
kembali(strExc);
}
Dokumen publik getXmlDoc(){
kembali(dokter);
}
}
Deskripsi: Buka file xml tertentu
/tomcat/webapps/canyin/WEB-INF/classes/canyin/writeXmlBean.class
Kode:
paket canyin;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
impor javax.xml.transform.stream.StreamResult;
impor java.io.File;
import org.w3c.dom.*;
kelas publik writeXmlBean {
tulisXmlBean(){} publik
public String writeXml(Dokumen dokumen,String xmlNamaFile){
String strExc="";
mencoba{
TransformerFactory tfactory = TransformerFactory.newInstance();
Trafo trafo = tfactory.newTransformer();
Sumber DOMSource = DOMSource baru(doc);
Hasil StreamResult = StreamResult baru(File baru(xmlFileName));
transformator.transform(sumber,hasil);
}menangkap(Pengecualian e){
strExc=e.toString();
}
kembali(strExc);
}
}
Deskripsi: Tulis konten dom ke file xml tertentu.
/Tomcat/webapps/canyin/jsp/loginjudge.jsp
Kode:
<%-- Sistem Manajemen Katering OddWorld (versi Cina Sederhana) 1 Desember 2002
salin langsung oleh joard ast
fungsi loginjudge.jsp: verifikasi identitas pengguna, berdasarkan identitas berbeda dari pengguna yang ditandai di file /data/user.xml
Putuskan untuk pergi ke halaman manajemen backend atau halaman pemesanan pelanggan.
--%>
<%@ halaman contentType="teks/html;charset=gb2312" %>
<%@ halaman bahasa="java" import="javax.xml.parsers.*" %>
<%@ halaman import="org.w3c.dom.*" %>
<%@ halaman import="canyin.*" %>
<jsp:useBean id="xmlBean" class="canyin.connXmlBean" scope="page" />
<%
sesi.setMaxInactiveInterval(1800);
dokumen dokumen;
pengguna NodeList;
String strExc="";
String strNama Pengguna,strPassword;
strUsername=(String)request.getParameter("nama pengguna");
strPassword=(String)request.getParameter("userpass");
//Periksa apakah datanya kosong
jika (strUsername=="" || strPassword=="" ){
out.println("<bahasa skrip=''javascript''>");
out.println("alert(''Nama pengguna atau kata sandi bernilai null!'');");
out.println("window.location.href=''/index.html'';");
keluar.println("</script>");
kembali;
}
xmlBean.connXml("webapps/canyin/data/users.xml");
doc=xmlBean.getXmlDoc();
mencoba{
pengguna =doc.getElementsByTagName("pengguna");
untuk (int i=0;i<pengguna.getLength();i++){
Elemen pengguna=(Elemen) pengguna.item(i);
String strAtrNameValue=pengguna.getAttributeNode("nama").getNodeValue();
String strAtrPassWordValue=pengguna.getAttributeNode("kata sandi").getNodeValue();
String strAtrRoleValue=pengguna.getAttributeNode("roles").getNodeValue();
if (strAtrNameValue.equals(strUsername) && strAtrPassWordValue.equals(strPassword)){
if (strAtrRoleValue.equals("admin")){
out.println("<bahasa skrip=''javascript''>");
out.println("alert(''Selamat datang administrator untuk login ke sistem!'');");
keluar.println("</script>");
//Atur sesi (sesUserRole) yang menunjukkan identitas pengguna, dan identitas administrator adalah admin
session.setAttribute("sesUserRole","admin");
//Lompat ke halaman manajemen
respon.sendRedirect("admin/admin_rest.jsp");
kembali;
}kalau tidak{
//Atur sesi (sesUserRole) yang menunjukkan identitas pengguna, dan identitas administrator adalah pengguna
session.setAttribute("sesUserRole","pengguna");
//Lompat ke halaman pengguna biasa
respon.sendRedirect("index.jsp");
kembali;
}
}kalau tidak{
out.println("<bahasa skrip=''javascript''>");
out.println("alert(''Nama pengguna atau kata sandi salah!'');");
out.println("history.go(-1);");
keluar.println("</script>");
kembali;
}
}
}menangkap(Pengecualian e){
strExc=e.toString();
}
%>
menjelaskan:.......
/tomcat/webapps/canyin/jsp/admin/admin_rest.jsp
Kode:
<%-- Sistem Manajemen Katering OddWorld (versi Cina Sederhana) 1 Desember 2002
salin langsung oleh joard ast
fungsi admin_rest.jsp: halaman manajemen backend, halaman manajemen restoran.
--%>
<%@ halaman contentType="teks/html;charset=gb2312" %>
<%@ halaman bahasa="java" import="javax.xml.parsers.*" %>
<%@ halaman import="javax.xml.transform.*" %>
<%@ halaman import="org.w3c.dom.*" %>
<%@ halaman import="canyin.*" %>
<%@ sertakan file="../../include/sys_dialog.jsp" %>
<jsp:useBean id="checkSessionBean" class="canyin.checkSessionBean" scope="page" />
<jsp:useBean id="xmlBean" class="canyin.connXmlBean" scope="page" />
<jsp:useBean id="writeXmlBean" class="canyin.writeXmlBean" scope="page" />
<%//Verifikasi identitas pengguna untuk menentukan apakah dia adalah administrator
if(!checkSessionBean.checkSessionBean(permintaan,"sesUserRole","admin")){
out.print(showDialog("Anda tidak memiliki hak administratif!","/index.html"));
kembali;
}
//Dapatkan data yang relevan dari file informasi restoran rest.xml
dokumen dokumen;
Restoran NodeList;
String strAct;
int intId=0;
String strOperasi="tunjukkan";
//Terima parameter eksternal yang diteruskan
strAct=(String)request.getParameter("tindakan");
xmlBean.connXml("webapps/canyin/data/restaurants.xml");
doc=xmlBean.getXmlDoc();
restoran =doc.getElementsByTagName("restoran");
//Tentukan pengoperasian file resto.xml berdasarkan parameter eksternal yang diteruskan
jika (strAct!=null){
if(strAct.equals("addnewDo")){
String strNama;
Tali strPhone;
String strAlamat;
Teks teksseg;
strName=(String)request.getParameter("nama").trim();
strPhone=(String)request.getParameter("telepon").trim();
strAddress=(String)request.getParameter("alamat").trim();
//Verifikasi data
jika(strNama==batal){
out.print(showDialog("Nama restoran tidak boleh kosong!"));
kembali;
}
if(strPhone==null){
out.print(showDialog("Nomor telepon restoran tidak boleh kosong!"));
kembali;
}
/*if(strAlamat==batal){
out.print(showDialog("Alamat restoran tidak boleh kosong!"));
kembali;
}*/
//Verifikasi keunikan data
for(int i=0;i<restoran.getLength();i++){
Elemen restoran=(Elemen) restoran.item(i);
if(((String)restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()).equals(strName)){
out.print(showDialog("Gandakan nama restoran!"));
kembali;
}kalau tidak{
if(((String)restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()).equals(strPhone)){
out.print(showDialog("Ulangi nomor telepon restoran!"));
kembali;
}
}
}
//Dapatkan jumlah data yang ada dan tetapkan atribut id tambahan unik untuk data restoran baru
int intNum=0;
Elemen restNum=(Elemen)doc.getElementsByTagName("restoran").item(0);
intNum=Bilangan Bulat.parseInt(restNum.getAttributeNode("num").getNodeValue());
intNum+=1;
//Tambahkan 1 pada nilai atribut restoran num
restNum.getAttributeNode("num").setNodeValue(String.valueOf(intNum));
//Tambahkan simpul
Elemen newRestaurant=doc.createElement("restoran");
Attr newArrId=doc.createAttribute("id");
//Atribut newArrId = Atribut baru("id",String.valueOf(intNum));
textseg=doc.createTextNode(String.valueOf(intNum));
newArrId.setValue(String.valueOf(intNum));
restoran baru.setAttributeNode(newArrId);
Elemen newName=doc.createElement("nama");
texteg=doc.createTextNode(strNama);
Namabaru.appendChild(textseg);
newRestaurant.appendChild(Nama Baru);
Elemen newPhone=doc.createElement("telepon");
texteg=doc.createTextNode(strPhone);
newPhone.appendChild(textseg);
newRestaurant.appendChild(Telepon baru);
Elemen newAddress=doc.createElement("alamat");
texteg=doc.createTextNode(strAlamat);
alamat baru.appendChild(textseg);
Restoran baru.appendChild(Alamat baru);
doc.getDocumentElement().appendChild(restoran baru);
//Panggil kacang untuk menulis file xml yang sesuai
writeXmlBean.writeXml(doc,"webapps/canyin/data/restaurants.xml");
respon.sendRedirect(permintaan.getRequestURI());
kembali;
}
if(strAct.equals("modiDo")){
String strNama;
Tali strPhone;
String strAlamat;
Teks teksseg;
int modiId;
//Catat item(i) rekaman mana yang akan diubah
int ke dalamI=0;
strName=(String)request.getParameter("nama").trim();
strPhone=(String)request.getParameter("telepon").trim();
strAddress=(String)request.getParameter("alamat").trim();
modiId=Integer.parseInt(request.getParameter("recordId").trim());
//Verifikasi data
jika(strNama==batal){
out.print(showDialog("Nama restoran tidak boleh kosong!"));
kembali;
}
if(strPhone==null){
out.print(showDialog("Nomor telepon restoran tidak boleh kosong!"));
kembali;
}
jika(modiId==0){
out.print(showDialog("Catatan restoran yang ingin Anda ubah tidak ada!"));
kembali;
}
/*if(strAlamat==batal){
out.print(showDialog("Alamat restoran tidak boleh kosong!"));
kembali;
}*/
// Bendera menunjukkan catatan ada
catatan booleanExist=false;
//Verifikasi keunikan data
for(int i=0;i<restoran.getLength();i++){
Elemen restoran=(Elemen) restoran.item(i);
if(Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue())==modiId){
recordExist=benar;
ke dalamsaya=saya;
}
if(((String)restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()).equals(strName) && Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue() )!=modiId ){
out.print(showDialog("Gandakan nama restoran!"));
kembali;
}kalau tidak{
if(((String)restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()).equals(strPhone) && Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue() )!=modiId ){
out.print(showDialog("Ulangi nomor telepon restoran!"));
kembali;
}
}
}
if(!recordExist){
out.print(showDialog("Catatan restoran yang ingin Anda ubah tidak ada!"));
kembali;
}kalau tidak{
//Lakukan perubahan rekaman
mencoba{
Elemen modiRestaurant=(Elemen) restoran.item(intI);
modiRestaurant.getElementsByTagName("nama").item(0).getFirstChild().setNodeValue(strName);
modiRestaurant.getElementsByTagName("telepon").item(0).getFirstChild().setNodeValue(strPhone);
modiRestaurant.getElementsByTagName("alamat").item(0).getFirstChild().setNodeValue(strAddress);
//Panggil kacang untuk menulis file xml yang sesuai
writeXmlBean.writeXml(doc,"webapps/canyin/data/restaurants.xml");
respon.sendRedirect(permintaan.getRequestURI());
kembali;
}menangkap(Pengecualian e){}
}
}
//Lakukan operasi penghapusan
if(strAct.equals("del")){
int delId;
//Catat item(i) rekaman mana yang akan diubah
int ke dalamI=0;
delId=Bilangan Bulat.parseInt(request.getParameter("recordId").trim());
jika(delId==0){
out.print(showDialog("Catatan restoran yang ingin Anda ubah tidak ada!"));
kembali;
}
Bendera file:// menunjukkan bahwa catatan itu ada
catatan booleanExist=false;
//Verifikasi keunikan data
for(int i=0;i<restoran.getLength();i++){
Elemen restoran=(Elemen) restoran.item(i);
if(Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue())==delId){
recordExist=benar;
ke dalamsaya=saya;
}
}
if(!recordExist){
out.print(showDialog("Catatan restoran yang ingin Anda hapus tidak ada!"));
kembali;
}kalau tidak{
//Lakukan operasi penghapusan rekaman
mencoba{
Node delNode=(Node)restoran.item(intI);
doc.getElementsByTagName("restoran").item(0).removeChild(delNode);
//Panggil kacang untuk menulis file xml yang sesuai
writeXmlBean.writeXml(doc,"webapps/canyin/data/restaurants.xml");
respon.sendRedirect(permintaan.getRequestURI());
kembali;
}menangkap(Pengecualian e){}
}
}
}
//Status pemrosesan halaman yang sesuai ditentukan oleh parameter eksternal.
jika (strAct==null){
strOperation="tunjukkan";
}kalau tidak{
if (strAct.equals("modi")){
strOperasi="modi";
intId=Bilangan Bulat.parseInt(permintaan.getParameter("recordId"));
}kalau tidak{
if(strAct.equals("tambahkanbaru")){
strOperation="tambahkanbaru";
}kalau tidak{
strOperation="tunjukkan";
}
}
}
//Jika record kosong, ubah status halaman menjadi "Baru"
if (restoran.getLength()==0){
strOperation="tambahkanbaru";
}
%>
<html>
<kepala>
<title>Sistem Katering OddWorld</title>
<meta http-equiv="Jenis Konten" content="teks/html; charset=gb2312">
<meta http-equiv="kedaluwarsa" content="0">
<link rel="stylesheet" href="../../include/itsp.css" type="text/css">
</kepala>
<tubuh>
<div align="tengah">
<tabel lebar="100%" border="0" Cellspacing="0" cellpadding="0" height="22">
<tr>
<td width="1"><img src="../../images/top_r1.GIF" width="62" height="22"></td>
<td width=150 align="center"> Manajemen sistem katering--manajemen restoran</td>
<td><img src="../../images/top_r2.GIF" width="294" height="22"></td>
<td width=100 align="center"><a href="/index.html">[Keluar dari sistem]</a></td>
</tr>
</tabel>
<br>
<br>
<tabel bgcolor="#999999" align=batas tengah=0 cellpadding=1 spasi sel=1
lebar="90%">
<tubuh>
<tr bgcolor="#efefef" align="center" valign="middle">
<td class=ttTable height=30 width="20"> </td>
<td class=ttTable height=30 width="0">Nama restoran</td>
<td class=ttTable height=30 width="0">Nomor telepon restoran</td>
<td class=ttTable height=30 width="0">
<div align="center">Alamat restoran</div>
</td>
<td class=ttTable height=30 width="30">
<div align="center">Ubah</div>
</td>
<td class=ttTable height=30 width="30">
<div align="center">Hapus</div>
</td>
</tr>
<%
for(int i=0;i<restoran.getLength();i++)
{
Elemen restoran=(Elemen) restoran.item(i);
if (strOperation=="modi" && Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue())==intId){
%>
<%//Tampilkan format yang diubah%>
<tr align="center" bgcolor="#ffffff" valign="middle">
<form name=dataform action="<%=request.getRequestURI()%>?act=modiDo" method="post" onSubmit=''return checkform(this);'' >
<td class=tdsmall height=25 width="20">
<input type="hidden" name="recordId" value="<%=restaurant.getAttributeNode("id").getNodeValue()%>">
<%=(i+1)%></td>
<td class=tdsmall height=25>
<masukan nama="nama" kelas=stedit
style="TINGGI: 22px; LEBAR: 150px" value="<%if(restaurant.getElementsByTagName("name").item(0).hasChildNodes()){
keluar.print(restoran.getElementsByTagName("nama").item(0).getFirstChild().getNodeValue());
}%>
" panjang maksimal = "40" >
</td>
<td class=tdsmall height=25>
<masukan nama="telepon" kelas=stedit
style="TINGGI: 22px; LEBAR: 100px" value="<%if(restaurant.getElementsByTagName("phone").item(0).hasChildNodes()){
out.print(restaurant.getElementsByTagName("telepon").item(0).getFirstChild().getNodeValue());
}%>" maxlength="20" >
</td>
<td class=tdsmall height=25>
<masukan nama="alamat" kelas=stedit
style="TINGGI: 22 piksel; LEBAR: 200 piksel" value="<%
if(restaurant.getElementsByTagName("address").item(0).hasChildNodes()){
keluar.print(restoran.getElementsByTagName("alamat").item(0).getFirstChild().getNodeValue());
}%>" maxlength="100" >
</td>
<td class=tdsmall height=25 width="25"><a href="javascript:if (checkform()==false);"><img border=0
tinggi=15 src="../../images/editok.gif" lebar=15></a></td>
<td class=tdsmall height=25 width="25"> </td>
</bentuk>
</tr>
<% }lainnya{
//Menampilkan format normal %>
<tr align="center" bgcolor="#ffffff" valign="middle">
<td class=tdsmall height=25 width="20"><%=(i+1)%></td>
<td class=tdsmall height=25 width="0"><%if(restaurant.getElementsByTagName("name").item(0).hasChildNodes()){
keluar.print(restoran.getElementsByTagName("nama").item(0).getFirstChild().getNodeValue());
}%>
</td>
<td class=tdsmall height=25 width="0"><%if(restaurant.getElementsByTagName("phone").item(0).hasChildNodes()){
out.print(restaurant.getElementsByTagName("telepon").item(0).getFirstChild().getNodeValue());
}%></td>
<td class=tdsmall height=25 lebar="0">
<%
if(restaurant.getElementsByTagName("address").item(0).hasChildNodes()){
keluar.print(restoran.getElementsByTagName("alamat").item(0).getFirstChild().getNodeValue());
}%>
</td>
<td class=tdsmall height=25 width="30"><a href="<%=request.getRequestURI()%>?act=modi&recordId=<%=restaurant.getAttributeNode("id").getNodeValue()% >">< batas gambar=0
tinggi=15 src="../../images/edit.gif" lebar=15></a></td>
<td class=tdsmall height=25 width="30"><img border=0
tinggi=15
onClick="javascript:if(confirm(''Apakah Anda yakin akan menghapus data ini? Penghapusan akan membuat data tidak dapat digunakan?'')){window.location.href=''<%=request.getRequestURI()%> ? act=del&recordId=<%=restaurant.getAttributeNode("id").getNodeValue()%>'';}"
src="../../images/delete.gif" style="CURSOR: tangan" lebar=15> </td>
</tr>
<%}
}%>
<% if (strOperation=="tambahkanbaru"){
//Tampilkan format baru%>
<tr align="center" bgcolor="#ffffff" valign="middle">
<form name=dataform2 action="<%=request.getRequestURI()%>?act=addnewDo" method="post" onSubmit=''return checkform2(this);'' >
<td class=tdsmall height=25 lebar="20"></td>
<td class=tdsmall height=25>
<masukan nama="nama" kelas=stedit
style="TINGGI: 22 piksel; LEBAR: 150 piksel" value="" maxlength="40" >
</td>
<td class=tdsmall height=25>
<input nama="telepon" kelas=stedit
style="TINGGI: 22 piksel; LEBAR: 100 piksel" value="" maxlength="20" >
</td>
<td class=tdsmall height=25>
<masukan nama="alamat" kelas=stedit
style="TINGGI: 22 piksel; LEBAR: 200 piksel" value="" maxlength="100" >
</td>
<td class=tdsmall height=25 width="25"><a href="javascript:if (checkform2()==false);"><img border=0
tinggi=15 src="../../images/editok.gif" lebar=15></a></td>
<td class=tdsmall height=25 width="25"> </td>
</bentuk>
</tr>
<% } %>
</tbody>
</tabel>
<br>
<tabel align=center border=0 cellpadding=0 Cellspacing=2 width="95%">
<tubuh>
<tr valign=tengah>
<td align=tengah> <br>
<batas tabel=0 cellpadding=0 spasi sel=0>
<tr>
<td>
<% if (strOperation=="tambahkanbaru"){
%>
<input class=stbtm name=perbarui onClick="javascript:if (checkform2()==false);" type=button value="Perbarui catatan">
<% }lainnya{
if(strOperation=="modi"){
%>
<input class=stbtm name=perbarui onClick="javascript:if (checkform()==false);" type=button value="Perbarui catatan">
<%
}kalau tidak{
%>
<input class=stbtm type="button" name="Button" value="Baru" onClick="javascript:window.location.href=''<%=request.getRequestURI()%>?act=addnew'' ; "><%
}
} %>
</td>
<td>
<input class=stbtm type="button" name="Button" value="Kembali" onClick="javascript:window.location.href=''index.jsp'';">
</td>
</tr>
</tabel>
</td>
</tr>
</tabel>
<p> </p>
</div>
</tubuh>
</html>
<BAHASA SKRIP=javascript>
<!--
fungsi checkform2()
{
var Centang kosong = /^(s*|( )|(.))*$/;
if (Checkblank.test(dataform2.nama.nilai))
{
alert("Nama restoran tidak boleh kosong!");
dataform2.nama.fokus();
kembali salah;
}
if (Checkblank.test(dataform2.phone.value))
{
alert("Nomor telepon restoran tidak boleh kosong!");
dataform2.telepon.fokus();
kembali salah;
}
window.dataform2.submit();
}
formulir periksa fungsi()
{
var Centang kosong = /^(s*|( )|(.))*$/;
if (Checkblank.test(dataform.nama.nilai))
{
alert("Nama restoran tidak boleh kosong!");
dataform.nama.fokus();
kembali salah;
}
if (Checkblank.test(dataform.phone.value))
{
alert("Nomor telepon restoran tidak boleh kosong!");
dataform.telepon.fokus();
kembali salah;
}
jendela.dataform.submit();
}
-->
</SKRIP>
Catatan: Penulisan dokumen ini di banyak tempat tidak ringkas, karena dalam proses pengembangan program, program yang terlalu ringkas seringkali menimbulkan kesulitan dalam pemeliharaan selanjutnya.
Pengalaman pengembangan:
Nilai kembalian doc.getElementsByTagName("restaurants").item(int i) adalah tipe node. Jika Anda tidak ingin memanggil nilai atributnya, tidak perlu memasukkannya ke tipe Elemen. Dapat dioperasikan secara langsung. Karena kesalahan dalam bahan referensi pengembangan, sistem ini menggunakan transformasi paksa. Anda dapat mempertimbangkan untuk menggunakan node untuk beroperasi secara langsung dalam pengembangan di masa mendatang.
Baik fungsi trim() maupun Interger.parseInt() tidak menerima nilai null.
File kiri dan kanan di bawah Tomcat adalah direktori yang dimulai dari TOMCAT. Untuk detailnya, silakan merujuk ke webappscanyinjspuserjudge.jsp untuk penulisan jalur xml.
Teman-teman yang berminat dengan kode aslinya silahkan menghubungi saya melalui alamat email berikut [email protected]