手机
当前位置:查字典教程网 >编程开发 >JSP教程 >使用JSP + JAVABEAN + XML 开发的一个例子
使用JSP + JAVABEAN + XML 开发的一个例子
摘要:本例子是参考了一些网站上有关JSP对XML的操作的相关文档,又结合了一些个人的体会。例子涉及的内容是,开发的一个企业内部定餐系统后台管理端的...

本例子是参考了一些网站上有关JSP对XML的操作的相关文档,又结合了一些个人的体会。例子涉及的内容是,开发的一个企业内部定餐系统后台管理端的部分代码,功能主要集中在对于餐馆基本信息的管理。

该例子本身开发的起因是我在原公司和同事们一个玩笑的一部分。特此也表达对那些一起共事的朋友们的想念。

例子本身是在TOMCAT4.01平台下运行的B/S结构的程式。有关TOMCAT的配置,这里不做说明。只讲解一下相关文件及文件夹的目录结构。

目录结构说明:

/tomcat/webapps/canyin/-----主目录

/tomcat/webapps/canyin/jsp/-----JSP文件目录

/tomcat/webapps/canyin/jsp/admin/-----实现后台管理的JSP文件的存放目录

/tomcat/webapps/canyin/WEB-INF/classes/canyin/------javabean文件的存放目录

/tomcat/webapps/canyin/data/-----xml文件存放目录

/tomcat/webapps/ROOT/-----tomcat启动文件存放文件夹,只存放了index.html文件

文件简单说明:

/tomcat/webapps/canyin/data/users.xml-----记录用户信息

/tomcat/webapps/canyin/data/restaurants.xml-----记录餐馆的基础信息

/tomcat/webapps/ROOT/index.html-----首页,页面出现输入框,要求用户输入用户名,密码

/tomcat/webapps/canyin/jsp/loginjudge.jsp-----用户身份判断页面,根据用户名称和密码决定页面是转入后台管理端,还是前台客户端。本例子中,用户身份一旦确认为有管理权限,可以进入后台管理端,就直接跳到餐馆基本信息管理页面,简化说明的流程。

/tomcat/webapps/canyin/jsp/admin/admin_rest.jsp-----餐馆基本信息管理页面,管理餐馆的名称,电话,地址等信息

/tomcat/webapps/canyin/WEB-INF/classes/canyin/checkSessionBean.class-----后台管理端检测标志用户身份的session的值,如果不是管理员的话,跳回登陆页面。

/tomcat/webapps/canyin/WEB-INF/classes/canyin/connXmlBean.class-----连接xml文件

/tomcat/webapps/canyin/WEB-INF/classes/canyin/writeXmlBean.class-----写入xml文件

文件详细介绍及附带代码说明。

/tomcat/webapps/canyin/data/users.xml

代码:

<?xmlversion="1.0"encoding="UTF-8"?>

-<users>

<username="joard"password="joard"roles="admin"/>

<username="joard01"password="joard01"roles="user"/>

<username="joard02"password="joard02"roles="user"/>

</users>

说明:字段含义是用户名,密码以及用户的身份

/tomcat/webapps/canyin/data/restaurants.xml

代码:

<?xmlversion="1.0"encoding="UTF-8"?>

-<restaurantsnum="10">

-<restaurantid="1">

<name>上海亭快餐店</name>

<phone>021-76546726</phone>

<address>百老汇广场B座</address>

</restaurant>

-<restaurantid="8">

<name>香格里拉大饭店</name>

<phone>021-2312134</phone>

<address>南京路1023号</address>

</restaurant>

</restaurants>

说明:<num>属性是记录在restaurants.xml文件中总共有过多少条记录,每新增一条,无论以后删除是否,该值都会增加1,就好象数据库中习惯使用的自动增加1的id项。用来给新增的<restaurant>的属性<id>赋一个唯一的值。其它的字段意思比较明显。

/tomcat/webapps/ROOT/index.html(单纯的HTML代码)

代码:

<html>

<head>

<title>oddWorld餐饮系统</title>

<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">

</head>

<bodyonload="javascript:dataform.username.focus()">

<divalign="center">

<tablewidth="100%"border="0"cellspacing="0"cellpadding="0"height="22">

<tr>

<tdwidth="1"><imgsrc="images/top_r1.GIF"width="62"height="22"></td>

<tdwidth=150align="center">餐饮系统登录</td>

