該例子本身開(kāi)發(fā)的起因是我在原公司和同事們一個(gè)玩笑的一部分。特此也表達(dá)對(duì)那些一起共事的朋友們的想念。
例子本身是在TOMCAT4.01 平臺(tái)下運(yùn)行的B/S結(jié)構(gòu)的程式。有關(guān)TOMCAT 的配置,這里不做說(shuō)明。只講解一下相關(guān)文件及文件夾的目錄結(jié)構(gòu)。
目錄結(jié)構(gòu)說(shuō)明:
/tomcat/webapps/canyin/ -----主目錄
/tomcat/webapps/canyin/jsp/ -----JSP 文件目錄
/tomcat/webapps/canyin/jsp/admin/ -----實(shí)現(xiàn)后臺(tái)管理的JSP 文件的存放目錄
/tomcat/webapps/canyin/WEB-INF/classes/canyin/ ------javabean 文件的存放目錄
/tomcat/webapps/canyin/data/ -----xml 文件存放目錄
/tomcat/webapps/ROOT/ -----tomcat 啟動(dòng)文件存放文件夾,只存放了index.html 文件
文件簡(jiǎn)單說(shuō)明:
/tomcat/webapps/canyin/data/users.xml -----記錄用戶信息
/tomcat/webapps/canyin/data/restaurants.xml -----記錄餐館的基礎(chǔ)信息
/tomcat/webapps/ROOT/index.html -----首頁(yè),頁(yè)面出現(xiàn)輸入框,要求用戶輸入用戶名,密碼
/tomcat/webapps/canyin/jsp/loginjudge.jsp -----用戶身份判斷頁(yè)面,根據(jù)用戶名稱和密碼決定頁(yè)面是轉(zhuǎn)入后臺(tái)管理端,還是前臺(tái)客戶端。本例子中,用戶身份一旦確認(rèn)為有管理權(quán)限,可以進(jìn)入后臺(tái)管理端,就直接跳到餐館基本信息管理頁(yè)面,簡(jiǎn)化說(shuō)明的流程。
/tomcat/webapps/canyin/jsp/admin/admin_rest.jsp -----餐館基本信息管理頁(yè)面,管理餐館的名稱,電話,地址等信息
/tomcat/webapps/canyin/WEB-INF/classes/canyin/checkSessionBean.class ----- 后臺(tái)管理端檢測(cè)標(biāo)志用戶身份的session 的值,如果不是管理員的話,跳回登陸頁(yè)面。
/tomcat/webapps/canyin/WEB-INF/classes/canyin/connXmlBean.class -----連接xml 文件
/tomcat/webapps/canyin/WEB-INF/classes/canyin/writeXmlBean.class -----寫(xiě)入xml文件
文件詳細(xì)介紹及附帶代碼說(shuō)明。
/tomcat/webapps/canyin/data/users.xml
代碼:
-
說(shuō)明:字段含義是用戶名,密碼以及用戶的身份
/tomcat/webapps/canyin/data/restaurants.xml
代碼: 代碼: 說(shuō)明:把用戶名稱和用戶密碼提交到/tomcat/webapps/canyin/jsp/loginjudge.jsp /tomcat/webapps/canyin/WEB-INF/classes/canyin/checkSessionBean.class (代碼是相應(yīng)的java 文件) package canyin; import javax.servlet.http.HttpSession; public class checkSessionBean { 說(shuō)明:檢驗(yàn)參數(shù)傳入的session 名稱的數(shù)值和參數(shù)傳入的字段的數(shù)值是否相等。 /tomcat/webapps/canyin/WEB-INF/classes/canyin/connXmlBean.class 代碼: import javax.xml.parsers.*; public class connXmlBean { 說(shuō)明:打開(kāi)一個(gè)指定xml 文件 /tomcat/webapps/canyin/WEB-INF/classes/canyin/writeXmlBean.class 代碼: import javax.xml.parsers.*; public class writeXmlBean { DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File(xmlFileName)); transformer.transform(source,result); 說(shuō)明:寫(xiě)入dom 的內(nèi)容到一個(gè)指定的xml 文件。 /tomcat/webapps/canyin/jsp/loginjudge.jsp 代碼: <%@ page contentType="text/html;charset=gb2312" %> <% strUsername=(String)request.getParameter("username"); //校驗(yàn)數(shù)據(jù)是否為空 開(kāi)發(fā)心得: doc.getElementsByTagName("restaurants").item(int i)的返回值是node 型,如果不是要調(diào)用它的屬性值,沒(méi)有必要強(qiáng)制轉(zhuǎn)型為 Element型。可以直接操作。本系統(tǒng)因?yàn)殚_(kāi)發(fā)的參考資料的錯(cuò)誤,所以全都采用了強(qiáng)制轉(zhuǎn)型。可以在以后的開(kāi)發(fā)中考慮使用node 直接進(jìn)行操作。 trim() 和 Interger.parseInt() 函數(shù)都不可以接受null 型的數(shù)值 在tomcat 下左右的文件都是目錄從TOMCAT 算起,具體情況請(qǐng)參見(jiàn)\webapps\canyin\jsp\userjudge.jsp 里關(guān)于xml 路徑的寫(xiě)法。 聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
-
-
百老匯廣場(chǎng)B座
-
南京路1023號(hào)
說(shuō)明:
/tomcat/webapps/ROOT/index.html (單純的HTML代碼)
餐飲系統(tǒng)登錄
餐飲系統(tǒng)登錄
import javax.servlet.http.HttpServletRequest;
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);
}else{
if (session!=null && session.getValue(strSessionName)!=null){
bolCheckPass=session.getValue(strSessionName).equals(strCheckValue);
}
return(bolCheckPass);
}
}
}
package canyin;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
private DocumentBuilderFactory factory=null;
private DocumentBuilder builder=null;
private Document doc=null;
public connXmlBean(){}
public String connXml(String xmlFileName){
String strExc="";
try{
factory = DocumentBuilderFactory.newInstance();
builder=factory.newDocumentBuilder();
doc=builder.parse(xmlFileName);
doc.normalize();
}catch(Exception e){
strExc=e.toString();
}
return(strExc);
}
public Document getXmlDoc(){
return(doc);
}
}
package canyin;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import org.w3c.dom.*;
public writeXmlBean(){}
public String writeXml(Document doc,String xmlFileName){
String strExc="";
try{
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer transformer = tfactory.newTransformer();
}catch(Exception e){
strExc=e.toString();
}
return(strExc);
}
}
<%-- oddWorld 餐飲管理系統(tǒng)(簡(jiǎn)體中文版) 2002年12月1日
copy right by joard ast
loginjudge.jsp 功能:用戶身份校驗(yàn),根據(jù) /data/user.xml 文件內(nèi)標(biāo)示的用戶不同的身份
決定轉(zhuǎn)入后臺(tái)管理頁(yè)面,還是客戶點(diǎn)菜頁(yè)面。
--%>
<%@ page language="java" import="javax.xml.parsers.*" %>
<%@ page import="org.w3c.dom.*" %>
<%@ page import="canyin.*" %>
session.setMaxInactiveInterval(1800);
Document doc;
NodeList users;
String strExc="";
String strUsername,strPassword;
strPassword=(String)request.getParameter("userpass");
if (strUsername=="" || strPassword=="" ){
out.println("
說(shuō)明:本文件的書(shū)寫(xiě)有很多地方并不簡(jiǎn)練,因?yàn)樵诔淌降拈_(kāi)發(fā)過(guò)程中,過(guò)分簡(jiǎn)練的程序往往會(huì)帶來(lái)后期維護(hù)的困難。
對(duì)原代碼感興趣的朋友請(qǐng)通過(guò)如下信箱和我聯(lián)系,joard@163.com