登陆功能的实现

本文详细介绍了使用Spring Security Manager (SSM) 构建的登录功能,包括前端表单设计、Controller接收与处理、Service查询验证与异常处理,以及Mapper层的SQL操作。重点展示了如何在前后端交互中确保数据校验和安全。
摘要由CSDN通过智能技术生成

这是基于ssm框架,简单的登录功能实现

1、前端登陆页面


<form action="/login">
<div id="r1" align="center">
<img src="/imgs/w.jpg" alt="hhhh" width="200" height="200">
	<div>
	用户名:<input type="text" name="name"><br><br>
	密&nbsp;&nbsp;&nbsp;&nbsp;码:<input type="password" name="password"><br><br>
	 <button id="loginButton" type="button" class="btn btn-primary btn-block"><i class="fa fa-sign-in fa-lg fa-fw"></i>登陆</button>
	<a href="/userupdate.jsp">注册</a>
	</div>
</div>
</form>
 <script type="text/javascript">

     function login(){
	    	$("#loginForm").ajaxSubmit({//获取表单数据,并执行表单中设置的路径
	    		success:function(msg){//后端返回是一个对象
	    			if(msg.success){
	    				location.href="/system/index";
	    			}else{
	    				alert(msg.error)
	    			}
	    		}
	    	})
     }
 </script>

        表单数据会提交到from属性中action对应的路径中,上面设置的路径为"/login",所以我们应该在controller层中有一个对应的方法路径,后端接收的参数需要设置与表单<input>中name属性值一样,要求类型与名字相同,否则会报数据类型不匹配(400)。

2、controller层接收代码:

	@RequestMapping(value="/login",method=RequestMethod.POST)
	@ResponseBody
	public LoginResult gologin(String name,String password){//与表单一致
		
		try {
			User dbuser = userservice.findByuser(name,password);
			return new LoginResult();
		} catch (Exception e) {
			e.printStackTrace();
			return new LoginResult(false,e.getMessage());	
		}
	}

        返回类型可以设置为一个对象,里面放置两个字段,分别是判断是否成功和接收异常信息,下面为返回类型的定义:

public class LoginResult {
	private Boolean success = true;
	private String error;

        controller层接收到参数后调用service层中的方法,此方法的作用是通过前端传过来的参数(用户名)查询数据库中受否有这条数据,如果没有则返回用户名不存在,反之如果数据库中存在,则拿前端传过来的password与数据库中查出来的password字段作二次判断,两个密码相等则登录成功。

3.service层代码部分

public User findByuser(String name,String password) {
		User dbuser = usermapper.findByusername(name);
		if(dbuser==null){
			throw new RuntimeException("用户名不存在");
		}else{
			if(!dbuser.getPassword().equals(password)){
				throw new RuntimeException("密码错误");
		}else{
				return dbuser;
			}
		}
	}

调用mapper层,查询数据库的数据,返回一个对象。小伙伴们看到这可能会疑惑throw new RuntimeException("异常信息"),这是抛异常信息,那会到哪里去呢,如果疑惑可以往上翻controller层中的代码,返回对象LoginResult(false,e.getMessage());中的e.getMessage()可以获取异常信息,这样,就可以完美地返回给前端啦。

补充:数据库中的表的数据一般会对应一个实体类(放在domain),里面的字段与表的列属性对应,一张表会对应一个Xxxmapper接口,接口里面写处理数据的方法(比如这里的通过用户名查询数据),然后在映射文件(文件名:Xxxmapper.xml)中写相应的sql语句实现功能,至于如何将接口和映射文件相关联,以及如何在Xxxmapper.xml里面写sql,就等下次更新吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值