<td><imgsrc="images/top_r2.GIF"width="294"height="22"></td>

</tr>

</table>

<br>

<br>

<tablewidth="300"border="0"cellspacing="1"cellpadding="0">

<tr>

<tdheight="200"valign="top"align="center">

<palign="center">

<tablewidth="100%"border="0"cellspacing="1"cellpadding="5"bgcolor=#999999class=a9px>

<tr>

<tdbgcolor="#efefef">餐饮系统登录</td>

</tr>

<tr>

<tdbgcolor="#FFFFFF"valign="top"align="center">

<tablewidth="100%"border="0"cellspacing="0"cellpadding="0">

<formname=dataformmethod=postaction=''canyin/jsp/loginjudge.jsp''>

<tr>

<tdwidth="100"><b>登录名:</b></td>

<td>

<inputmaxlength=16

name="username"class=steditvalue="joard">

</td>

</tr>

<tr>

<tdwidth="100"><b>密码:</b></td>

<td>

<inputclass=steditmaxlength=16

name="userpass"type=passwordvalue="oddworld">

</td>

</tr>

</form>

</table>

<br>

<tableborder=0cellpadding=0cellspacing=0>

<tbody>

<tr>

<td>

<inputclass=stbtmname=updateonClick="javascript:if(checkform()==false);"type=buttonvalue="登录">

</td>

<td></td>

<td>

<inputclass=stbtmname=SubmitonClick="javascript:window.location.href=''index.asp?myjoke=1'';"type=buttonvalue="修改密码">

</td>

<td></td>

</tr>

</tbody>

</table>

<br>

</td>

</tr>

</table>

</td>

</tr>

</table>

</div>

</body>

</html>

<SCRIPTlanguage=javascript>

<>

</SCRIPT>

说明:把用户名称和用户密码提交到/tomcat/webapps/canyin/jsp/loginjudge.jsp

/tomcat/webapps/canyin/WEB-INF/classes/canyin/checkSessionBean.class(代码是相应的java文件)

packagecanyin;

importjavax.servlet.http.HttpSession;

importjavax.servlet.http.HttpServletRequest;

publicclasscheckSessionBean{

privatebooleanbolCheckPass=false;

privateHttpServletRequestrequest=null;

publicbooleancheckSessionBean(HttpServletRequestrequest,StringstrSessionName,StringstrCheckValue){

publicbooleancheckSessionBean(HttpServletRequestrequest){

HttpSessionsession=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);

}

}

}

说明:检验参数传入的session名称的数值和参数传入的字段的数值是否相等。

/tomcat/webapps/canyin/WEB-INF/classes/canyin/connXmlBean.class

代码:

packagecanyin;

importjavax.xml.parsers.*;

importjavax.xml.transform.*;

importjavax.xml.transform.dom.DOMSource;

importjavax.xml.transform.stream.StreamResult;

importorg.w3c.dom.*;

publicclassconnXmlBean{

privateDocumentBuilderFactoryfactory=null;

privateDocumentBuilderbuilder=null;

privateDocumentdoc=null;

publicconnXmlBean(){}

publicStringconnXml(StringxmlFileName){

StringstrExc="";

try{

factory=DocumentBuilderFactory.newInstance();

builder=factory.newDocumentBuilder();

doc=builder.parse(xmlFileName);

doc.normalize();

}catch(Exceptione){

strExc=e.toString();

}

return(strExc);

}

publicDocumentgetXmlDoc(){

return(doc);

}

}

说明:打开一个指定xml文件

/tomcat/webapps/canyin/WEB-INF/classes/canyin/writeXmlBean.class

代码:

packagecanyin;

importjavax.xml.parsers.*;

importjavax.xml.transform.*;

importjavax.xml.transform.dom.DOMSource;

importjavax.xml.transform.stream.StreamResult;

importjava.io.File;

importorg.w3c.dom.*;

publicclasswriteXmlBean{

publicwriteXmlBean(){}

publicStringwriteXml(Documentdoc,StringxmlFileName){

StringstrExc="";

try{

TransformerFactorytfactory=TransformerFactory.newInstance();

Transformertransformer=tfactory.newTransformer();

DOMSourcesource=newDOMSource(doc);

StreamResultresult=newStreamResult(newFile(xmlFileName));

transformer.transform(source,result);

}catch(Exceptione){

strExc=e.toString();

}

return(strExc);

}

}

说明:写入dom的内容到一个指定的xml文件。

/tomcat/webapps/canyin/jsp/loginjudge.jsp

代码:

<%--oddWorld餐饮管理系统(简体中文版)2002年12月1日

copyrightbyjoardast

loginjudge.jsp功能:用户身份校验,根据/data/user.xml文件内标示的用户不同的身份

决定转入后台管理页面,还是客户点菜页面。

--%>

<%@pagecontentType="text/html;charset=gb2312"%>

<%@pagelanguage="java"import="javax.xml.parsers.*"%>

<%@pageimport="org.w3c.dom.*"%>

<%@pageimport="canyin.*"%>

<jsp:useBeanid="xmlBean"class="canyin.connXmlBean"scope="page"/>

<%

session.setMaxInactiveInterval(1800);

Documentdoc;

NodeListusers;

StringstrExc="";

StringstrUsername,strPassword;

strUsername=(String)request.getParameter("username");

strPassword=(String)request.getParameter("userpass");

//校验数据是否为空

if(strUsername==""||strPassword==""){

out.println("<scriptlanguage=''javascript''>");

out.println("alert(''用户名或密码有空值!'');");

out.println("window.location.href=''/index.html'';");

out.println("</script>");

return;

}

xmlBean.connXml("webapps/canyin/data/users.xml");

doc=xmlBean.getXmlDoc();

try{

users=doc.getElementsByTagName("user");

for(inti=0;i<users.getLength();i++){

Elementuser=(Element)users.item(i);

StringstrAtrNameValue=user.getAttributeNode("name").getNodeValue();

StringstrAtrPassWordValue=user.getAttributeNode("password").getNodeValue();

StringstrAtrRoleValue=user.getAttributeNode("roles").getNodeValue();

if(strAtrNameValue.equals(strUsername)&&strAtrPassWordValue.equals(strPassword)){

if(strAtrRoleValue.equals("admin")){

out.println("<scriptlanguage=''javascript''>");

out.println("alert(''欢迎管理员登陆系统!'');");

out.println("</script>");

//设置标示用户身份的session(sesUserRole),管理员身份为admin

session.setAttribute("sesUserRole","admin");

//跳转到管理页面

response.sendRedirect("admin/admin_rest.jsp");

return;

}else{

//设置标示用户身份的session(sesUserRole),管理员身份为user

session.setAttribute("sesUserRole","user");

//跳转到普通用户页面

response.sendRedirect("index.jsp");

return;

}

}else{

out.println("<scriptlanguage=''javascript''>");

out.println("alert(''用户名或密码错误!'');");

out.println("history.go(-1);");

out.println("</script>");

return;

}

}

}catch(Exceptione){

strExc=e.toString();

}

%>

说明:.......

/tomcat/webapps/canyin/jsp/admin/admin_rest.jsp

代码:

<%--oddWorld餐饮管理系统(简体中文版)2002年12月1日

copyrightbyjoardast

admin_rest.jsp功能:后台管理页面,餐馆管理页面。

--%>

<%@pagecontentType="text/html;charset=gb2312"%>

<%@pagelanguage="java"import="javax.xml.parsers.*"%>

<%@pageimport="javax.xml.transform.*"%>

<%@pageimport="org.w3c.dom.*"%>

<%@pageimport="canyin.*"%>

<%@includefile="../../include/sys_dialog.jsp"%>

<jsp:useBeanid="checkSessionBean"class="canyin.checkSessionBean"scope="page"/>

<jsp:useBeanid="xmlBean"class="canyin.connXmlBean"scope="page"/>

<jsp:useBeanid="writeXmlBean"class="canyin.writeXmlBean"scope="page"/>

<%//校验可户身份,判断是不是管理员

if(!checkSessionBean.checkSessionBean(request,"sesUserRole","admin")){

out.print(showDialog("您没有管理的权限!","/index.html"));

return;

}

//从餐馆资料文件rest.xml中得到相关数据

Documentdoc;

NodeListrestaurants;

StringstrAct;

intintId=0;

StringstrOperation="show";

//接受外部传入的参数

strAct=(String)request.getParameter("act");

xmlBean.connXml("webapps/canyin/data/restaurants.xml");

doc=xmlBean.getXmlDoc();

restaurants=doc.getElementsByTagName("restaurant");

//根据外部传入的参数来决定对restaurant.xml文件的操作

