【SpringMVC】使用三层架构实现登录,注册。(下篇)
上篇写了构思与界面层,本篇写一下业务逻辑层、数据访问层
目录

业务逻辑层
包:pojo
用户类(JavaBean):User
public class User {
private String userName;
private String userPwd;
public User(String userName, String userPwd) {
this.userName = userName;
this.userPwd = userPwd;
}
public User() {
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
}
包:service
接口:IUserService
public interface IUserService {
public boolean register(User user);
public boolean login(User user);
}
类:UserServiceImpl
public class UserServiceImpl implements IUserService {
@Override
public boolean register(User user) {
IUserDao dao=new UserDaoImpl();
User userByName = dao.findUserByName(user);
if(userByName==null){
//如果数据库里没有找到同名的,就注册
try {
int i = dao.addUser(user);
if(i>0){
System.out.println("注册成功");
}else {
return false;
}
return true;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return false;
}
@Override
public boolean login(User user) {
IUserDao dao=new UserDaoImpl();
User checkUser = dao.checkUser(user);
if(checkUser==null){
//如果数据库里没有找到同名、同密码的
System.out.println("登录失败");
return false;
}else {
System.out.println("欢迎登录");
return true;
}
}
}
数据访问层
包:dao
接口:IUserDao
public interface IUserDao {
public User findUserByName(User u);
public User checkUser(User u);//检查用户名密码是否与数据库中一致
public int addUser(User u);//向数据库中添加用户信息
}
实现接口的类:UserDaoImpl
public class UserDaoImpl implements IUserDao{
private JdbcTemplate jt=new JdbcTemplate(JDBCUtils.getDataSource());
@Override
public User findUserByName(User user) {
User u=null;
try{
u=jt.queryForObject("select userName from userinfo where userName=?",
new BeanPropertyRowMapper<User>(User.class),user.getUserName());
}catch (Exception e){
}
return u;
}
@Override
public User checkUser(User user) {
User u=null;
try{
u=jt.queryForObject("select userName,userPwd from userinfo where userName=? and userPwd=?",
new BeanPropertyRowMapper<User>(User.class),user.getUserName(),user.getUserPwd());
}catch (Exception e){
}
return u;
}
@Override
public int addUser(User user) {
int c=0;
String status="正常";
try {//c为添加数据库影响的行数,添加成功则c=1,失败则c=0
c=jt.update("insert into userinfo(userName,userPwd,typeId,userStatus) values (?,?,?,?)",
user.getUserName(),user.getUserPwd(),3,status);
}catch (Exception e){
}
return c;
}
}
工具类:JDBCUtils (创建连接池)
public class JDBCUtils {
private static DataSource ds;
static {
Properties p=new Properties();
try {
p.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
ds= DruidDataSourceFactory.createDataSource(p);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getDataSource(){
return ds;
}
}
到这里就结束了,可以正常运行了。
【SpringMVC】使用三层架构实现登录,注册。(下篇)的更多相关文章
- winform学习日志(十九)----------真正三层架构之登录
摘要:一:三层构架的基础知识在项目开发的过程中,有时把整个项目分为三层架构,其中包括:表示层(UI).业务逻辑层(BLL)和数据访问层(DAL).三层的作用分别如下: 表示层:为用户提供交互操作界面, ...
- 【SpringMVC】使用三层架构实现登录,注册。(上篇)
构思 界面层 1.jsp [见名知义] failed.jsp-->失败页面,登录.注册失败就跳转至失败页面 index.jsp-->默认生成的界面,没什么用 login.jsp--> ...
- Springmvc+Spring+Mybatis实现员工登录注册功能
ssm实现用户注册以及登录功能..转载请标明出处 http://www.cnblogs.com/smfx1314/p/smfx1314.html 前端bootstrap 所使用的IDE是eclips ...
- asp.net mvc 三层加EF 登录注册 增删改查
首先打开vs软件新建项目创建web中的mvc项目再右击解决方案创建类库项目分别创建DAL层和BLL层再把DAL层和BLL层的类重命名在mvc项目中的Models文件夹创建model类在DAL创建ADO ...
- C# 三层架构之系统的登录验证与添加数据的实现
利用三层架构体系,实现学生管理系统中用户的登录与添加班级信息的功能,一下代码为具体实现步骤的拆分过程: 一.用户登录界面功能的实现 1.在数据访问层(LoginDAL)进行对数据库中数据的访问操作 u ...
- 三层架构,Struts2,SpringMVC实现原理图
三层架构,Struts2,SpringMVC实现原理图 三层架构实现原理 Struts2实现原理 SpringMVC实现原理
- c#利用三层架构做一个简单的登录窗体
就个人而言,三层架构有点难理解,不知道该如何下手,各层与各层之间怎么调用 最近一直在研究三层架构,经过网上学习与多方打听写一下自己的心得.有不足之处,可以评论和私聊探讨 言归正传: 三层架构(3-ti ...
- C# 使用三层架构实例演示-winForm 窗体登录功能
---------------------------------------------------------------------------------------------------华 ...
- 三层架构(MVC)实现简单登陆注册验证(含验证码)
前言在我的上一篇微博里我已经提出了登陆的方法,当时我采取的是纯servlet方式,因为当时刚接触到servlet,正好网上没有这方面的全面讲解,所以我就发飙了.不过在现实生产中我们大多采用的三层架构. ...
随机推荐
- Coursera课程笔记----计算导论与C语言基础----Week 10
C程序中的数组(Week 10) 一维数组 数组的定义 类型 数组名[常量表达式] int sheep[10] 定义数组时,[]内必须为常量表达式 可以用const int 可以在main函数前,#d ...
- 关于fromdata的上传文件问题
<div <label>上传pdf</label> <input id="fileId" type="file" accep ...
- 如何使用 Shebang Line (Python 虚拟环境)
本文记录,如何在 Python Script 中使用 Shebang 行. Shebang Line 是什么: 也被叫做 Hashbang Line,只要是一个由,井号和叹号#!开头,并构成的字符序列 ...
- JS作用域和变量提升看这一篇就够了
作用域是JS中一个很基础但是很重要的概念,面试中也经常出现,本文会详细深入的讲解这个概念及其他相关的概念,包括声明提升,块级作用域,作用域链及作用域链延长等问题. 什么是作用域 第一个问题就是我们要弄 ...
- 两种方式实现sticky footer绝对底部
一.什么是sticky footer 如果页面内容不够长的时候,页脚块粘贴在视窗底部:如果内容足够长时,页脚块会被内容向下推送,我们看到的效果就如下面两张图这样.这种效果基本是无处不在的,很受欢迎. ...
- SpringMvc上传图片及表单提交(单文件+实体类参数提交)
前两天做项目用到了Springmvc的文件上传来上传图片,由于和这个普通的Java文件上传处理流程不太一样,所以做的时候碰了壁,一顿百度,博客,要不就是一部分代码,要不就是看不懂,用不会的代码,下面来 ...
- 使用gitHub和git进行团队合作开发
1.创建仓库(项目)-----组织者(Leader)和团队成员 1)Leader在gitHub上创建一个新组织(New organization),然后邀请成员加入 2)Leader在该组织下创建一个 ...
- 4.1Go if-else
1. Go if-else Golang程序的流程控制决定程序如何执行,主要有三大流程控制,顺序控制.分支控制.循环控制. 条件语句需要定义一个或多个条件,并且对条件测试的true或false来决定是 ...
- CDH6 高版本hbase+solr实现二级索引
之前的环境是单独下载的CDH组件包搭建的集群,但是因为hadoop版本过低导致漏洞无法修复,重新搭建高版本集群环境. 新集群环境: 主要组件:hadoop,hbase,zookeeper,Key-Va ...
- IntelliJ IDEA 2020.1 取消了auto-import自动导入
Maven 和 Gradle 导入功能更新 v2020.1使得Maven和Gradle更改的导入不再繁琐.首先,我们删除了总是触发的自动导入,以及在更新完脚本之前不断显示并建议导入更新的提示框.取而代 ...