useBeanid="UserAdmin"scope="page"class="com.mg.admin.UserAdmin"/>
<%
UserAdmin.setRootPath(application.getRealPath("/data/"));
Stringuid=request.getParameter("account");
Stringpwd=request.getParameter("pwd");
Stringresult=UserAdmin.login(uid,pwd);
if((result.equals("Admin"))||(result.equals("User"))){
session.setAttribute("LoginSign","True");
session.setAttribute("UID",uid);
session.setAttribute("Type",result);
response.sendRedirect("loginsuccess.jsp");
}else{
response.sendRedirect("loginfailed.jsp");}
%>
在该页面的第4行设置获取XML文件的路径,第5—6行接收登录用户提交的帐号和密码,第7行调用JavaBean中的检查用户登录是否成功的方法,第8行判断登录用户的身份,并将用户登录成功的表示以及登录用户的级别保存在瑟session中,第12行表示登录成功则壮乡登录成功页面,第14行表示登录失败则转向登录失败页面。
在该页面中首先引入JavaBean类UserAdmin,在该类中定义了负责解析XML文件的方法,该类中的验证登录用户身份是否合法的login()方法的具体定义代码如下。
publicStringlogin(Stringuid,Stringpwd){
Documentdoc=getDoc();
if(doc!
=null){//获取根节点
Elementroot=doc.getRootElement();
Listlist=root.getChildren();
Iteratorlist_i=list.iterator();
while(list_i.hasNext()){//获取子节点
Elemente=(Element)list_i.next();//获取二级子节点
Iteratorrow_i=e.getChildren().iterator();
while(row_i.hasNext()){
Elementee=(Element)row_i.next();
if(ee.getName().equals("userid")){
if(!
ee.getText().equals(uid)){
break;}}
if(ee.getName().equals("password")){
if(!
ee.getText().equals(pwd)){
break;}}
if(ee.getName().equals("type")){
returnee.getText();}}}}
return"";
}
在该类中,第4行获取XML文档的根节点,第8行获取根节点的子节点,第9行获取根节点的二级子节点,第12-22行判断输入的登录帐号和密码是否与XML文档中存储的相吻合。
3.2注册帐号
以管理员的身份登录后,单击系统主页面左侧菜单栏中的“注册帐号”链接,将显示如图4所示的注册帐号页面。
图4
在该页面中可以输入新注册帐号的各种信息,其中,在输入新帐号名称的时候,可以单击右边的“检测帐号”链接来检测在系统中是否已经存在该名称的帐号。
这个操作将有JavaBean泪UserAdmin中的checkUser()方法完成,该方法的具体定义代码如下。
publicbooleancheckUser(Stringuid){
Documentdoc=getDoc();
if(doc!
=null){
Listlist;//获取根节点
Elementroot=doc.getRootElement();
list=root.getChildren();
Iteratorlist_i=list.iterator();
while(list_i.hasNext()){//获取子节点
Elemente=(Element)list_i.next();//获取二级子节点
Iteratorrow_i=e.getChildren().iterator();
while(row_i.hasNext()){
Elementee=(Element)row_i.next();
if((ee.getName().equals("userid"))&&
(ee.getText().equals(uid))){
returntrue;}}}}
returnfalse;
}
该方法中第5行获取XML文档的根节点,第9行获取子节点,第10行获取二级子节点,在第11-15行开始遍历所有子节点,用来检测是否新注册的用户名已经存在。
如果该方法返回false,则表示该用户名在系统中不存在,可以使用。
然后在页面中单击“注册”按钮,则可以将新注册的帐号信息保存到users.xml。
该操作将由JavaBean类UserAdmin中的register()方法完成,该方法的具体定义代码如下。
publicbooleanregister(Stringuid,Stringpwd,
Stringname,Stringsex,
Stringage,Stringtel,
Stringaddress,Stringemail){
booleanret=false;
Documentdoc=getDoc();
if(doc!
=null){//获取根节点
Elementroot=doc.getRootElement();
Listlist=root.getChildren();
ElementnewE=newElement("user");
ElementeUserID=newElement("userid");
eUserID.setText(uid);
newE.addContent(eUserID);
ElementePassword=newElement("password");
ePassword.setText(pwd);
newE.addContent(ePassword);
ElementeName=newElement("name");
eName.setText(name);
newE.addContent(eName);
ElementeSex=newElement("sex");
eSex.setText(sex);
newE.addContent(eSex);
ElementeAge=newElement("age");
eAge.setText(age);
newE.addContent(eAge);
ElementeTel=newElement("tel");
eTel.setText(tel);
newE.addContent(eTel);
ElementeAddress=newElement("address");
eAddress.setText(address);
newE.addContent(eAddress);
ElementeEmail=newElement("email");
eEmail.setText(email);
newE.addContent(eEmail);
ElementeType=newElement("type");
eType.setText(USER_TYPE_USER);
newE.addContent(eType);
root.addContent(newE);
//list.add(newE);//保存修改
save(doc);
ret=true;}
returnret;
}
在该方法的第8行获取XML文档的根节点,第10-38行创建表示帐号信息的元素及其子元素,第39行调用底48-59行定义的save()方法,将添加的元素添加到根元素上。
3.3修改帐号信息
单击系统主页面左侧菜单栏中的“修改信息”链接,将显示如图5所示的修改帐号信息页面。
图5
我们可以看到,在该页面中将首相显示当前登录帐号的信息,这是由JavaBean类UserAdmin中的getUserInfo()方法完成的,该方法的具体定义代码如下。
publicHashtablegetUserInfo(Stringuid){
Hashtableht=newHashtable();
Documentdoc=getDoc();
if(doc!
=null){//获取根节点
Elementroot=doc.getRootElement();
Listlist=root.getChildren();
Iteratorlist_i=list.iterator();
ElementuserNode=null;
while(list_i.hasNext()){//获取子节点
Elemente=(Element)list_i.next();//获取二级子节点
Iteratorrow_i=e.getChildren().iterator();
while(row_i.hasNext()){
Elementee=(Element)row_i.next();
if((ee.getName().equals("userid"))&&
(ee.getText().equals(uid))){
userNode=e;
break;}}//找到user节点后,退出循环
if(userNode!
=null){
row_i=userNode.getChildren().iterator();
while(row_i.hasNext()){
Elementee=(Element)row_i.next();
ht.put(ee.getName(),ee.getText());}
break;}}}
returnht;}
}
该方法的第5行获取XML文档的根节点,第10行获取根节点的子节点,第11行获取二级子节点,第12-18行对这些子节点进行循环遍历,直到第20行判断是否找到user节点,如果找到,则退出循环。
用户可以在页面中修改帐号的信息,修改完成后,点击“保存”按钮,将把修改后的账号信息保存到users.xml文件中。
该操作将由JavaBean类UserAdmin中的modify()方法完成,该方法的具体定义代码如下:
publicbooleanmodify(Stringuid,Stringpwd,
Stringname,Stringsex,
Stringage,Stringtel,
Stringaddress,Stringemail){
booleanret=false;
Documentdoc=getDoc();
if(doc!
=null){
String[]params=newString[8];
params[0]=uid;
params[1]=pwd;
params[2]=name;
params[3]=sex;
params[4]=age;
params[5]=tel;
params[6]=address;
params[7]=email;//获取根节点
Elementroot=doc.getRootElement();
Listlist=root.getChildren();
Iteratorlist_i=list.iterator();
ElementuserNode=null;
while(list_i.hasNext()){//获取子节点
Elemente=(Element)list_i.next();//获取二级子节点
Iteratorrow_i=e.getChildren().iterator();
while(row_i.hasNext()){
Elemente