實現帶驗證碼的登錄功能由兩部分組成::1、驗證碼的獲取? ?2、登錄(進行用戶名、密碼和驗證碼的判斷)
獲取驗證碼
獲取驗證碼需要使用HuTool中的CaptchaUtil.createLineCaptcha()來定義驗證碼的長度、寬度、驗證碼位數以及干擾線條數
同時也要使用到HttpSession對象和HeepServletResponse對象? session:拿到驗證碼需要放入session中,response用來返回頁面
1、獲取驗證碼對象
LineCaptcha linCaptcha=CaprchaUtil.createLineCaptcha(116,40,4,10);
2、放入session
session.setAttribute("code",lineCaptcha.getCode);
3、輸出
ServletOutputStream stream=response.getOutputStream();
lineCaptcha.write(stream);
4、關閉
stream.close();
登錄
登錄功能首先要去判斷驗證碼,若驗證碼為空或者不匹配,直接返回錯誤;否則再去進行用戶名和密碼的對比
1、判斷驗證碼
String sessioncode=(String)session.getAttribute("code");
if(code!=null && code.equals(sessioncode)
{}
2、若驗證碼存在并且象征嗎匹配成功則去數據庫比對用戶名和密碼(這里我們需要創建一個新的sql語句 select * from user where username=#{username} &&? password=#{password})如何去創建一個新的sql語句請查看http://t.csdnimg.cn/y7rWT
String sessioncode=(String)session.getAttribute("code");
if(code!=null && code.equals(sessioncode)
{User user=userService.login(username,password);if(user!=null){//登錄成功session.setAttribute("user",user);}else{ //登錄失敗,用戶名或密碼有誤}
}
else
{ //登錄失敗,驗證碼有誤}
?創建一個新的sql語句 userService.login(username,password)
(1)Mapper中
@Select("select * from user where username=#{uesrname} && password=#{password}
public User login(String username,String password);
?(2)Service中
public User login(Sting username,String password);
?(3)ServiceImpl中
@Autowird
UserMapper userMapper@Overried
public User login(String username,String password)
{return userMapper.login(username,password);
}