Web-專案_雲筆記-登陸模組
阿新 • • 發佈:2018-12-20
#登陸功能
先做一個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);//含參構造器
}
}