if(strAct!=null){

if(strAct.equals("addnewDo")){

StringstrName;

StringstrPhone;

StringstrAddress;

Texttextseg;

strName=(String)request.getParameter("name").trim();

strPhone=(String)request.getParameter("phone").trim();

strAddress=(String)request.getParameter("address").trim();

//数据校验

if(strName==null){

out.print(showDialog("餐馆名称不能为空!"));

return;

}

if(strPhone==null){

out.print(showDialog("餐馆电话不能为空!"));

return;

}

/*if(strAddress==null){

out.print(showDialog("餐馆地址不能为空!"));

return;

}*/

//校验数据的唯一性

for(inti=0;i<restaurants.getLength();i++){

Elementrestaurant=(Element)restaurants.item(i);

if(((String)restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()).equals(strName)){

out.print(showDialog("餐馆名称重复!"));

return;

}else{

if(((String)restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()).equals(strPhone)){

out.print(showDialog("餐馆电话重复!"));

return;

}

}

}

//得到已有的记录数,给新增的餐馆记录设定唯一的递增的id属性

intintNum=0;

ElementrestNum=(Element)doc.getElementsByTagName("restaurants").item(0);

intNum=Integer.parseInt(restNum.getAttributeNode("num").getNodeValue());

intNum+=1;

//为restaurants的属性num的数值加1

restNum.getAttributeNode("num").setNodeValue(String.valueOf(intNum));

//新增节点

ElementnewRestaurant=doc.createElement("restaurant");

AttrnewArrId=doc.createAttribute("id");

//AttributenewArrId=newAttribute("id",String.valueOf(intNum));

textseg=doc.createTextNode(String.valueOf(intNum));

newArrId.setValue(String.valueOf(intNum));

newRestaurant.setAttributeNode(newArrId);

ElementnewName=doc.createElement("name");

textseg=doc.createTextNode(strName);

newName.appendChild(textseg);

newRestaurant.appendChild(newName);

ElementnewPhone=doc.createElement("phone");

textseg=doc.createTextNode(strPhone);

newPhone.appendChild(textseg);

newRestaurant.appendChild(newPhone);

ElementnewAddress=doc.createElement("address");

textseg=doc.createTextNode(strAddress);

newAddress.appendChild(textseg);

newRestaurant.appendChild(newAddress);

doc.getDocumentElement().appendChild(newRestaurant);

//调用bean写入相应的xml文件

writeXmlBean.writeXml(doc,"webapps/canyin/data/restaurants.xml");

response.sendRedirect(request.getRequestURI());

return;

}

if(strAct.equals("modiDo")){

StringstrName;

StringstrPhone;

StringstrAddress;

Texttextseg;

intmodiId;

//记录要修改的记录是item(i)的哪一项

intintI=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());

//数据校验

if(strName==null){

out.print(showDialog("餐馆名称不能为空!"));

return;

}

if(strPhone==null){

out.print(showDialog("餐馆电话不能为空!"));

return;

}

if(modiId==0){

out.print(showDialog("你要修改餐馆的记录不存在!"));

return;

}

/*if(strAddress==null){

out.print(showDialog("餐馆地址不能为空!"));

return;

}*/

//标志显示记录存在

booleanrecordExist=false;

//校验数据的唯一性

for(inti=0;i<restaurants.getLength();i++){

Elementrestaurant=(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("餐馆名称重复!"));

return;

}else{

if(((String)restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()).equals(strPhone)&&Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue())!=modiId){

out.print(showDialog("餐馆电话重复!"));

return;

}

}

}

if(!recordExist){

out.print(showDialog("你要修改餐馆的记录不存在!"));

return;

}else{

//进行记录更改的操作

try{

ElementmodiRestaurant=(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);

//调用bean写入相应的xml文件

writeXmlBean.writeXml(doc,"webapps/canyin/data/restaurants.xml");

response.sendRedirect(request.getRequestURI());

return;

}catch(Exceptione){}

}

}

//进行删除操作

if(strAct.equals("del")){

intdelId;

//记录要修改的记录是item(i)的哪一项

intintI=0;

delId=Integer.parseInt(request.getParameter("recordId").trim());

if(delId==0){

out.print(showDialog("你要修改餐馆的记录不存在!"));

return;

}

file://标志显示记录存在

booleanrecordExist=false;

//校验数据的唯一性

for(inti=0;i<restaurants.getLength();i++){

Elementrestaurant=(Element)restaurants.item(i);

if(Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue())==delId){

recordExist=true;

intI=i;

}

}

