Ein Beispiel für die Entwicklung mit JSP + JAVABEAN + XML
Autor:Eve Cole
Aktualisierungszeit:2009-07-02 17:12:18
Dieses Beispiel bezieht sich auf relevante Dokumente zu JSP-Operationen auf XML auf einigen Websites und kombiniert einige persönliche Erfahrungen. Das Beispiel beinhaltet die Entwicklung eines Teils des Codes für die Backend-Verwaltung des internen Bestellsystems eines Unternehmens. Die Funktion konzentriert sich hauptsächlich auf die Verwaltung grundlegender Informationen über Restaurants.
Das Beispiel selbst wurde im Rahmen eines Witzes entwickelt, den ich mit Kollegen in meiner alten Firma hatte. Ich möchte auch meine Sehnsucht nach den Freunden zum Ausdruck bringen, die zusammengearbeitet haben.
Das Beispiel selbst ist ein B/S-strukturiertes Programm, das unter der TOMCAT4.01-Plattform läuft. Die Konfiguration von TOMCAT wird hier nicht erläutert. Erklären Sie einfach die Verzeichnisstruktur der zugehörigen Dateien und Ordner.
Beschreibung der Verzeichnisstruktur:
/tomcat/webapps/canyin/ -----Home-Verzeichnis
/tomcat/webapps/canyin/jsp/ -----JSP-Dateiverzeichnis
/tomcat/webapps/canyin/jsp/admin/ -----Das Speicherverzeichnis für JSP-Dateien, die die Hintergrundverwaltung implementieren
/tomcat/webapps/canyin/WEB-INF/classes/canyin/ ------Das Speicherverzeichnis der Javabean-Dateien
/tomcat/webapps/canyin/data/ -----XML-Dateispeicherverzeichnis
/tomcat/webapps/ROOT/ -----Tomcat-Startdateispeicherordner, nur die Datei index.html wird gespeichert
Kurze Beschreibung der Datei:
/tomcat/webapps/canyin/data/users.xml -----Benutzerinformationen aufzeichnen
/tomcat/webapps/canyin/data/restaurants.xml -----Zeichnen Sie grundlegende Informationen zu Restaurants auf
/tomcat/webapps/ROOT/index.html -----Startseite, auf der Seite erscheint ein Eingabefeld, in dem der Benutzer einen Benutzernamen und ein Passwort eingeben muss.
/tomcat/webapps/canyin/jsp/loginjudge.jsp -----Benutzeridentitätsbeurteilungsseite Basierend auf dem Benutzernamen und dem Passwort wird entschieden, ob die Seite an das Hintergrundverwaltungsterminal oder den Front-End-Client übertragen wird . In diesem Beispiel kann der Benutzer, sobald bestätigt wurde, dass er über Verwaltungsrechte verfügt, das Back-End-Verwaltungsterminal betreten und direkt zur Basisinformationsverwaltungsseite des Restaurants springen, was den Erklärungsprozess vereinfacht.
/tomcat/webapps/canyin/jsp/admin/admin_rest.jsp ----- Grundlegende Seite zur Verwaltung von Restaurantinformationen, verwaltet den Namen, die Telefonnummer, die Adresse und andere Informationen des Restaurants
/tomcat/webapps/canyin/WEB-INF/classes/canyin/checkSessionBean.class ----- Das Hintergrundverwaltungsterminal erkennt den Sitzungswert, der die Identität des Benutzers angibt. Wenn es sich nicht um einen Administrator handelt, springt es zurück zu Anmeldeseite.
/tomcat/webapps/canyin/WEB-INF/classes/canyin/connXmlBean.class -----Xml-Datei verbinden
/tomcat/webapps/canyin/WEB-INF/classes/canyin/writeXmlBean.class -----Xml-Datei schreiben
Detaillierte Einführung in die Datei und begleitende Codebeschreibung.
/tomcat/webapps/canyin/data/users.xml
Code:
<?xml version="1.0"kodierung="UTF-8" ?>
- <Benutzer>
<Benutzername="joard" Passwort="joard" Roles="admin" />
<Benutzername="joard01" Passwort="joard01" Rollen="Benutzer" />
<Benutzername="joard02" Passwort="joard02" Roles="Benutzer" />
</users>
Beschreibung: Die Bedeutung der Felder ist Benutzername, Passwort und Benutzeridentität
/tomcat/webapps/canyin/data/restaurants.xml
Code:
<?xml version="1.0"kodierung="UTF-8" ?>
- <restaurants num="10">
- <Restaurant-ID="1">
<name>Shanghai Ting Fast Food Restaurant</name>
<phone>021-76546726</phone>
<address>Broadway Plaza Tower B</address>
</restaurant>
- <Restaurant-ID="8">
<name>Shangri-La Hotel</name>
<phone>021-2312134</phone>
<address>Nr. 1023, Nanjing Road</address>
</restaurant>
</restaurants>
Hinweis: Das Attribut <num> zeichnet die Gesamtzahl der Datensätze in der Datei „restaurants.xml“ auf. Jedes Mal, wenn ein neuer Datensatz hinzugefügt wird, erhöht sich der Wert um 1, unabhängig davon, ob er später gelöscht wird, genau wie die gewohnte ID wird im Datenbankelement automatisch um 1 erhöht. Wird verwendet, um dem Attribut <id> des neu hinzugefügten <restaurant> einen eindeutigen Wert zuzuweisen. Die Bedeutung anderer Felder ist offensichtlicher.
/tomcat/webapps/ROOT/index.html (reiner HTML-Code)
Code:
<html>
<Kopf>
<title>oddWorld Catering System</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body onload="javascript:dataform.username.focus()">
<div align="center">
<table width="100%" border="0" cellpacing="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 für das Catering-System </td>
<td><img src="images/top_r2.GIF" width="294" height="22"></td>
</tr>
</table>
<br>
<br>
<table width="300" border="0" cellpacing="1" cellpadding="0" >
<tr>
<td height="200" valign="top" align="center">
<p align="center">
<table width="100%" border="0" cellpacing="1" cellpadding="5" bgcolor=#999999 class=a9px>
<tr>
<td bgcolor="#efefef">Login für das Catering-System</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" valign="top" align="center">
<table width="100%" border="0" cellpacing="0" cellpadding="0">
<form name=dataform method=post action=''canyin/jsp/loginjudge.jsp''>
<tr>
<td width="100"><b>Anmeldename:</b></td>
<td>
<Eingabe maxlength=16
name="username" class=stedit value="joard">
</td>
</tr>
<tr>
<td width="100"><b>Passwort:</b></td>
<td>
<Eingabeklasse=stedit maxlength=16
name="userpass" type=password value="oddworld">
</td>
</tr>
</form>
</table>
<br>
<Table Border=0 Cellpadding=0 Cellspacing=0>
<tbody>
<tr>
<td>
<input class=stbtm name=update onClick="javascript:if (checkform()==false);" type=button value="Login">
</td>
<td> </td>
<td>
<input class=stbtm name=Submit onClick="javascript:window.location.href=''index.asp?myjoke=1'';" type=button value="Passwort ändern">
</td>
<td> </td>
</tr>
</tbody>
</table>
<br>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>
<SCRIPT-Sprache=Javascript>
<!--
Funktion checkform()
{
var Checkblank = /^(s*|( )|(.))*$/;
if (Checkblank.test(dataform.username.value))
{
alarm("Anmeldename darf nicht leer sein!");
return false;
}
if (Checkblank.test(dataform.userpass.value))
{
alarm("Passwort darf nicht leer sein!");
return false;
}
window.dataform.submit();
}
->
</SCRIPT>
Anleitung: Senden Sie den Benutzernamen und das Benutzerpasswort an /tomcat/webapps/canyin/jsp/loginjudge.jsp
/tomcat/webapps/canyin/WEB-INF/classes/canyin/checkSessionBean.class (der Code ist die entsprechende Java-Datei)
Paket canyin;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
öffentliche Klasse checkSessionBean {
private boolean bolCheckPass=false;
private HttpServletRequest request = null;
public boolean checkSessionBean(HttpServletRequest request,String strSessionName,String strCheckValue){
public boolean checkSessionBean(HttpServletRequest request){
HttpSession session = request.getSession(false);
return(bolCheckPass);
if (strSessionName==null || strCheckValue==null){
return(bolCheckPass);
}anders{
if (session!=null && session.getValue(strSessionName)!=null){
bolCheckPass=session.getValue(strSessionName).equals(strCheckValue);
}
return(bolCheckPass);
}
}
}
Beschreibung: Überprüfen Sie, ob der Wert des als Parameter übergebenen Sitzungsnamens und der Wert des als Parameter übergebenen Felds gleich sind.
/tomcat/webapps/canyin/WEB-INF/classes/canyin/connXmlBean.class
Code:
Paket canyin;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
öffentliche Klasse connXmlBean {
private DocumentBuilderFactory Factory=null;
privater DocumentBuilder builder=null;
privates Dokument doc=null;
öffentliches connXmlBean(){}
öffentlicher String connXml(String xmlFileName){
String strExc="";
versuchen{
Factory = DocumentBuilderFactory.newInstance();
builder=factory.newDocumentBuilder();
doc=builder.parse(xmlFileName);
doc.normalize();
}catch(Ausnahme e){
strExc=e.toString();
}
return(strExc);
}
öffentliches Dokument getXmlDoc(){
return(doc);
}
}
Beschreibung: Öffnen Sie eine angegebene XML-Datei
/tomcat/webapps/canyin/WEB-INF/classes/canyin/writeXmlBean.class
Code:
Paket canyin;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
java.io.File importieren;
import org.w3c.dom.*;
öffentliche Klasse writeXmlBean {
öffentliches writeXmlBean(){}
public String writeXml(Document doc,String xmlFileName){
String strExc="";
versuchen{
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformator transformator = tfactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(xmlFileName));
transformator.transform(Quelle,Ergebnis);
}catch(Ausnahme e){
strExc=e.toString();
}
return(strExc);
}
}
Beschreibung: Schreiben Sie den Inhalt von dom in eine angegebene XML-Datei.
/tomcat/webapps/canyin/jsp/loginjudge.jsp
Code:
<%-- oddWorld Catering Management System (vereinfachte chinesische Version) 1. Dezember 2002
Copyright by joard ast
loginjudge.jsp-Funktion: Überprüfung der Benutzeridentität, basierend auf den unterschiedlichen Identitäten der in der Datei /data/user.xml markierten Benutzer
Entscheiden Sie sich, zur Backend-Verwaltungsseite oder zur Kundenbestellseite zu wechseln.
--%>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page language="java" import="javax.xml.parsers.*" %>
<%@ page import="org.w3c.dom.*" %>
<%@ page import="canyin.*" %>
<jsp:useBean id="xmlBean" class="canyin.connXmlBean" Scope="page" />
<%
session.setMaxInactiveInterval(1800);
Dokumentdokument;
NodeList-Benutzer;
String strExc="";
String strUsername,strPassword;
strUsername=(String)request.getParameter("username");
strPassword=(String)request.getParameter("userpass");
//Überprüfen Sie, ob die Daten leer sind
if (strUsername=="" || strPassword=="" ){
out.println("<script language=''javascript''>");
out.println("alert(''Benutzername oder Passwort hat einen Nullwert!'');");
out.println("window.location.href=''/index.html'';");
out.println("</script>");
zurückkehren;
}
xmlBean.connXml("webapps/canyin/data/users.xml");
doc=xmlBean.getXmlDoc();
versuchen{
Benutzer =doc.getElementsByTagName("user");
for (int i=0;i<users.getLength();i++){
Element user=(Element) users.item(i);
String strAtrNameValue=user.getAttributeNode("name").getNodeValue();
String strAtrPassWordValue=user.getAttributeNode("password").getNodeValue();
String strAtrRoleValue=user.getAttributeNode("roles").getNodeValue();
if (strAtrNameValue.equals(strUsername) && strAtrPassWordValue.equals(strPassword)){
if (strAtrRoleValue.equals("admin")){
out.println("<script language=''javascript''>");
out.println("alert(''Willkommen, dass sich der Administrator beim System anmeldet!'');");
out.println("</script>");
// Legen Sie die Sitzung (sesUserRole) fest, die die Benutzeridentität angibt, und die Administratoridentität ist admin
session.setAttribute("sesUserRole","admin");
//Zur Verwaltungsseite springen
Response.sendRedirect("admin/admin_rest.jsp");
zurückkehren;
}anders{
// Legen Sie die Sitzung (sesUserRole) fest, die die Identität des Benutzers angibt, und die Identität des Administrators ist Benutzer
session.setAttribute("sesUserRole","user");
//Zur normalen Benutzerseite springen
Response.sendRedirect("index.jsp");
zurückkehren;
}
}anders{
out.println("<script language=''javascript''>");
out.println("alert(''Falscher Benutzername oder Passwort!'');");
out.println("history.go(-1);");
out.println("</script>");
zurückkehren;
}
}
}catch(Ausnahme e){
strExc=e.toString();
}
%>
veranschaulichen:.......
/tomcat/webapps/canyin/jsp/admin/admin_rest.jsp
Code:
<%-- oddWorld Catering Management System (vereinfachte chinesische Version) 1. Dezember 2002
Copyright by joard ast
admin_rest.jsp-Funktion: Backend-Verwaltungsseite, Restaurant-Verwaltungsseite.
--%>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page language="java" import="javax.xml.parsers.*" %>
<%@ page import="javax.xml.transform.*" %>
<%@ page import="org.w3c.dom.*" %>
<%@ page import="canyin.*" %>
<%@ include 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" />
<%//Überprüfen Sie die Identität des Benutzers, um festzustellen, ob er oder sie ein Administrator ist
if(!checkSessionBean.checkSessionBean(request,"sesUserRole","admin")){
out.print(showDialog("Sie haben keine Administratorrechte!","/index.html"));
zurückkehren;
}
// Relevante Daten aus der Restaurantinformationsdatei rest.xml abrufen
Dokumentdokument;
NodeList-Restaurants;
String strAct;
int intId=0;
String strOperation="show";
//Akzeptiere die übergebenen externen Parameter
strAct=(String)request.getParameter("act");
xmlBean.connXml("webapps/canyin/data/restaurants.xml");
doc=xmlBean.getXmlDoc();
Restaurants =doc.getElementsByTagName("restaurant");
//Bestimmen Sie die Funktionsweise der Datei „restaurant.xml“ anhand der übergebenen externen Parameter
if (strAct!=null){
if(strAct.equals("addnewDo")){
String strName;
String strPhone;
String strAddress;
Texttextseg;
strName=(String)request.getParameter("name").trim();
strPhone=(String)request.getParameter("phone").trim();
strAddress=(String)request.getParameter("address").trim();
//Datenüberprüfung
if(strName==null){
out.print(showDialog("Der Restaurantname darf nicht leer sein!"));
zurückkehren;
}
if(strPhone==null){
out.print(showDialog("Die Telefonnummer des Restaurants darf nicht leer sein!"));
zurückkehren;
}
/*if(strAddress==null){
out.print(showDialog("Die Restaurantadresse darf nicht leer sein!"));
zurückkehren;
}*/
//Überprüfen Sie die Einzigartigkeit der Daten
for(int i=0;i<restaurants.getLength();i++){
Element restaurant=(Element) restaurants.item(i);
if(((String)restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()).equals(strName)){
out.print(showDialog("Doppelter Restaurantname!"));
zurückkehren;
}anders{
if(((String)restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()).equals(strPhone)){
out.print(showDialog("Restaurant-Telefonnummer wiederholen!"));
zurückkehren;
}
}
}
//Ermitteln Sie die Anzahl der vorhandenen Datensätze und legen Sie ein eindeutiges inkrementelles ID-Attribut für den neuen Restaurantdatensatz fest
int intNum=0;
Element restNum=(Element)doc.getElementsByTagName("restaurants").item(0);
intNum=Integer.parseInt(restNum.getAttributeNode("num").getNodeValue());
intNum+=1;
//Füge 1 zum Wert des Restaurantattributs Num hinzu
restNum.getAttributeNode("num").setNodeValue(String.valueOf(intNum));
//Knoten hinzufügen
Element newRestaurant=doc.createElement("restaurant");
Attr newArrId=doc.createAttribute("id");
//Attribute newArrId = new Attribute("id",String.valueOf(intNum));
textseg=doc.createTextNode(String.valueOf(intNum));
newArrId.setValue(String.valueOf(intNum));
newRestaurant.setAttributeNode(newArrId);
Element newName=doc.createElement("name");
textseg=doc.createTextNode(strName);
newName.appendChild(textseg);
newRestaurant.appendChild(newName);
Element newPhone=doc.createElement("phone");
textseg=doc.createTextNode(strPhone);
newPhone.appendChild(textseg);
newRestaurant.appendChild(newPhone);
Element newAddress=doc.createElement("address");
textseg=doc.createTextNode(strAddress);
newAddress.appendChild(textseg);
newRestaurant.appendChild(newAddress);
doc.getDocumentElement().appendChild(newRestaurant);
// Rufen Sie die Bean auf, um die entsprechende XML-Datei zu schreiben
writeXmlBean.writeXml(doc,"webapps/canyin/data/restaurants.xml");
Response.sendRedirect(request.getRequestURI());
zurückkehren;
}
if(strAct.equals("modiDo")){
String strName;
String strPhone;
String strAddress;
Texttextseg;
int modiId;
//Aufzeichnen, welches Element(i) der zu ändernde Datensatz ist
int intI=0;
strName=(String)request.getParameter("name").trim();
strPhone=(String)request.getParameter("phone").trim();
strAddress=(String)request.getParameter("address").trim();
modiId=Integer.parseInt(request.getParameter("recordId").trim());
//Datenüberprüfung
if(strName==null){
out.print(showDialog("Der Restaurantname darf nicht leer sein!"));
zurückkehren;
}
if(strPhone==null){
out.print(showDialog("Die Telefonnummer des Restaurants darf nicht leer sein!"));
zurückkehren;
}
if(modiId==0){
out.print(showDialog("Der Eintrag des Restaurants, das Sie ändern möchten, existiert nicht!"));
zurückkehren;
}
/*if(strAddress==null){
out.print(showDialog("Die Restaurantadresse darf nicht leer sein!"));
zurückkehren;
}*/
// Flag zeigt an, dass ein Datensatz vorhanden ist
boolean recordExist=false;
//Überprüfen Sie die Einzigartigkeit der Daten
for(int i=0;i<restaurants.getLength();i++){
Element restaurant=(Element) restaurants.item(i);
if(Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue())==modiId){
recordExist=true;
intI=i;
}
if(((String)restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()).equals(strName) && Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue() )!=modiId ){
out.print(showDialog("Doppelter Restaurantname!"));
zurückkehren;
}anders{
if(((String)restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()).equals(strPhone) && Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue() )!=modiId ){
out.print(showDialog("Restaurant-Telefonnummer wiederholen!"));
zurückkehren;
}
}
}
if(!recordExist){
out.print(showDialog("Der Eintrag des Restaurants, das Sie ändern möchten, existiert nicht!"));
zurückkehren;
}anders{
//Datensatzänderungen durchführen
versuchen{
Element modiRestaurant=(Element) restaurants.item(intI);
modiRestaurant.getElementsByTagName("name").item(0).getFirstChild().setNodeValue(strName);
modiRestaurant.getElementsByTagName("phone").item(0).getFirstChild().setNodeValue(strPhone);
modiRestaurant.getElementsByTagName("address").item(0).getFirstChild().setNodeValue(strAddress);
// Rufen Sie die Bean auf, um die entsprechende XML-Datei zu schreiben
writeXmlBean.writeXml(doc,"webapps/canyin/data/restaurants.xml");
Response.sendRedirect(request.getRequestURI());
zurückkehren;
}catch(Ausnahme e){}
}
}
//Löschvorgang durchführen
if(strAct.equals("del")){
int delId;
//Aufzeichnen, welches Element(i) der zu ändernde Datensatz ist
int intI=0;
delId=Integer.parseInt(request.getParameter("recordId").trim());
if(delId==0){
out.print(showDialog("Der Eintrag des Restaurants, das Sie ändern möchten, existiert nicht!"));
zurückkehren;
}
Das Flag „file://“ zeigt an, dass der Datensatz vorhanden ist
boolean recordExist=false;
//Überprüfen Sie die Einzigartigkeit der Daten
for(int i=0;i<restaurants.getLength();i++){
Element restaurant=(Element) restaurants.item(i);
if(Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue())==delId){
recordExist=true;
intI=i;
}
}
if(!recordExist){
out.print(showDialog("Der Eintrag des Restaurants, das Sie löschen möchten, existiert nicht!"));
zurückkehren;
}anders{
//Datensatzlöschvorgang durchführen
versuchen{
Knoten delNode=(Node)restaurants.item(intI);
doc.getElementsByTagName("restaurants").item(0).removeChild(delNode);
// Rufen Sie die Bean auf, um die entsprechende XML-Datei zu schreiben
writeXmlBean.writeXml(doc,"webapps/canyin/data/restaurants.xml");
Response.sendRedirect(request.getRequestURI());
zurückkehren;
}catch(Ausnahme e){}
}
}
}
//Der entsprechende Bearbeitungsstatus der Seite wird durch externe Parameter bestimmt.
if (strAct==null){
strOperation="show";
}anders{
if (strAct.equals("modi")){
strOperation="modi";
intId=Integer.parseInt(request.getParameter("recordId"));
}anders{
if(strAct.equals("addnew")){
strOperation="addnew";
}anders{
strOperation="show";
}
}
}
//Wenn der Datensatz leer ist, ändern Sie den Seitenstatus in „Neu“
if (restaurants.getLength()==0){
strOperation="addnew";
}
%>
<html>
<Kopf>
<title>oddWorld Catering System</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="expires" content="0">
<link rel="stylesheet" href="../../include/itsp.css" type="text/css">
</head>
<Körper>
<div align="center">
<table width="100%" border="0" cellpacing="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">Catering-Systemmanagement – Restaurantmanagement</td>
<td><img src="../../images/top_r2.GIF" width="294" height="22"></td>
<td width=100 align="center"><a href="/index.html">[System verlassen]</a></td>
</tr>
</table>
<br>
<br>
<table bgcolor="#999999" align=center border=0 cellpadding=1 Cellspacing=1
Breite="90%">
<tbody>
<tr bgcolor="#efefef" align="center" valign="middle">
<td class=ttTable height=30 width="20"> </td>
<td class=ttTable height=30 width="0">Name des Restaurants</td>
<td class=ttTable height=30 width="0">Telefonnummer des Restaurants</td>
<td class=ttTable height=30 width="0">
<div align="center">Restaurantadresse</div>
</td>
<td class=ttTable height=30 width="30">
<div align="center">Ändern</div>
</td>
<td class=ttTable height=30 width="30">
<div align="center">Löschen</div>
</td>
</tr>
<%
for(int i=0;i<restaurants.getLength();i++)
{
Element restaurant=(Element) restaurants.item(i);
if (strOperation=="modi" && Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue())==intId){
%>
<%//Geändertes Format anzeigen%>
<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>
<input name="name" class=stedit
style="HEIGHT: 22px; WIDTH: 150px" value="<%if(restaurant.getElementsByTagName("name").item(0).hasChildNodes()){
out.print(restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
}%>
" maxlength="40" >
</td>
<td class=tdsmall height=25>
<input name="phone" class=stedit
style="HEIGHT: 22px; WIDTH: 100px" value="<%if(restaurant.getElementsByTagName("phone").item(0).hasChildNodes()){
out.print(restaurant.getElementsByTagName("phone").item(0).getFirstChild().getNodeValue());
}%>" maxlength="20" >
</td>
<td class=tdsmall height=25>
<Eingabename="Adresse" class=stedit
style="HÖHE: 22px; BREITE: 200px" value="<%
if(restaurant.getElementsByTagName("address").item(0).hasChildNodes()){
out.print(restaurant.getElementsByTagName("address").item(0).getFirstChild().getNodeValue());
}%>" maxlength="100" >
</td>
<td class=tdsmall height=25 width="25"><a href="javascript:if (checkform()==false);"><img border=0
height=15 src="../../images/editok.gif" width=15></a></td>
<td class=tdsmall height=25 width="25"> </td>
</form>
</tr>
<% }sonst{
//Normales Format anzeigen %>
<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()){
out.print(restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
}%>
</td>
<td class=tdsmall height=25 width="0"><%if(restaurant.getElementsByTagName("phone").item(0).hasChildNodes()){
out.print(restaurant.getElementsByTagName("phone").item(0).getFirstChild().getNodeValue());
}%></td>
<td class=tdsmall height=25 width="0">
<%
if(restaurant.getElementsByTagName("address").item(0).hasChildNodes()){
out.print(restaurant.getElementsByTagName("address").item(0).getFirstChild().getNodeValue());
}%>
</td>
<td class=tdsmall height=25 width="30"><a href="<%=request.getRequestURI()%>?act=modi&recordId=<%=restaurant.getAttributeNode("id").getNodeValue()% >"><img border=0
height=15 src="../../images/edit.gif" width=15></a></td>
<td class=tdsmall height=25 width="30"><img border=0
Höhe=15
onClick="javascript:if(confirm(''Möchten Sie diesen Datensatz wirklich löschen? Durch das Löschen wird der Datensatz unbrauchbar?'')){window.location.href=''<%=request.getRequestURI()%> ? act=del&recordId=<%=restaurant.getAttributeNode("id").getNodeValue()%>'';}"
src="../../images/delete.gif" style="CURSOR: hand" width=15> </td>
</tr>
<%}
}%>
<% if (strOperation=="addnew"){
//Zeige das neue Format%>
<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 width="20"></td>
<td class=tdsmall height=25>
<input name="name" class=stedit
style="HEIGHT: 22px; WIDTH: 150px" value="" maxlength="40" >
</td>
<td class=tdsmall height=25>
<input name="phone" class=stedit
style="HEIGHT: 22px; WIDTH: 100px" value="" maxlength="20" >
</td>
<td class=tdsmall height=25>
<Eingabename="Adresse" class=stedit
style="HEIGHT: 22px; WIDTH: 200px" value="" maxlength="100" >
</td>
<td class=tdsmall height=25 width="25"><a href="javascript:if (checkform2()==false);"><img border=0
height=15 src="../../images/editok.gif" width=15></a></td>
<td class=tdsmall height=25 width="25"> </td>
</form>
</tr>
<% } %>
</tbody>
</table>
<br>
<table align=center border=0 cellpadding=0 cellpacing=2 width="95%">
<tbody>
<tr valign=center>
<td align=middle> <br>
<Table Border=0 Cellpadding=0 Cellspacing=0>
<tr>
<td>
<% if (strOperation=="addnew"){
%>
<input class=stbtm name=update onClick="javascript:if (checkform2()==false);" type=button value="Datensatz aktualisieren">
<% }sonst{
if(strOperation=="modi"){
%>
<input class=stbtm name=update onClick="javascript:if (checkform()==false);" type=button value="Update data">
<%
}anders{
%>
<input class=stbtm type="button" name="Button" value="New" onClick="javascript:window.location.href=''<%=request.getRequestURI()%>?act=addnew'' ; „><%
}
} %>
</td>
<td>
<input class=stbtm type="button" name="Button" value="Return" onClick="javascript:window.location.href=''index.jsp'';">
</td>
</tr>
</table>
</td>
</tr>
</table>
<p> </p>
</div>
</body>
</html>
<SCRIPT LANGUAGE=javascript>
<!--
Funktion checkform2()
{
var Checkblank = /^(s*|( )|(.))*$/;
if (Checkblank.test(dataform2.name.value))
{
alarm("Der Restaurantname darf nicht leer sein!");
dataform2.name.focus();
return false;
}
if (Checkblank.test(dataform2.phone.value))
{
alarm("Die Telefonnummer des Restaurants darf nicht leer sein!");
dataform2.phone.focus();
return false;
}
window.dataform2.submit();
}
Funktion checkform()
{
var Checkblank = /^(s*|( )|(.))*$/;
if (Checkblank.test(dataform.name.value))
{
alarm("Der Restaurantname darf nicht leer sein!");
dataform.name.focus();
return false;
}
if (Checkblank.test(dataform.phone.value))
{
alarm("Die Telefonnummer des Restaurants darf nicht leer sein!");
dataform.phone.focus();
return false;
}
window.dataform.submit();
}
->
</SCRIPT>
Hinweis: Der Text dieses Dokuments ist an vielen Stellen nicht prägnant, da zu prägnante Programme im Prozess der Programmentwicklung häufig zu Schwierigkeiten bei der späteren Wartung führen.
Entwicklungserfahrung:
Der Rückgabewert von doc.getElementsByTagName("restaurants").item(int i) ist vom Knotentyp. Wenn Sie seinen Attributwert nicht aufrufen möchten, ist es nicht erforderlich, ihn in den Elementtyp umzuwandeln. Direkt bedienbar. Aufgrund von Fehlern in den Entwicklungsreferenzmaterialien verwendet dieses System eine erzwungene Transformation. Sie können erwägen, den Knoten für den direkten Betrieb in der zukünftigen Entwicklung zu verwenden.
Weder die Funktionen trim() noch Interger.parseInt() akzeptieren Nullwerte.
Die linken und rechten Dateien unter Tomcat sind Verzeichnisse, die mit TOMCAT beginnen. Weitere Informationen zum Schreiben des XML-Pfads finden Sie unter webappscanyinjspuserjudge.jsp.
Freunde, die am Originalcode interessiert sind, kontaktieren mich bitte über die folgende E-Mail-Adresse: [email protected]