【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,正好网上没有这方面的全面讲解,所以我就发飙了.不过在现实生产中我们大多采用的三层架构. ...
随机推荐
- vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
框架介绍 这是一个基于vue.element-ui.iview..netcore3.1 可支持前端.后台动态扩展业务代码快速开发框架. 框架内置定制开发的代码生成器,生成的代码不需要复制也不需要更改, ...
- OpenCV 经纬法将鱼眼图像展开
文章目录 前言 理论部分 鱼眼展开流程 鱼眼标准坐标计算 标准坐标系与球坐标的转换 代码实现 测试效果如下图 总结 this demo on github 前言 鱼眼镜头相比传统的镜头,视角更广,采集 ...
- Android广播机制(2)
目录 发送自定义广播 发送标准广播 步骤 跨进程广播 步骤 发送有序广播 使用本地广播 实例 本地广播的优势 发送自定义广播 发送标准广播 步骤 1.定义一个广播接收器来接收此广播,新建MyBroad ...
- [hdu3364]xor方程组消元
题意:n个灯,m个开关,给定每个开关控制的灯,全部的灯初始时全部熄灭,开关按一下其所控制的灯的状态全部反转,开关最多只能按一下.问达到目标状态的方案数. 思路:xor方程组的模型. 1 2 3 4 5 ...
- vtk学习记录(三)——初识vtkRenderer
目录 前言 vtkRenderer 引入vtk窗口 小结 前言 一场疫情打乱了好多人的节奏,我也一样,一不留神半年都快过去了,这期间虽说一直在鼓捣东西吧,不过确实是没啥实质性的进展,索性就继续把vtk ...
- 关于Nginx参数路径问题的问题
本文转载自:https://pureage.info/2013/10/31/130.html 由于工作需要,开始分析nginx的proxy模块,在分析之前,当然要先会用了.于是开始熟悉该模块的一些指令 ...
- python之Python Eclipse+PyDec下载和安装教程(超级详细)
Eclipse 是著名的跨平台 IDE 工具,最初 Eclipse 是 IBM 支持开发的免费 Java 开发工具,2001 年 11 月贡献给开源社区,目前它由非盈利软件供应商联盟 Eclipse ...
- 策略模式C++实现
#include <iostream> using namespace std; class Strategy; class Context { public: Context(Strat ...
- 汉语分词工具包jieba
#分词pip install jieba import jieba str="你真的真不知道我是谁吗?" res1=jieba.cut(str) print(list(res1)) ...
- RBAC权限分配
RABC:基于角色的权限访问控制(Role-Based Access Control) 一般在登录系统认证通过后,会先确定的该用户的操作权限,判断用户的后续操作是否合法! RABC至少需要三张表:用户 ...