SSM框架下登录与注册功能的实现

我们配置好SSM框架后,实现登录与注册功能

我们要在src/main/java下创建controller,entity,service,service,dao,util包,在src/main/resources下创建mapper文件夹。

entity层就是实体类,对应数据库的表。controller层是Servlet,主要是负责业务模块流程的控制,调用service接口的方法。ServiceImpl层主要做逻辑判断,Dao层是数据访问层,与数据库进行对接。至于Mapper是mybtis框架的映射用到,mapper映射文件在dao层用。

再分别在包下创建所需要的文件,创建后目录结构如图:
在这里插入图片描述
其中MD5是用来给信息加密,JsonResult用来反映进程成功和失败。

UserController.java



@Controller
@RequestMapping("/user")
public class UserController {
	
	private static Logger logger=LogManager.getLogger(UserController.class);
	
	@Autowired
	UserService userService;
	
	@RequestMapping("/login")
	@ResponseBody
     public Object login(User user) {
		
		logger.info("登录");
		try {
			user.setPassword(MD5.md5(user.getPassword(),"helloworld"));
		}catch(Exception e) {
			e.printStackTrace();
		}
		
		
    	 User userResult=userService.login(user);
    	 JsonResult jsonResult;
     
     
     if(userResult!=null) {
    	 jsonResult = new JsonResult(JsonResult.STATE_SUCCESS,"",userResult);
     }else {
    	 jsonResult = new JsonResult(JsonResult.STATE_ERROR,"用户名密码错误",null);
     }
     
   	 return jsonResult;    	 
     }
	
	
	
	
	@RequestMapping("/register")
	@ResponseBody
	public Object register(User user) {
		user.setId(UUID.randomUUID().toString());
		try {
			String md5password=MD5.md5(user.getPassword(), "helloworld");
			user.setPassword(md5password);
		}catch(Exception e){
			e.printStackTrace();
		}
		
		JsonResult jsonResult=null; 
        User userResult=userService.getUserByUserName(user);
		
		if(userResult==null) {
	    	 int result=userService.addUser(user);
	    	 if(result==1) {
	    		 //添加成功
	    		 jsonResult = new JsonResult(JsonResult.STATE_SUCCESS,"注册成功",null);
	    	 }else {
	    		 //添加失败
	    		 jsonResult = new JsonResult(JsonResult.STATE_ERROR,"注册失败",null);
	    	 }
	     }else {
	    	 jsonResult = new JsonResult(JsonResult.STATE_ERROR,"用户名重复",null);
	     }
	     
	   	 return jsonResult;    	 
	     
		
	}
}

UserService.java

public interface UserService {
	
	//用户登录
    public User login(User user);
    
    //用户注册
    
   public User getUserByUserName(User user);
   
   
   //添加用户
   public int addUser(User user);
}

UserImpl.java

@Service
public class UserImpl implements UserService{
	
	@Autowired
	UserDao userDao;
	
      public User login(User user) {
    	  
    	  List<User> list=userDao.login(user);
    	  
    	  if(list==null||list.isEmpty()) {
    		  System.out.println("用户名,密码不匹配");
    		  return null;
    	  }else {
    		  System.out.println(list.get(0));
    		  return list.get(0);
    	  }
      }
      
	
	public User getUserByUserName(User user) {
		List<User> list=userDao.getUserByUserName(user);
		if(list==null || list.isEmpty()) {
			return null;
		}
		return list.get(0);
	}


	@Override
	public int addUser(User user) {
		
		return userDao.addUser(user);
	}

}

UserDao.java


public interface UserDao {
	
   public List<User> login(User user);
   
   public List<User> getUserByUserName(User user);
   
   public int addUser(User user);
}

User.java

public class User implements Serializable{
	
  private static final long serialVersionUID = -444375920495358296L;
    private String id;
    public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	private String username;
    private String password;
    private String name;
    public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	private int age;
 
   public String getUsername() {
	return username;
}

public void setUsername(String username) {
	this.username = username;
}

public String getPassword() {
	return password;
}

public void setPassword(String password) {
	this.password = password;
}

public int getAge() {
	return age;
}

public void setAge(int age) {
	this.age = age;
}

@Override
public String toString() {
	return "User [username=" + username + ", password=" + password + ", age=" + age + "]";
}

   }

