Web-项目_云笔记-登陆模块

#登陆功能

先做一个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);//含参构造器
	}
}

 

猜你喜欢

转载自blog.csdn.net/qq_41782582/article/details/81571033