前言在我的上一篇微博里我已经提出了登陆的方法,当时我采取的是纯servlet方式,因为当时刚接触到servlet,正好网上没有这方面的全面讲解,所以我就发飙了。不过在现实生产中我们大多采用的三层架构。所谓三层架构(web层+service层+dao层)。下面我就详细讲解一下

一、dao层——数据访问层

  • 模拟数据库:依然像钱一张一样,我们无法将数据库拿到文档中,所以我还是模拟了数据库(Dao).只不过这里我用的是xml文件来实现数据库
  • <?xml version="1.0" encoding="UTF-8" ?>

    <users>

    <user username="Admin" password="Admin" nickname="Admin" email="1@qq.com"></user>

    <user username="张新华" password="123" nickname="烟花散尽13141" email="870775401@qq.com"></user>

    </users>
  • 然后再数据库中我实现了查找了和增加功能,查找呢又细分通过用户名查找和通过用户名密码查找,前者是查找后者则偏向于验证。通过后者可以验证用户名和密码是否匹配,这两个函数在后面的web层中起到关键因素。

    • 通过用户名查找:

      • `public User FindUserByUsername(String username)

        {

        Document dom=XmlDaoUtil.GetDom();//�õ�dom����

        Element root=dom.getRootElement();

      List list = root.selectNodes(“//user[@username=’”+username+”’]”);

      if(list.size()>0)

      {

      Element userele=list.get(0);

      User user=new User();

      user.setUsername(userele.attributeValue(“username”));

      user.setPassword(userele.attributeValue(“password”));

      user.setNickname(userele.attributeValue(“nikename”));

      user.setEmail(userele.attributeValue(“email”));

      return user;

      }

      else

      {

      return null;

      }

      }`

    • 通过用户名和密码进行验证

      • public User FindUserByUNameAndPsw(String username,String password)

        {

        Document dom=XmlDaoUtil.GetDom();//�õ�dom����

        Element root=dom.getRootElement();

      List list = root.selectNodes(“//user[@username=’”+username+”’ and @password=’”+password+”’]”);

      if(list.size()>0)

      {

      Element userele=list.get(0);

      User user=new User();

      user.setUsername(userele.attributeValue(“username”));

      user.setPassword(userele.attributeValue(“password”));

      user.setNickname(userele.attributeValue(“nikename”));

      user.setEmail(userele.attributeValue(“email”));

      return user;

      }

      else

      {

      return null;

      }

      }

    • 添加用户
    • public void AddUser(User user)

      {

      Document dom=XmlDaoUtil.GetDom();

      Element root=dom.getRootElement();//��ȡ���ڵ�

      //����һ��Ԫ�ض���

      Element userele=DocumentHelper.createElement(“user”);

      Attribute attr1=DocumentHelper.createAttribute(userele, “username”, user.getUsername());

      Attribute attr2=DocumentHelper.createAttribute(userele, “password”, user.getPassword());

      Attribute attr3=DocumentHelper.createAttribute(userele, “nickname”, user.getNickname());

      Attribute attr4=DocumentHelper.createAttribute(userele, “email”, user.getEmail());

      userele.add(attr1);

      userele.add(attr2);

      userele.add(attr3);

      userele.add(attr4);

      root.add(userele);

      }

三层架构(MVC)实现简单登陆注册验证(含验证码)的更多相关文章

  1. Python tkinter 实现简单登陆注册 基于B/S三层体系结构,实现用户身份验证

    Python tkinter 实现简单登陆注册 最终效果 开始界面 ​ 注册 登陆 ​ 源码 login.py # encoding=utf-8 from tkinter import * from ...

  2. tornado框架&三层架构&MVC&MTV&模板语言&cookie&session

    web框架的本质其实就是socket服务端再加上业务逻辑处理, 比如像是Tornado这样的框架. 有一些框架则只包含业务逻辑处理, 例如Django, bottle, flask这些框架, 它们的使 ...

  3. c#利用三层架构做一个简单的登录窗体

    就个人而言,三层架构有点难理解,不知道该如何下手,各层与各层之间怎么调用 最近一直在研究三层架构,经过网上学习与多方打听写一下自己的心得.有不足之处,可以评论和私聊探讨 言归正传: 三层架构(3-ti ...

  4. 三层架构下实现用户登陆C#

    上篇文章讲到三层.接下来就通过一个实例详细的看怎么用三层实现用户登陆界面. 一.Model实体(LoginModel): namespace LoginModel { //加入类:UserInfo M ...

  5. asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(一)—— 手把手教你创建第一个三层架构+mvc的asp.net项目

    下面开启项目 1. 打开vs2010-文件-新建项目 2. 先创建一个空的解决方案: 选择其他项目类型-visual studio 解决方案-空白解决方案(默认.NET Framework 4),项目 ...

  6. 利用python实现简单登陆注册系统

    #!/usr/bin/env python # -*- coding:utf-8 -*- def login(username,password): ''' :param username:用户名 : ...

  7. html+css+js实现简单登陆注册页面

    先看一下最终效果,登陆和注册 背景图片: 附源码: login.html <!DOCTYPE html> <html lang="en"> <head ...

  8. 浅析MVC模式与三层架构的区别01

    三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层)三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI ...

  9. MVC模式与三层架构的区别

    之前总是混淆MVC表现模式和三层架构模式,为此记录下. 三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层) 三层架构(3-tier application) ...

随机推荐

  1. 利用Docker搭建Redis集群

    Redis集群搭建 运行Redis镜像 分别使用以下命令启动3个Redis docker run --name redis-6379 -p 6379:6379 -d hub.c.163.com/lib ...

  2. 20190101.DDD笔记

    建立领域模型步骤 根据提供的信息完善主要业务场景和业务流程: 根据业务流程识别领域事件并按照时序排列: 针对领域事件进行命令识别: 针对领域事件和命令进行聚合和子域的初步识别: 在识别的subdoma ...

  3. Excel导出功能超时解决方案 -- 异步处理

    背景 有运营同学反馈,最近导出excel会出现超时的情况,初步判断是数据增长太快,数据量太大,请求时间超过了设置的超时时间 尝试 有考虑直接更改该请求的超时时长,可是治标不治本 网上搜索发现,有很多人 ...

  4. 个人永久性免费-Excel催化剂功能第103波-批量打开多文件或多链接

    有时简单的东西,却带来许多的便利,为了让大家可以记住并容易找寻到此功能,也将这么简单的功能归为一波,反正已经100+波了,也无需为了凑功能文章而故意罗列一些小功能带忽悠性地让人觉得很强大. 使用场景 ...

  5. Spark学习之RDD

    RDD概述 什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合 ...

  6. TensorFlow笔记-图片读取

    回到上一篇文件的读取分这么几步: # 构造队列 # 1,构造图片文件的队列 file_queue = tf.train.string_input_producer(filelist) # 构造阅读器 ...

  7. Python字符串格式化-学这些就够用了

    一.思考❓❔ 1.什么是字符串格式化? 将变量(对象)的值填充到字符串中 在字符串中解析Python表达式 对字符串进行格式化显示 左对齐.右对齐.居中对齐 保留数字有效位数 2.你学过的字符串格式化 ...

  8. GCC 编译多个文件

    今天写数据结构的example,定义了3个文件:lish.h list.c main.c list.h是list.c的头文件,mian.c中对list.h进行了引用.代码如下: list.h 1 #i ...

  9. rabbitMQ_Publish/Subscribe(三)

    发布/订阅 生产者发布信息,多个订阅者可以同时接收到信息. 转发器 现在是时候在RabbitMQ中引入完整的消息传递模式了. 让我们快速了解我们在以前的教程中介绍的内容: 生产者是一个发送消息的应用程 ...

  10. T-SQL 日期

    --日期查询格式 ) --R:06/17/2011 ) --R:2011.06.17 ) --R:17/06/2011 ) --R:17.06.2011 ) --R:17-06-2011 ) --R: ...