1.MD5工具类
packagecom.ssm.util;importjava.security.MessageDigest;public classMD5Util {//将字节数组转成十六进制字符串
private static String byteArrayToHexString(byteb[]) {
StringBuffer resultSb= newStringBuffer();for (int i = 0; i < b.length; i++)
resultSb.append(byteToHexString(b[i]));returnresultSb.toString();
}//对单个字节转换成整数进行取商取余数计算
private static String byteToHexString(byteb) {int n =b;if (n < 0)
n+= 256;int d1 = n / 16;int d2 = n % 16;//根据下标d1,d2去数组hexDigits的数据
return hexDigits[d1] +hexDigits[d2];
}public staticString MD5Encode(String origin, String charsetname) {
String resultString= null;try{
resultString= newString(origin);//获得MD5摘要算法的 MessageDigest 对象
MessageDigest md = MessageDigest.getInstance("MD5");if (charsetname == null || "".equals(charsetname))//将加密之后的字节数据转换成16进制的字符串
resultString =byteArrayToHexString(md.digest(resultString
.getBytes()));elseresultString=byteArrayToHexString(md.digest(resultString
.getBytes(charsetname)));
}catch(Exception exception) {
}returnresultString;
}private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5","6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
}
2.在登录注册中使用MD5加密算法
demo目录结构
数据库用户表
CREATE TABLE `user` (
`id`int(20) NOT NULL AUTO_INCREMENT COMMENT ‘编号‘,
`userName`varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT ‘用户名‘,
`password`varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT ‘密码‘,PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
pojo对象User.java
packagecom.ssm.pojo;public classUser {privateInteger id;privateString userName;privateString password;publicInteger getId() {returnid;
}public voidsetId(Integer id) {this.id =id;
}publicString getUserName() {returnuserName;
}public voidsetUserName(String userName) {this.userName =userName;
}publicString getPassword() {returnpassword;
}public voidsetPassword(String password) {this.password =password;
}
}
2.1DAO层
DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,
DAO层的设计首先是设计DAO的接口,
然后在Spring的配置文件中定义此接口的实现类,
然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,
DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。
UserDaO.java
packagecom.ssm.dao;importcom.ssm.pojo.User;public interfaceUserDao {//用户注册
public intregister(User user) ;//登陆
publicUser login(User user);
}
UserMapper.xml
/p>
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
select * from
user where userName=#{userName} and password=#{password} limit 1
insert into user(userName,password)
values(#{userName},#{password})
2.2业务层:Service层
Service层:Service层主要负责业务模块的逻辑应用设计。
首先设计接口,再设计其实现的类
接着再在Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。
Service层的业务实现,具体要调用到已定义的DAO层的接口,
封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。
UserService.java
packagecom.ssm.service.impl;importcom.ssm.pojo.User;public interfaceUserService {publicUser login(User user);public intregister(User user);
}
UserServiceImpl.java
packagecom.ssm.service.impl;importjavax.annotation.Resource;importorg.springframework.stereotype.Service;importcom.ssm.dao.UserDao;importcom.ssm.pojo.User;
@Service("userService")public class UserServiceImpl implementsUserService {
@ResourceprivateUserDao userDao;publicUser login(User user) {//TODO Auto-generated method stub
returnuserDao.login(user);
}public intregister(User user) {//TODO Auto-generated method stub
returnuserDao.register(user);
}
}
2.3控制层:Controller层
Controller层:Controller层负责具体的业务模块流程的控制,
在此层里面要调用Service层的接口来控制业务流程,
控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。
RegisterController.java