if(!recordExist){

out.print(showDialog("你要删除餐馆的记录不存在!"));

return;

}else{

//进行记录删除的操作

try{

NodedelNode=(Node)restaurants.item(intI);

doc.getElementsByTagName("restaurants").item(0).removeChild(delNode);

//调用bean写入相应的xml文件

writeXmlBean.writeXml(doc,"webapps/canyin/data/restaurants.xml");

response.sendRedirect(request.getRequestURI());

return;

}catch(Exceptione){}

}

}

}

//由外部传入参数决定页面相应的处理状态

if(strAct==null){

strOperation="show";

}else{

if(strAct.equals("modi")){

strOperation="modi";

intId=Integer.parseInt(request.getParameter("recordId"));

}else{

if(strAct.equals("addnew")){

strOperation="addnew";

}else{

strOperation="show";

}

}

}

//如果为空记录,则变更页面状态为“新增”

if(restaurants.getLength()==0){

strOperation="addnew";

}

%>

<html>

<head>

<title>oddWorld餐饮系统</title>

<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">

<metahttp-equiv="expires"content="0">

<linkrel="stylesheet"href="../../include/itsp.css"type="text/css">

</head>

<body>

<divalign="center">

<tablewidth="100%"border="0"cellspacing="0"cellpadding="0"height="22">

<tr>

<tdwidth="1"><imgsrc="../../images/top_r1.GIF"width="62"height="22"></td>

<tdwidth=150align="center">餐饮系统管理--餐馆管理</td>

<td><imgsrc="../../images/top_r2.GIF"width="294"height="22"></td>

<tdwidth=100align="center"><ahref="/index.html">[退出系统]</a></td>

</tr>

</table>

<br>

<br>

<tablebgcolor="#999999"align=centerborder=0cellpadding=1cellspacing=1

width="90%">

<tbody>

<trbgcolor="#efefef"align="center"valign="middle">

<tdclass=ttTableheight=30width="20"></td>

<tdclass=ttTableheight=30width="0">餐馆名称</td>

<tdclass=ttTableheight=30width="0">餐馆电话</td>

<tdclass=ttTableheight=30width="0">

<divalign="center">餐馆地址</div>

</td>

<tdclass=ttTableheight=30width="30">

<divalign="center">修改</div>

</td>

<tdclass=ttTableheight=30width="30">

<divalign="center">删除</div>

</td>

</tr>

<%

for(inti=0;i<restaurants.getLength();i++)

