xml实现登录表单验证

时间:2023-02-23 15:48:21

定义:

  XML(eXtended Markup Language,可扩展标记语言)提供了一套跨平台、跨网络、跨程序的语言的数据描述方式,使用XML可以方便地实现数据交换、系统配置、内容管理等常见功能。

XML解析:

  在XML文件中由于更多的是描述信息的内容,所以在得到一个XML文档后应该利用程序按照其中元素的定义名称取出相应的内容,这样的操作就称为XML解析。XML解析有两种方式,SAX和DOM解析方式。

  1)DOM解析与用户登录

  登录表单(login.jsp):

 <%@page contentType="text/html;charset=gb2312"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>登录</title></head>
<body>
<form action="login_xml.jsp" method="post">
用户名:<input type="text" name="name">
密&nbsp;码:<input type="password" name="password">
<select name="type">
<option value="student" selected="selected">学生登录</option>
<option value="teacher">教师登录</option>
<option value="admin">管理员登录</option>
</select>
<select name="database">
<option value="oracle" selected="selected">oracle数据库</option>
<option value="sqlserver">sqlserver数据库</option>
<option value="dom">通过xml文件验证</option>
</select>
<input type="submit" value="登录" />
<input type="reset" value="清除">
</form>
</body>
</html>

  XML文件(student_login.xml):

 <?xml version="1.0" encoding="UTF-8"?>
<user>
<student>
<name>王定</name>
<password>123</password>
</student>
<teacher>
<name>黄艳娟</name>
<password>111</password>
</teacher>
<admin>
<name>奥巴马</name>
<password>588</password>
</admin>
</user>

  登录验证(login_xml.jsp):

 <%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="gb2312"%>
<%@page import="java.io.*,org.w3c.dom.*,javax.xml.parsers.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>登录验证</title>
</head>
<body>
<%
String name=request.getParameter("name");
name=new String(name.getBytes("ISO-8859-1"), "gb2312"); //处理乱码
String password=request.getParameter("password");
String user=request.getParameter("type");
String database=request.getParameter("database"); //获得数据库类型信息
boolean login_tag=false; System.out.println(name);
System.out.println(password);
System.out.println(user);
System.out.println(database); // 取得DocumentBuilderFactory类的对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance() ;
// 取得DocumentBuilder类的对象
DocumentBuilder build = factory.newDocumentBuilder() ;
Document doc = build.parse(new File("E:" + File.separator + "eclipse" + File.separator+"wd_eclipse"+
File.separator+"webconfig"+File.separator+"student_login.xml")) ; //xml文件路径 NodeList nl = doc.getElementsByTagName("student") ;
Element e1 = (Element) nl.item(0) ; // 取出每一个元素
String studentName=e1.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
String studentPassword=e1.getElementsByTagName("password").item(0).getFirstChild().getNodeValue() ; NodeList n2 = doc.getElementsByTagName("teacher") ;
Element e2 = (Element) n2.item(0) ; // 取出每一个元素
String teacherName=e2.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
String teacherPassword=e2.getElementsByTagName("password").item(0).getFirstChild().getNodeValue() ; NodeList n3 = doc.getElementsByTagName("admin") ;
Element e3 = (Element) n3.item(0) ; // 取出每一个元素
String adminName=e3.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
String adminPassword=e3.getElementsByTagName("password").item(0).getFirstChild().getNodeValue() ; if(user.equals("student") && name.equals(studentName) && password.equals(studentPassword)){
login_tag=true;
}
if(user.equals("teacher") && name.equals(teacherName) && password.equals(teacherPassword)){
login_tag=true;
}
if(user.equals("admin") && name.equals(adminName) && password.equals(adminPassword)){
login_tag=true;
}
if(login_tag==true){
%> 用户登录成功!
<%
}else{
%> 登录失败!
<%
}
%>
</body>
</html>

  这三个文件结合使用即可实现通过XML文件验证用户登录的功能,简单吧!

xml的应用:

  对于小型项目来说,你可能完全不需要存储大量的数据,不需要经常进行读取,这时使用一个完整的数据库来完成任务无疑是杀鸡用牛刀,只使用简简单单的xml便是极好的。xml文件需要解析才能使用,它存在于磁盘中,所以经常读取的效率不是很高,小项目的配置是它的天下。

小结:

  本文介绍的只是xml文件知识的一个非常简单的应用,就像文章开头提到的,xml的应用远远超过本文所介绍的这一点。xml文件只能但是对于只会通过数据库验证的同学来说,这无疑能帮助你打开视野,提升编程水平。

