MVC版项目开发-传统模式
登陆模拟
因为大多数内容在前面的笔记中记录过 例如工具类和mapper映射文件 故在此不多赘述
数据库准备
新建数据库 mybatis-finall-test
新建表user 字段如下图所示
新建动态项目 包结构如下图所示
需要新建exception包 用来存放报错信息
代码示例:
package com.shxt.framework.rbac.user.exception;
public class LoginException extends RuntimeException {
public LoginException() {
super();
// TODO Auto-generated constructor stub
}
public LoginException( String message , Throwable cause , boolean enableSuppression , boolean writableStackTrace ) {
super(message, cause, enableSuppression, writableStackTrace);
// TODO Auto-generated constructor stub
}
public LoginException( String message , Throwable cause ) {
super(message, cause);
// TODO Auto-generated constructor stub
}
public LoginException( String message ) {
super(message);
// TODO Auto-generated constructor stub
}
public LoginException( Throwable cause ) {
super(cause);
// TODO Auto-generated constructor stub
}
}
usermapper存放登录用<select>标签及处理内容
新建service层 存放业务逻辑处理文件
使用面向接口编程方式
UserServiceImpl.java (实现类)代码示例:
package com.shxt.framework.rbac.user.service.impl;
import com.shxt.framework.rbac.user.dao.UserDao;
import com.shxt.framework.rbac.user.dao.impl.UserDaoimpl;
import com.shxt.framework.rbac.user.exception.LoginException;
import com.shxt.framework.rbac.user.model.User;
import com.shxt.framework.rbac.user.service.UserService;
public class UserServiceImpl implements UserService {
//接口回调
private UserDao userdao = new UserDaoimpl();
@Override
public User login( User user ) {
User u = this.userdao.login(user);
if(u==null){
throw new LoginException("用户名或者密码错误,请重新输入!!");
}else {
if(u.getStatus()==-1){
throw new LoginException("该账号已被注销!!");
}else {
return u;
}
}
}
}
为了信息访问的安全 将view层(jsp文件)放在WEB-INF文件夹下
新建servlet文件 处理web命令
在base包下新建IndexServlet用于在之初能够打开登陆页面
WEB-INF文件夹内资源不可直接访问!!
DAO层内放置数据库访问文件 使用面向接口编程方式
UserDao 文件的实现类UserDaoImpl.java代码示例:
package com.shxt.framework.rbac.user.dao.impl;
import org.apache.ibatis.session.SqlSession;
import com.shxt.framework.base.util.MyBatisUtils;
import com.shxt.framework.rbac.user.dao.UserDao;
import com.shxt.framework.rbac.user.model.User;
public class UserDaoimpl implements UserDao {
@Override
public User login( User user ) {
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.getSqlSession();
return sqlSession.selectOne(User.class.getName()+".login",user);
} finally {
MyBatisUtils.closeSqlSession(sqlSession);
}
}
}
整体编码逻辑如下图: