1. 程式人生 > >Web-專案_雲筆記-登陸模組

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);//含參構造器
	}
}