JsonResult.java


public class JsonResult implements Serializable {
    
	private static final long serialVersionUID = -598253683001447009L;
	public static String STATE_SUCCESS="1";
	public static String STATE_ERROR="-1";
	private String state;
     private String message;
     private Object data;
     
     public JsonResult(String state,String message,Object data) {
    	 this.data=data;
    	 this.message=message;
    	 this.state=state;
     }

	public String getState() {
		return state;
	}

	public void setState(String state) {
		this.state = state;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public Object getData() {
		return data;
	}

	public void setData(Object data) {
		this.data = data;
	}

     
     
}

MD5.java


public class MD5 {
    public static String md5(String text,String key) throws Exception{
    	String md5str=DigestUtils.md5Hex(text+key);
    	System.out.println("MD5加密的字符串为"+md5str);
    	return md5str;
    }
}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.wzc.dao.UserDao">
  
    
    <select id="login" parameterType="com.wzc.entity.User" resultType="com.wzc.entity.User">
        select * from note_t_users where username=#{username} and password=#{password}  
    </select>
    
    <select id="getUserByUserName" parameterType="com.wzc.entity.User" resultType="com.wzc.entity.User">
        select * from note_t_users where username=#{username}   
    </select>
    
    <insert id="addUser" parameterType="com.wzc.entity.User">
       insert into note_t_users (id,username,password,name,age) values(#{id},#{username},#{password},#{name},#{age})
    </insert>
    
 </mapper> 

我们在js文件实现前台与后台数据的交换和结果显示

login.js

$(function(){
	   $('#submit').click(function () {
		   
		   if($('#username').val()==' '){
			   alert("请输入用户名");
		   }else if($('#ps').val()==''){
		       alert("请输入密码");
	       }
		   var sendData={"username":$('#username').val(),"password":$('#ps').val()};
		$.ajax({
			type:"post",
			url:"user/login.do",
			data:sendData,
			datatype:'json',
			success:function(msg){
				if(msg.state==1){
					
					console.log(msg.data.name);
				    alert("欢迎"+msg.data.name);
				}
				else{
					alert(msg.message);
					}
					
			},
			error:function(msg){
				alert('通信失败');
			}
		});
	})
   })

register.js

$(function(){
	   $('#submit').click(function () {
		   
		   if($('#username').val()==''){
			   alert("请输入用户名");
			   $('#username').focus();
			   return ;
		   }else if($('#ps').val()==''){
		       alert("请输入密码");
		       $('#ps').focus();
		       return;
	       }else if($('#pss').val()==''){
		       alert("请输入确认密码");
		       $('#pss').focus();
		       return;
	       }else if($('#name').val()==''){
		       alert("请输入名称");
		       $('#name').focus();
		       return;
	       }else if($('#age').val()==''){
		       alert("请输入密码");
		       $('#age').focus();
		       return;
	       }
		   
		   if($('#ps').val()!=$('#pss').val()){
			   alert('输入密码和确认密码不一致');
			   return ;
		   }
		   
		   var reg=/^(?:[1-9][0-9]?|1[01][0-9]|120)$/;
		   if(reg.test($('#age').val())){
		   }else{
			   alert("输入年龄范围(1-120)");
			   return;
		   }
		   
		   
		   var sendData={"username":$('#username').val(),"password":$('#ps').val(),"passwords":$('#pss').val(),"name":$('#name').val(),"age":$('#age').val()};
		$.ajax({
			type:"post",
			url:"user/register.do",
			data:sendData,
			datatype:'json',
			success:function(msg){
                if(msg.state==1){
					alert(msg.message);
				}
				else{
					alert(msg.message);
					}
				},
			error:function(msg){
				alert('通信失败');
			}
		});
	})
   })

测试
在这里插入图片描述
成功添加到数据库且id与密码为加密状态在这里插入图片描述
登录成功
在这里插入图片描述

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下﹁秒待續

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值