#登陆功能
先做一个User的javabean放在entity里
package cn.tedu.cloud_note.entity;
import java.io.Serializable;
/*
* 类属性名和属性数据类型与数据库cn_user字段名及数据类型保持一致
*/
public class User implements Serializable{
private String cn_user_id;
private String cn_user_name;
private String cn_user_password;
private String cn_user_token;
private String cn_user_nick;
public String getCn_user_id() {
return cn_user_id;
}
public void setCn_user_id(String cn_user_id) {
this.cn_user_id = cn_user_id;
}
public String getCn_user_name() {
return cn_user_name;
}
public void setCn_user_name(String cn_user_name) {
this.cn_user_name = cn_user_name;
}
public String getCn_user_password() {
return cn_user_password;
}
public void setCn_user_password(String cn_user_password) {
this.cn_user_password = cn_user_password;
}
public String getCn_user_token() {
return cn_user_token;
}
public void setCn_user_token(String cn_user_token) {
this.cn_user_token = cn_user_token;
}
public String getCn_user_nick() {
return cn_user_nick;
}
public void setCn_user_nick(String cn_user_nick) {
this.cn_user_nick = cn_user_nick;
}
@Override
public String toString() {
return "User [user_id=" + cn_user_id + ", user_name=" + cn_user_name + ", user_password="
+ cn_user_password + ", user_token=" + cn_user_token + ", user_nick=" + cn_user_nick + "]";
}
}
DAO层
先配置spring-mybatis.xml文件,连接一下数据库
<!-- 配置mysql连接池 -->
<bean id = "ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///cloud_note"/><!-- 本机的话可以直接这样概括 -->
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<!-- 配置SqlSessionFactoryBean -->
<!-- 配置mybaits框架 -->
<bean id="ssfb" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 不再使用mybatis自带的连接池,而使用spirng管理的连接池 -->
<property name="dataSource" ref="ds"></property>
<!--映射文件的位置-->
<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
</bean>
需要有一个UserDao的接口
package cn.tedu.cloud_note.dao;
import cn.tedu.cloud_note.entity.User;
public interface UserDao {
public User findByName(String name);
}
然后需要Mapper映射器来实现这个DAO
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="cn.tedu.cloud_note.dao.UserDao">
<select id="findByName" parameterType="string" resultType="cn.tedu.cloud_note.entity.User">
SELECT * FROM cn_user WHERE cn_user_name = #{name}
</select>
</mapper>
和Mapper映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="cn.tedu.cloud_note.dao.UserDao">
<select id="findByName" parameterType="string" resultType="cn.tedu.cloud_note.entity.User">
SELECT * FROM cn_user WHERE cn_user_name = #{name}
</select>
</mapper>
然后需要配置一下spring-mybatis.xml,告诉mybatis,映射文件的位置
<!-- 配置Mapper映射器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 这个包会自动调用mvc扫描 -->
<!-- Mapper映射器所在的包 -->
<property name="basePackage" value="cn.tedu.cloud_note.dao"></property>
</bean>
Service层
先写一个service接口
package cn.tedu.cloud_note.service;
import cn.tedu.cloud_note.entity.User;
import cn.tedu.cloud_note.util.NoteResult;
/*
* 业务层接口
*/
public interface UserService {
public NoteResult<User> checkLogin(String name,String password);
}
然后实现这个接口
package cn.tedu.cloud_note.service;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cn.tedu.cloud_note.dao.UserDao;
import cn.tedu.cloud_note.entity.User;
import cn.tedu.cloud_note.util.NoteResult;
@Service("userService")//spring容器进行扫描
public class UserServiceImpl implements UserService{
@Resource(name="userDao")//依赖注入
private UserDao userDao;
public NoteResult<User> checkLogin(String name, String password) {
NoteResult<User> result = new NoteResult<User>();//先创建一个查询结果
User user = userDao.findByName(name);//按参数name查询数据库
//检测用户名
if(user == null) {//如果返回值为零,即没有这项数据
result.setStatus(1);//返回不成功时设置状态为1
result.setMsg("用户名不存在");
return result;
}
if(user.getCn_user_password().equals(password)) {
result.setStatus(2);//有返回值但是密码错误的状态
result.setMsg("密码错误");
return result;
}
//用户名和密码都正确
result.setStatus(0);//当一切成功以后状态值为0
result.setMsg("登陆成功");
result.setData(user);
return result;
}
}
在这一步之后,你需要在spring-mvc.xml中开启一下组件扫描。
加密处理模块
借鉴博主:https://blog.csdn.net/qq_38131668/article/details/74294373
把ajax传进来的string传到这里进行加密。
package cn.tedu.cloud_note.util;
import java.security.MessageDigest;
import java.util.UUID;
import org.apache.commons.codec.binary.Base64;
public class NoteUtil {
public static String createId(){
UUID uuid = UUID.randomUUID();
return uuid.toString();
}
public static String md5(String str){
try{
//将str利用md5处理,处理结果是byte[]
MessageDigest md =
MessageDigest.getInstance("MD5");
byte[] input = str.getBytes();
byte[] output = md.digest(input);
// System.out.println(output.length);
//利用Base64算法将byte[]处理成字符串返回
return Base64.encodeBase64String(output);
}catch(Exception ex){
ex.printStackTrace();
throw new NoteException("密码加密失败");
}
}
public static void main(String[] args){
System.out.println(md5("1234"));
System.out.println(md5("1234345dsfgsdfaddfasddafasddfadfasdfa"));
System.out.println(createId());
System.out.println(createId());
System.out.println(createId());
}
}
自己写一个NoteException的异常。
package cn.tedu.cloud_note.util;
public class NoteException extends RuntimeException{
public NoteException() {
}
public NoteException(String message) {
super(message);//含参构造器
}
}