服务端验证的问题处理

在使用服务端验证的时候,因为各种需求的不同,可以用作一下的几个处理。

1、使用sql语句的验证

  就是在写sql语句的时候,进行用户名和密码的匹配查询。如:where name = ? and password = ?。在客户端请求时,在servlet层获取用户名和密码参数。并调用该方法,如果返回有值,则验证通过。反之,不通过。

  通过这种方法。在客户端提示页面错误信息的时候,可能体验感不是太好。因为不能准确的提示用户,是用户名输入错误,还是密码输入错误。

//获取请求的用户名和参数
String name = req.getParameter("name");
String password = req.getParameter("password");

//方法类
UserDao userDao = new UserDao();

//通过sql验证
List<User> user = userDao.findUser(name,password);

//判断
if(user.size() > 0){// 验证通过
    //通过:跳转页面
}else{// 验证不通过
    //提示:用户名或密码错误
}

2、使用List集合存储后台数据信息,再进行验证

  写sql语句的时候是获取后台所有的数据信息。如:select * from 表。在客户端请求时,在servlet层获取用户名和密码参数。并遍历List集合,把List中的用户名和密码与servlet获取到的参数进行比较验证。

  通过这种方法。在验证后处理页面的跳转信息的时候。很难去处理。

  下面的方法进行处理后,可以使用户界面出现错误是得到较好的体验。

//获取请求的参数
String name = req.getParameter("name");
String password = req.getParameter("password");

//方法类
UserDao userDao = new UserDao();
// 获取后台所有的用户信息 sql语句:select * from user List<User> findAllUser = userDao.findAllUser(); //把List<User>集合中的用户名和密码单独抽离封装成一个集合 List<String> collectName = findAllUser.stream().map(User::getName).collect(Collectors.toList()); List<String> collectPassword = findAllUser.stream().map(User::getPassword).collect(Collectors.toList()); //进行验证 if (collectName.contains(name)) {// 验证用户名 if (collectPassword.contains(password)) {// 验证密码 //验证通过 } else {       //验证不通过,提示用户:密码错误 } } else { //验证不通过,提示用户:用户名错误 }

  

猜你喜欢

转载自www.cnblogs.com/huangcan1688/p/12307587.html