{

Elementrestaurant=(Element)restaurants.item(i);

if(strOperation=="modi"&&Integer.parseInt(restaurant.getAttributeNode("id").getNodeValue())==intId){

%>

<%//显示修改的格式%>

<tralign="center"bgcolor="#ffffff"valign="middle">

<formname=dataformaction="<%=request.getRequestURI()%>?act=modiDo"method="post"onSubmit=''returncheckform(this);''>

<tdclass=tdsmallheight=25width="20">

<inputtype="hidden"name="recordId"value="<%=restaurant.getAttributeNode("id").getNodeValue()%>">

<%=(i+1)%></td>

<tdclass=tdsmallheight=25>

<inputname="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>

<tdclass=tdsmallheight=25>

<inputname="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>

<tdclass=tdsmallheight=25>

<inputname="address"class=stedit

style="HEIGHT:22px;WIDTH:200px"value="<%

if(restaurant.getElementsByTagName("address").item(0).hasChildNodes()){

out.print(restaurant.getElementsByTagName("address").item(0).getFirstChild().getNodeValue());

}%>"maxlength="100">

</td>

<tdclass=tdsmallheight=25width="25"><ahref="javascript:if(checkform()==false);"><imgborder=0

height=15src="../../images/editok.gif"width=15></a></td>

<tdclass=tdsmallheight=25width="25"></td>

</form>

</tr>

<%}else{

//显示正常的格式%>

<tralign="center"bgcolor="#ffffff"valign="middle">

<tdclass=tdsmallheight=25width="20"><%=(i+1)%></td>

<tdclass=tdsmallheight=25width="0"><%if(restaurant.getElementsByTagName("name").item(0).hasChildNodes()){

out.print(restaurant.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());

}%>

</td>

<tdclass=tdsmallheight=25width="0"><%if(restaurant.getElementsByTagName("phone").item(0).hasChildNodes()){

out.print(restaurant.getElementsByTagName("phone").item(0).getFirstChild().getNodeValue());

}%></td>

<tdclass=tdsmallheight=25width="0">

<%

if(restaurant.getElementsByTagName("address").item(0).hasChildNodes()){

out.print(restaurant.getElementsByTagName("address").item(0).getFirstChild().getNodeValue());

}%>

</td>

<tdclass=tdsmallheight=25width="30"><ahref="<%=request.getRequestURI()%>?act=modi&recordId=<%=restaurant.getAttributeNode("id").getNodeValue()%>"><imgborder=0

height=15src="../../images/edit.gif"width=15></a></td>

<tdclass=tdsmallheight=25width="30"><imgborder=0

height=15

onClick="javascript:if(confirm(''您是否确定删除本记录,删除后将导至记录无法使用?'')){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"){

//显示新增的格式%>

<tralign="center"bgcolor="#ffffff"valign="middle">

<formname=dataform2action="<%=request.getRequestURI()%>?act=addnewDo"method="post"onSubmit=''returncheckform2(this);''>

<tdclass=tdsmallheight=25width="20"></td>

<tdclass=tdsmallheight=25>

<inputname="name"class=stedit

style="HEIGHT:22px;WIDTH:150px"value=""maxlength="40">

</td>

<tdclass=tdsmallheight=25>

<inputname="phone"class=stedit

style="HEIGHT:22px;WIDTH:100px"value=""maxlength="20">

</td>

<tdclass=tdsmallheight=25>

<inputname="address"class=stedit

style="HEIGHT:22px;WIDTH:200px"value=""maxlength="100">

</td>

<tdclass=tdsmallheight=25width="25"><ahref="javascript:if(checkform2()==false);"><imgborder=0

height=15src="../../images/editok.gif"width=15></a></td>

<tdclass=tdsmallheight=25width="25"></td>

</form>

</tr>

<%}%>

</tbody>

</table>

<br>

<tablealign=centerborder=0cellpadding=0cellspacing=2width="95%">

<tbody>

<trvalign=center>

<tdalign=middle><br>

<tableborder=0cellpadding=0cellspacing=0>

<tr>

<td>

<%if(strOperation=="addnew"){

%>

<inputclass=stbtmname=updateonClick="javascript:if(checkform2()==false);"type=buttonvalue="更新记录">

<%}else{

if(strOperation=="modi"){

%>

<inputclass=stbtmname=updateonClick="javascript:if(checkform()==false);"type=buttonvalue="更新记录">

<%

}else{

%>

<inputclass=stbtmtype="button"name="Button"value="新增"onClick="javascript:window.location.href=''<%=request.getRequestURI()%>?act=addnew'';"><%

}

}%>

</td>

<td>

<inputclass=stbtmtype="button"name="Button"value="返回"onClick="javascript:window.location.href=''index.jsp'';">

</td>

</tr>

</table>

</td>

</tr>

</table>

<p></p>

</div>

</body>

</html>

<SCRIPTLANGUAGE=javascript>

<>

</SCRIPT>

说明:本文件的书写有很多地方并不简练,因为在程式的开发过程中,过分简练的程序往往会带来后期维护的困难。

开发心得:

doc.getElementsByTagName("restaurants").item(inti)的返回值是node型,如果不是要调用它的属性值,没有必要强制转型为Element型。可以直接操作。本系统因为开发的参考资料的错误,所以全都采用了强制转型。可以在以后的开发中考虑使用node直接进行操作。

trim()和Interger.parseInt()函数都不可以接受null型的数值

在tomcat下左右的文件都是目录从TOMCAT算起,具体情况请参见webappscanyinjspuserjudge.jsp里关于xml路径的写法。

对原代码感兴趣的朋友请通过如下信箱和我联系,joard@163.com

【使用JSP + JAVABEAN + XML 开发的一个例子】相关文章:

JSP中使用JDBC访问SQL Server 2008数据库示例

使用maven+eclipse搭建struts2开发环境

JSP开发入门(三)--JSP与JavaBean

用JSP实现数据库图片的存储与显示实例

如何用JSP编写文件上传

使用JSP读取客户端信息

JSP XMLHttpRequest动态无刷新及其中文乱码处理

使用JavaBean创建您的网上日历本(1)

JSP EL表达式详细介绍

JSP教程:tomcat6关于EL表达式的一个错误

精品推荐
分类导航