xml实现登录表单验证的更多相关文章

  1. jQuery封装的表单验证,模仿网易或者腾讯登录的风格

    模仿网易邮箱做了一个登录表单验证,不太好,请指教 上代码 <form action="" name="" id="form1"> ...

  2. 配置web&period;xml和glassfish容器实现javaEE表单验证

    web.xml配置: <!-- 声明用于安全约束的角色 --> <security-role> <role-name>ReimUser</role-name& ...

  3. Xamarin&period;Forms登录对话框及表单验证

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议,请网站留言: 如果您觉得Dotnet9对您有帮助,欢迎赞赏. Xamarin.Forms登录系统 内容目录 实现效果 业务场景 编码实现 ...

  4. AngularJS学习之 登录表单 清爽验证(边学边更新)

    注册过程的确好多需要验证的,但是注册成功之后的登录就简单多了, 只要用户 输入 用户名和密码, ajax向后台提交登录请求, 根据返回的结果确定用户名或者密码是否正确即可登录. 所以这个登录表单的验证 ...

  5. 6&period;4-6&period;5 使用form表单验证,完善登录页面

    之前是使用自定义的类来实现登录逻辑,现在使用django内置的form表单验证,用继承django的view来实现登录页面. users > views.py 的内容是: from django ...

  6. Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)

    一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...

  7. struts2官方 中文教程 系列十一:使用XML进行表单验证

    在本教程中,我们将讨论如何使用Struts 2的XML验证方法来验证表单字段中用户的输入.在前面的教程中,我们讨论了在Action类中使用validate方法验证用户的输入.使用单独的XML验证文件让 ...

  8. Flask10 登录模块、表单框架、表单渲染、表单验证、bookie、请求之前钩子、g对象、编写装饰器

    from flask import Flask from flask import request from flask import render_template from flask_wtf i ...

  9. Vue项目之实现登录功能的表单验证!

    Vue项目之实现登录功能的表单验证! 步骤: 配置 Form表单验证; 1.必须给el-from组件绑定model 为表单数据对象 2 给需要验证的表单项 el-form-item 绑定 prop 属 ...

随机推荐

  1. Ant搭建 一键生成APP技术 平台

    1.博客概要 本文详细介绍了当今流行的一键生成APP技术.介绍了这种设计思想的来源,介绍了国内外的研究背景,并介绍了这个技术体系中的一些实现细节,欢迎各路大神们多提意见.一键生成技术,说的通俗点就是, ...

  2. CodeForces 711D Directed Roads &lpar;DFS判环&plus;计数&rpar;

    题意:给定一个有向图,然后你可能改变某一些边的方向,然后就形成一种新图,让你求最多有多少种无环图. 析:假设这个图中没有环,那么有多少种呢?也就是说每一边都有两种放法,一共有2^x种,x是边数,那么如 ...

  3. HTML5每日一练之input新增加的5种其他类型1种标签应用

    今天介绍input在HTML5中的最后5种类型,分别是:number,range,search,tel和color 注意:此种类型的input在Opera10+中效果为佳,Chrome中效果不是十分好 ...

  4. JAVA-判断请求来自PC端还是手机端

    某些情形,我们需要判断Http请求是来自手机端还是电脑端,关键是取得User-Agent的信息,进行筛选判断即可. 核心类如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  5. Linux下玩转Dota2

    Dota2是一款颇为风靡的即时战略类游戏,去年官方就支持Mac和Linux了,对于习惯Mac和linux平台的孩子们来说,简直感动的泪流满面. 当然,也简直是linux程序猿的福音啊啊! 与Win8. ...

  6. HBase 运维分析

    问题分析的主要手段 1.监控系统:首先用于判断系统各项指标是否正常,明确系统目前状况 2.服务端日志:查看例如region移动轨迹,发生了什么动作,服务端接受处理了哪些客户端请求. 3.gc日志:gc ...

  7. &lbrack;SDOI2008&rsqb;递归数列

    嘟嘟嘟 裸的矩阵快速幂,构造一个\((k + 1) * (k + 1)\)的矩阵,把sum[n]也放到矩阵里面就行了. #include<cstdio> #include<iostr ...

  8. jar 包 的用处 ,dozer、poi、itext 、jxl 、jbarcode 、itextrenderer jquery 效果

    1.dozer 做类型转换的, 新建 xml 文件 描述两个实体的对应关系 ,DozerBeanMapper mapper =new DozerBeanMapper().addMappingFiles ...

  9. 分布式之zk的应用场景

    分布式应用系统中,经常会用到zk,比如dubbo注册中心,kafka分布式集群等都用到zk这一工具.除了这些用来做分布式集群外,zk还有那西应用场景事我们可以使用到该工具的呢?所以接下来就是我们要了解 ...

  10. TCP协议详解7层和4层解析&lpar;美团,阿里&rpar; 尤其是三次握手,四次挥手 具体发送的报文和状态都要掌握

    如果想了解HTTP的协议结构,原理,post,get的区别(阿里面试题目),请参考:HTTP协议 结构,get post 区别(阿里面试) 这里有个大白话的解说,可以参考:TCP/IP协议三次握手和四 ...