<ชื่อฟอร์ม=วิธีการของ dataform=การกระทำของโพสต์=''canyin/jsp/loginjudge.jsp''> ชื่อเข้าสู่ระบบ: | <อินพุตความยาวสูงสุด=16 ชื่อ = "ชื่อผู้ใช้" class = stedit value = "joard"> | รหัสผ่าน: | <คลาสอินพุต=stedit ความยาวสูงสุด=16 name="userpass" type=password value="oddworld"> | แบบฟอร์ม> ตาราง>
<เส้นขอบตาราง=0 เซลล์แพดดิ้ง=0 ระยะห่างเซลล์=0> | | | | ตาราง>
ตาราง> ตาราง> ร่างกาย> <ภาษาสคริปต์=จาวาสคริปต์> - แบบฟอร์มตรวจสอบฟังก์ชัน () - var Checkblank = /^(s*|( )|(.))*$/; ถ้า (Checkblank.test(dataform.username.value)) - alert("ชื่อล็อกอินไม่สามารถเว้นว่างได้!"); กลับเท็จ; -
ถ้า (Checkblank.test(dataform.userpass.value)) - alert("รหัสผ่านไม่สามารถเว้นว่างได้!"); กลับเท็จ; -
window.dataform.submit();
- -
สคริปต์>
คำแนะนำ: ส่งชื่อผู้ใช้และรหัสผ่านผู้ใช้ไปที่ /tomcat/webapps/canyin/jsp/loginjudge.jsp
/tomcat/webapps/canyin/WEB-INF/classes/canyin/checkSessionBean.class (โค้ดคือไฟล์ java ที่เกี่ยวข้อง)
แพ็คเกจแคนอิน;
นำเข้า javax.servlet.http.HttpSession; นำเข้า javax.servlet.http.HttpServletRequest;
checkSessionBean คลาสสาธารณะ {
บูลีนส่วนตัว bolCheckPass=false; คำขอ HttpServletRequest ส่วนตัว = null;
checkSessionBean บูลีนสาธารณะ (คำขอ HttpServletRequest, สตริง strSessionName, สตริง strCheckValue) { checkSessionBean บูลีนสาธารณะ (คำขอ HttpServletRequest) { เซสชัน HttpSession = request.getSession (เท็จ); กลับ(bolCheckPass);
ถ้า (strSessionName==null || strCheckValue==null){ กลับ(bolCheckPass); }อื่น{ ถ้า (เซสชัน!=null && session.getValue(strSessionName)!=null){ bolCheckPass=session.getValue(strSessionName).equals(strCheckValue); -
กลับ(bolCheckPass); - - -
คำอธิบาย: ตรวจสอบว่าค่าของชื่อเซสชันที่ส่งเข้ามาเป็นพารามิเตอร์และค่าของฟิลด์ที่ส่งเป็นพารามิเตอร์เท่ากันหรือไม่
/tomcat/webapps/canyin/WEB-INF/classes/canyin/connXmlBean.class
รหัส: แพ็คเกจแคนอิน;
นำเข้า javax.xml.parsers.*; นำเข้า javax.xml.transform.*; นำเข้า javax.xml.transform.dom.DOMSource; นำเข้า javax.xml.transform.stream.StreamResult; นำเข้า org.w3c.dom.*;
คลาสสาธารณะ connXmlBean {
โรงงาน DocumentBuilderFactory ส่วนตัว = null; ตัวสร้าง DocumentBuilder ส่วนตัว = null; เอกสารส่วนตัว doc=null;
สาธารณะ connXmlBean(){}
สตริงสาธารณะ connXml (สตริง xmlFileName) {
สตริง strExc="";
พยายาม{ โรงงาน = DocumentBuilderFactory.newInstance(); builder=factory.newDocumentBuilder(); doc=builder.parse(xmlFileName); doc.ทำให้เป็นมาตรฐาน(); } จับ (ข้อยกเว้นจ) { strExc=e.toString(); -
กลับ(strExc); -
เอกสารสาธารณะ getXmlDoc(){ กลับ (doc); - -
คำอธิบาย: เปิดไฟล์ xml ที่ระบุ
/tomcat/webapps/canyin/WEB-INF/classes/canyin/writeXmlBean.class
รหัส: แพ็คเกจแคนอิน;
นำเข้า javax.xml.parsers.*; นำเข้า javax.xml.transform.*; นำเข้า javax.xml.transform.dom.DOMSource; นำเข้า javax.xml.transform.stream.StreamResult; นำเข้า java.io.File; นำเข้า org.w3c.dom.*;
คลาสสาธารณะ writeXmlBean {
สาธารณะ writeXmlBean(){}
สตริงสาธารณะ writeXml (เอกสารเอกสาร, สตริง xmlFileName) {
สตริง strExc="";
พยายาม{ TransformerFactory tfactory = TransformerFactory.newInstance(); หม้อแปลงไฟฟ้า หม้อแปลงไฟฟ้า = tfactory.newTransformer();
แหล่งที่มาของ DOMSource = แหล่งที่มาของ DOMSource ใหม่ (doc);
ผลลัพธ์ StreamResult = StreamResult ใหม่ (ไฟล์ใหม่ (xmlFileName));
Transformer.transform (แหล่งที่มาผลลัพธ์); } จับ (ข้อยกเว้นจ) { strExc=e.toString(); -
กลับ (strExc); -
-
คำอธิบาย: เขียนเนื้อหาของ dom ไปยังไฟล์ xml ที่ระบุ
/tomcat/webapps/canyin/jsp/loginjudge.jsp
รหัส: <%-- ระบบการจัดการการจัดเลี้ยงของ OddWorld (เวอร์ชันภาษาจีนตัวย่อ) 1 ธันวาคม 2545 คัดลอกขวาโดย joard ast
ฟังก์ชัน Loginjudge.jsp: การตรวจสอบตัวตนผู้ใช้ ตามข้อมูลประจำตัวที่แตกต่างกันของผู้ใช้ที่ทำเครื่องหมายในไฟล์ /data/user.xml ตัดสินใจไปที่หน้าการจัดการแบ็กเอนด์หรือหน้าการสั่งซื้อของลูกค้า -
<%@ หน้า contentType="text/html;charset=gb2312" %> <%@ ภาษาหน้า = "java" import = "javax.xml.parsers.*" %> <%@ หน้านำเข้า = "org.w3c.dom.*" %> <%@ หน้า import="canyin.*" %>
- session.setMaxInactiveInterval(1800);
เอกสารเอกสาร; ผู้ใช้ NodeList; สตริง strExc=""; สตริง strUsername,strPassword;
strUsername=(String)request.getParameter("ชื่อผู้ใช้"); strPassword=(String)request.getParameter("userpass");
//ตรวจสอบว่าข้อมูลว่างเปล่าหรือไม่ ถ้า (strUsername=="" || strPassword=="" ){ out.println(""); กลับ; -
xmlBean.connXml("webapps/canyin/data/users.xml"); doc=xmlBean.getXmlDoc();
พยายาม{ ผู้ใช้ =doc.getElementsByTagName("ผู้ใช้");
สำหรับ (int i=0;i ผู้ใช้องค์ประกอบ = (องค์ประกอบ) users.item (i);
สตริง strAtrNameValue=user.getAttributeNode("name").getNodeValue(); สตริง strAtrPassWordValue=user.getAttributeNode("password").getNodeValue(); สตริง strAtrRoleValue=user.getAttributeNode("roles").getNodeValue();
ถ้า (strAtrNameValue.equals(strUsername) && strAtrPassWordValue.equals(strPassword)){
ถ้า (strAtrRoleValue.equals("ผู้ดูแลระบบ")){ out.println("");
//ตั้งค่าเซสชัน (sesUserRole) เพื่อระบุตัวตนของผู้ใช้ และข้อมูลระบุตัวตนของผู้ดูแลระบบคือผู้ดูแลระบบ session.setAttribute("sesUserRole", "ผู้ดูแลระบบ");
//ข้ามไปยังหน้าการจัดการ response.sendRedirect("admin/admin_rest.jsp"); กลับ;
}อื่น{ //ตั้งค่าเซสชัน (sesUserRole) เพื่อระบุตัวตนของผู้ใช้ และระบุตัวตนของผู้ดูแลระบบคือผู้ใช้ session.setAttribute("sesUserRole", "ผู้ใช้");
//ข้ามไปยังหน้าผู้ใช้ปกติ response.sendRedirect("index.jsp"); กลับ; -
}อื่น{ out.println(""); กลับ; -
- } จับ (ข้อยกเว้นจ) { strExc=e.toString(); - - อธิบาย:.......
/tomcat/webapps/canyin/jsp/admin/admin_rest.jsp
รหัส: <%-- ระบบการจัดการการจัดเลี้ยงของ OddWorld (เวอร์ชันภาษาจีนตัวย่อ) 1 ธันวาคม 2545 คัดลอกขวาโดย joard ast
ฟังก์ชั่น admin_rest.jsp: หน้าการจัดการแบ็กเอนด์, หน้าการจัดการร้านอาหาร -
<%@ หน้า contentType="text/html;charset=gb2312" %> <%@ ภาษาหน้า = "java" import = "javax.xml.parsers.*" %> <%@ เพจนำเข้า = "javax.xml.transform.*" %> <%@ หน้านำเข้า = "org.w3c.dom.*" %> <%@ หน้า import="canyin.*" %>
<%@ รวมไฟล์ = "../../include/sys_dialog.jsp" %>
<%//ตรวจสอบตัวตนของผู้ใช้เพื่อพิจารณาว่าเขาเป็นผู้ดูแลระบบหรือไม่ if(!checkSessionBean.checkSessionBean(คำขอ,"sesUserRole","ผู้ดูแลระบบ")){ out.print(showDialog("คุณไม่มีสิทธิ์ของผู้ดูแลระบบ!"/index.html")); กลับ; -
//รับข้อมูลที่เกี่ยวข้องจากไฟล์ข้อมูลร้านอาหาร rest.xml เอกสารเอกสาร; ร้านอาหาร NodeList;
สตริง strAct; intintId=0; สตริง strOperation="show";
//ยอมรับพารามิเตอร์ภายนอกที่ส่งเข้ามา strAct=(String)request.getParameter("การกระทำ");
xmlBean.connXml("webapps/canyin/data/restaurants.xml"); doc=xmlBean.getXmlDoc(); ร้านอาหาร =doc.getElementsByTagName("ร้านอาหาร");
//กำหนดการทำงานของไฟล์ร้านอาหาร.xml ตามพารามิเตอร์ภายนอกที่ส่งผ่านเข้ามา ถ้า (strAct!=null){ if(strAct.equals("เพิ่มใหม่ทำ")){
สตริง strName; สตริง strPhone; สตริง strAddress; ข้อความ เช่น;
strName=(String)request.getParameter("ชื่อ").trim(); strPhone=(String)request.getParameter("โทรศัพท์").trim(); strAddress=(String)request.getParameter("ที่อยู่").trim();
//การตรวจสอบข้อมูล ถ้า(strName==null){ out.print(showDialog("ชื่อร้านอาหารไม่สามารถเว้นว่างได้!")); กลับ; - ถ้า(strPhone==null){ out.print(showDialog("หมายเลขโทรศัพท์ของร้านอาหารต้องไม่เว้นว่าง!")); กลับ; - /*ถ้า(strที่อยู่==null){ out.print(showDialog("ที่อยู่ร้านอาหารไม่สามารถเว้นว่างได้!")); กลับ; -
//ตรวจสอบความเป็นเอกลักษณ์ของข้อมูล สำหรับ(int i=0;i<ร้านอาหาร.getLength();i++){ ร้านอาหารองค์ประกอบ=(องค์ประกอบ) Restaurants.item(i); if(((String)restaurant.getElementsByTagName("ชื่อ").item(0).getFirstChild().getNodeValue()).equals(strName)){ out.print(showDialog("ชื่อร้านอาหารซ้ำ!")); กลับ; }อื่น{ if(((String)restaurant.getElementsByTagName("ชื่อ").item(0).getFirstChild().getNodeValue()).equals(strPhone)){ out.print(showDialog("หมายเลขโทรศัพท์ร้านอาหารซ้ำ!")); กลับ; - -
-
//รับจำนวนบันทึกที่มีอยู่และตั้งค่าแอตทริบิวต์รหัสส่วนเพิ่มที่ไม่ซ้ำกันสำหรับบันทึกร้านอาหารใหม่ intintNum=0; องค์ประกอบ restNum=(องค์ประกอบ)doc.getElementsByTagName("ร้านอาหาร").item(0); intNum=Integer.parseInt(restNum.getAttributeNode("num").getNodeValue());
intNum+=1;
//บวก 1 เข้ากับค่าของแอตทริบิวต์ร้านอาหาร num restNum.getAttributeNode("num").setNodeValue(String.valueOf(intNum));
//เพิ่มโหนด องค์ประกอบ newRestaurant=doc.createElement("ร้านอาหาร");
Attr newArrId=doc.createAttribute("id"); //แอตทริบิวต์ newArrId = แอตทริบิวต์ใหม่("id",String.valueOf(intNum)); textseg=doc.createTextNode(String.valueOf(intNum)); newArrId.setValue(String.valueOf(intNum)); newRestaurant.setAttributeNode (newArrId);
องค์ประกอบ newName=doc.createElement("ชื่อ"); textseg=doc.createTextNode(strName); newName.appendChild(ข้อความ); newRestaurant.appendChild (ชื่อใหม่);
องค์ประกอบ newPhone=doc.createElement("โทรศัพท์"); textseg=doc.createTextNode(strPhone); newPhone.appendChild (ข้อความเช่น); newRestaurant.appendChild (โทรศัพท์ใหม่);
องค์ประกอบ newAddress=doc.createElement("ที่อยู่"); textseg=doc.createTextNode(strAddress); newAddress.appendChild (ข้อความเช่น); newRestaurant.appendChild (ที่อยู่ใหม่);
doc.getDocumentElement().appendChild(ร้านอาหารใหม่);
//เรียก bean เพื่อเขียนไฟล์ xml ที่เกี่ยวข้อง writeXmlBean.writeXml(doc,"webapps/canyin/data/restaurants.xml");
response.sendRedirect(request.getRequestURI()); กลับ; - ถ้า(strAct.equals("modiDo")){ สตริง strName; สตริง strPhone; สตริง strAddress; ข้อความ เช่น; int modiId; //บันทึกว่ารายการใด (i) บันทึกที่จะแก้ไขคือ อินท์อินไอ=0;
strName=(String)request.getParameter("ชื่อ").trim(); strPhone=(String)request.getParameter("โทรศัพท์").trim(); strAddress=(String)request.getParameter("ที่อยู่").trim(); modiId=Integer.parseInt(request.getParameter("recordId").trim());
//การตรวจสอบข้อมูล ถ้า(strName==null){ out.print(showDialog("ชื่อร้านอาหารไม่สามารถเว้นว่างได้!")); กลับ; - ถ้า(strPhone==null){ out.print(showDialog("หมายเลขโทรศัพท์ของร้านอาหารต้องไม่เว้นว่าง!")); กลับ; - ถ้า(modiId==0){ out.print(showDialog("ไม่มีบันทึกร้านอาหารที่คุณต้องการแก้ไข!")); กลับ; - /*ถ้า(strที่อยู่==null){ out.print(showDialog("ที่อยู่ร้านอาหารไม่สามารถเว้นว่างได้!")); กลับ; -
// ตั้งค่าสถานะแสดงบันทึกที่มีอยู่ บันทึกบูลีนมีอยู่ = false;
//ตรวจสอบความเป็นเอกลักษณ์ของข้อมูล สำหรับ(int i=0;i<ร้านอาหาร.getLength();i++){ ร้านอาหารองค์ประกอบ=(องค์ประกอบ) Restaurants.item(i);
ถ้า(Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue())==modiId){ บันทึกมีอยู่=จริง; intI=ฉัน;
-
if(((String)restaurant.getElementsByTagName("ชื่อ").item(0).getFirstChild().getNodeValue()).equals(strName) && Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue() )!=modiId ){ out.print(showDialog("ชื่อร้านอาหารซ้ำ!")); กลับ; }อื่น{ if(((String)restaurant.getElementsByTagName("ชื่อ").item(0).getFirstChild().getNodeValue()).equals(strPhone) && Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue() )!=modiId ){ out.print(showDialog("หมายเลขโทรศัพท์ร้านอาหารซ้ำ!")); กลับ; - -
-
ถ้า(!บันทึกมีอยู่){ out.print(showDialog("ไม่มีบันทึกร้านอาหารที่คุณต้องการแก้ไข!")); กลับ; }อื่น{ //ทำการเปลี่ยนแปลงบันทึก พยายาม{ องค์ประกอบ modiRestaurant=(องค์ประกอบ) Restaurants.item(intI); modiRestaurant.getElementsByTagName("ชื่อ").item(0).getFirstChild().setNodeValue(strName); modiRestaurant.getElementsByTagName("โทรศัพท์").item(0).getFirstChild().setNodeValue(strPhone); modiRestaurant.getElementsByTagName("ที่อยู่").item(0).getFirstChild().setNodeValue(strAddress);
//เรียก bean เพื่อเขียนไฟล์ xml ที่เกี่ยวข้อง writeXmlBean.writeXml(doc,"webapps/canyin/data/restaurants.xml");
response.sendRedirect(request.getRequestURI()); กลับ;
}จับ(ข้อยกเว้นจ){} - - //ดำเนินการลบ ถ้า(strAct.เท่ากับ("เดล")){ int delId; //บันทึกว่ารายการใด (i) บันทึกที่จะแก้ไขคือ อินท์อินไอ=0;
delId=Integer.parseInt(request.getParameter("recordId").trim());
ถ้า(delId==0){ out.print(showDialog("ไม่มีบันทึกร้านอาหารที่คุณต้องการแก้ไข!")); กลับ; -
การตั้งค่าสถานะ file:// แสดงให้เห็นว่ามีบันทึกอยู่ บันทึกบูลีนมีอยู่ = false;
//ตรวจสอบความเป็นเอกลักษณ์ของข้อมูล สำหรับ(int i=0;i<ร้านอาหาร.getLength();i++){ ร้านอาหารองค์ประกอบ=(องค์ประกอบ) Restaurants.item(i);
ถ้า(Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue())==delId){ บันทึกมีอยู่=จริง; intI=ฉัน;
- -
ถ้า(!บันทึกมีอยู่){ out.print(showDialog("ไม่มีบันทึกร้านอาหารที่คุณต้องการลบ!")); กลับ; }อื่น{ //ดำเนินการลบบันทึก พยายาม{ โหนด delNode=(โหนด)restaurants.item(intI);
doc.getElementsByTagName("ร้านอาหาร").item(0).removeChild(delNode);
//เรียก bean เพื่อเขียนไฟล์ xml ที่เกี่ยวข้อง writeXmlBean.writeXml(doc,"webapps/canyin/data/restaurants.xml");
response.sendRedirect(request.getRequestURI()); กลับ;
}จับ(ข้อยกเว้นจ){} -
- -
//สถานะการประมวลผลที่เกี่ยวข้องของเพจถูกกำหนดโดยพารามิเตอร์ภายนอก ถ้า (strAct==null){ strOperation="แสดง"; }อื่น{ ถ้า (strAct.equals("modi")){ strOperation="โมดี"; intId=Integer.parseInt(request.getParameter("recordId")); }อื่น{ if(strAct.equals("เพิ่มใหม่")){ strOperation="เพิ่มใหม่"; }อื่น{ strOperation="แสดง"; - - -
//หากระเบียนว่างเปล่า ให้เปลี่ยนสถานะเพจเป็น "ใหม่" ถ้า (restaurants.getLength()==0){ strOperation="เพิ่มใหม่"; - -
<หัว> oddWorld Catering System หัว>
<ร่างกาย> | การจัดการระบบการจัดเลี้ยง--การจัดการร้านอาหาร | | [ออกจากระบบ] | ตาราง>
ความกว้าง="90%"> | ชื่อร้านอาหาร | หมายเลขโทรศัพท์ของร้านอาหาร | ที่อยู่ร้านอาหาร | แก้ไข | ลบ | - สำหรับ(int i=0;i - ร้านอาหารองค์ประกอบ=(องค์ประกอบ) Restaurants.item(i);
ถ้า (strOperation=="modi" && Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue())==intId){ - <%//แสดงรูปแบบที่แก้ไข%> |
<% }อื่น ๆ{ //แสดงรูปแบบปกติ %> <%=(i+1)%> | <%if(restaurant.getElementsByTagName("name").item(0).hasChildNodes()){ out.print(restaurant.getElementsByTagName("ชื่อ").item(0).getFirstChild().getNodeValue());
- | <%if(restaurant.getElementsByTagName("phone").item(0).hasChildNodes()){ out.print(restaurant.getElementsByTagName("โทรศัพท์").item(0).getFirstChild().getNodeValue());
}%> | - if(restaurant.getElementsByTagName("ที่อยู่").item(0).hasChildNodes()){ out.print(restaurant.getElementsByTagName("ที่อยู่").item(0).getFirstChild().getNodeValue());
- | "> ความสูง=15 src="../../images/edit.gif" width=15> | ความสูง=15 onClick="javascript:if(confirm(''Are youแน่ใจที่จะลบบันทึกนี้? การลบจะทำให้บันทึกใช้ไม่ได้?'')){window.location.href=''<%=request.getRequestURI()%> ? act=del&recordId=<%=restaurant.getAttributeNode("id").getNodeValue()%>'';}" src="../../images/delete.gif" style="CURSOR: มือ" width=15> | - - <% ถ้า (strOperation=="เพิ่มใหม่"){ //แสดงรูปแบบใหม่%> |
- ตาราง>
|