crm首页功能和用户登录
目錄
首頁功能
用戶登錄
首頁功能
?
流程圖
?整體思路:輸入url,跳轉發送請求到IndexController,在indexController請求轉發到跳轉到index.jsp頁面。index.jsp頁面通過window.location去請求Usertroller中的toLogin方法,toLogin方法請求轉發跳轉到login.jsp登錄頁面。
1.輸入url跳轉請求,請求IndexController。
2.請求到IndexController,接著直接請求轉發跳轉到index.jsp。
IndexController
package com.bjpowernode.crm.web.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;@Controller public class IndexController {/*理論上,給Controller方法分配url:http://127.0.0.1:8080/crm/為了簡便,協議://ip:port/應用名稱必須省去,用/代表應用根目錄下的/*/@RequestMapping("/")public String index(){//請求轉發return "index";} }?請求轉發這里有視圖解析器,所以可以省略,完整的為/WEB-INF/pages/index.jsp,訪問這個頁面。
index.jsp
該jsp在tomcat運行是個頁面響應給瀏覽器,該頁面通過window.location發請求訪問UserController中的toLogin方法。(響應信息返回,一個資源目錄對應一個controller,所以login.jsp是在user目錄下,我們也新創建個UserController)
UserController
@Controller public class UserController {@Autowiredprivate UserService userService;/*** url要和controller方法處理完請求之后,響應信息返回的頁面的資源目錄保持一致*/@RequestMapping("/settings/qx/user/toLogin.do")public String toLogin(){//請求轉發到登錄頁面return "settings/qx/user/login";} }請求轉發到login.jsp后,頁面響應給瀏覽器。
用戶登錄
?
整體思路: 輸入用戶名和密碼點登錄按鈕,發請求到UserController,UserController調用service層和mapper層,去查詢并返回user對象。對返回的user對象,判斷非空、是否過期、賬號狀態、ip是否符合等條件。都符合則登錄成功,否則登錄失敗。給前端返回響應信息。
tbl_user表
LoginDto
?LoginDto繼承User實體類,帶上isRemPwd表示是否記住密碼。
UserController
返回ReturnObject對象,封裝code和message。
@Controller public class UserController {@Autowiredprivate UserService userService;@RequestMapping("/settings/qx/user/Login.do")@ResponseBodypublic ReturnObject login(LoginDto loginDto, HttpServletRequest request, HttpServletResponse response, HttpSession session){ // //把request封裝進loginDto // loginDto.setData(request);User user = userService.QueryByLoginActAndPwd(loginDto);//根據返回的user對象,進行非空、過期、狀態、ip的判斷if (user != null){//把時間轉成字符串,用String的compareTo方法比較大小//獲取當前時間Date date = new Date();//調用工具類中方法 將日期轉成數據庫中 日期的格式String nowStr = DateTimeUtils.formatDateTime(date);//判斷是否過期if(nowStr.compareTo(user.getExpireTime()) > 0){//賬號過期登陸失敗return new ReturnObject(Constants.RETURN_OBJECT_CODE_FAIL,"賬號已過期");} else if ("0".equals(user.getLockState())) {//賬號被鎖定登陸失敗return new ReturnObject(Constants.RETURN_OBJECT_CODE_FAIL,"賬號鎖定");} else if (! user.getAllowIps().contains(request.getRemoteAddr())) {//ip不符合return new ReturnObject(Constants.RETURN_OBJECT_CODE_FAIL,"ip不符合");}else {//登陸成功ReturnObject returnObject = new ReturnObject(Constants.RETURN_OBJECT_CODE_SUCCEED, "登陸成功");//把用戶名存到session中session.setAttribute(Constants.SESSION_USER,user);//判斷isRemPwd,是否需要把用戶名密碼存到cookieif ("true".equals(loginDto.getIsRemPwd())){Cookie c1 = new Cookie("loginAct", loginDto.getLoginAct());c1.setMaxAge(10*24*60*60);response.addCookie(c1);Cookie c2 = new Cookie("loginPwd", loginDto.getLoginPwd());c2.setMaxAge(10*24*60*60);response.addCookie(c2);}else {//沒有選擇記住密碼,刪除cookieCookie c1 = new Cookie("loginAct", "1");c1.setMaxAge(0);response.addCookie(c1);Cookie c2 = new Cookie("loginPwd", "1");c1.setMaxAge(0);response.addCookie(c2);}return returnObject;}}else{//user為空,返回相應的ReturnObject對象return new ReturnObject(Constants.RETURN_OBJECT_CODE_FAIL,"用戶名或密碼錯誤");}} }controller記得要被springmvc的配置文件或配置類掃描到
UserServiceImpl?
@Service("UserService") public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;/*** 根據用戶名和密碼查詢user對象* @param loginDto* @return*/@Overridepublic User QueryByLoginActAndPwd(LoginDto loginDto) {//取出user的用戶名和密碼,封裝為map<String ,Object>String loginAct = loginDto.getLoginAct();String loginPwd = loginDto.getLoginPwd();Map<String, Object> map = new HashMap<>();map.put("loginAct",loginAct);map.put("loginPwd",loginPwd);//調用mapper查詢方法User user = userMapper.selectByLoginActAndPwd(map);return user;} }?UserMapper
public interface UserMapper {/*** 根據用戶名和密碼查詢用戶* @param map* @return*/User selectByLoginActAndPwd(Map<String,Object> map); }Mapper接口要么添加@Mapper注解,要么讓spring配置文件掃描到sql映射文件。
當查詢完返回到UserController,做一系列判斷,返回登錄成功或失敗的ReturnObject對象。
其中判斷過期時間,通過把當前時間轉成數據庫對應格式的時間的字符串,用string中的compareTo方法比較大小來判斷是否過期。
返回的ReturnObject中的code,單獨寫在Constants中,需要時直接調用。
最后返回給前端json,要帶上@RequestBody注解。
需要注意的是:
發送 登錄請求后,前端 接收到返回對象,code為1瀏覽器請求WorkbenchIndexController,來跳轉到主頁面index.jsp。
@Controller public class WorkbenchIndexController {@RequestMapping("/workbench/index.do")public String index(){//跳轉到主頁面return "workbench/index";} }總結
以上是生活随笔為你收集整理的crm首页功能和用户登录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringCloud集成发送短信--容
- 下一篇: ARM——cortex-A7核 按键中断