前言在我的上一篇微博里我已经提出了登陆的方法,当时我采取的是纯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. VB非常见知识总结

    1.VB.Net设置Excel中单元格字体 sheet.Range(sheet.Cells(row, stp), sheet.Cells(row, stp)).Font.Name = "Wi ...

  2. Spring Boot2(十二):手摸手教你搭建Shiro安全框架

    一.前言 SpringBoot+Shiro+Mybatis完成的. 之前看了一位小伙伴的Shiro教程,跟着做了,遇到蛮多坑的(´இ皿இ`) 修改整理了一下,成功跑起来了.可以通过postman进行测 ...

  3. c++学习书籍推荐《数据结构C++语言描述:应用标准模板库STL(第2版)》下载

    本书是Ford和Topp两位教授于1996看出版的名著Data Structures with C++的第2版,在全球范围内已经有数以万计的学生从中受益.作者将C++语言作为算法描述语言,应用包含规范 ...

  4. idea环境下push项目

    1,选中需要推送的项目: 2,VCS-git-add 添加到本地仓库 3,vcs-commit 提交 4.commit and push 推送到远程仓库 出现错误这是提示程序有错误或者是TODO代码没 ...

  5. uSID:SRv6新范式

    摘要:本文介绍最新的SRv6创新uSID(Micro Segment).uSID兼容既有的SRv6框架,将极大地改变SRv6的设计.实现和部署方式,成为SRv6的新范式. 一.SRv6 101 Seg ...

  6. [USACO09OCT]Invasion of the Milkweed】乳草的侵占-C++

    Farmer John一直努力让他的草地充满鲜美多汁的而又健康的牧草.可惜天不从人愿,他在植物大战人类中败下阵来.邪恶的乳草已经在他的农场的西北部份占领了一片立足之地. 草地像往常一样,被分割成一个高 ...

  7. The Summer Training Summary-- the first

    The Summer Training Summary-- the first A - vector的使用 UVa 101 关于vector 的几个注意点 vector p p.push_back() ...

  8. 作为前端程序员的她凭什么成为Judy团队第一位助教?

    Judy团队第一位助教-俊英子:正直,阳光,向上,自律,优秀的女孩,当然这些词语还是无法描述出她的优秀 英子,我们第一次的时候,2月25号,下午16:26分,她突然发了一段长的文字我. 她说她一直在读 ...

  9. 编码原理_base64编码原理

    1.1   Base64编码原理 1.1.1 概要: Base64是通讯传输中较为常见的编码方式之一. (注意是编码算法,而非加密算法) 参数传输的过程中会经常遇到的一种情况:使用英文不会涉及到乱码, ...

  10. 个人永久性免费-Excel催化剂功能第47波-VBA开发者喜爱的加密函数类

    VBA的确是个很不错的编程工具,寄生在OFFICE内,无需安装庞大的开发环境,即开即用,方便灵活,能实现的事情也很多,但毕竟VBA是微软停止更新维护将近20年的一种语言,计算机的世界发展速度有多快大家 ...