栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第3章业务功能开发(用户登录)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第3章业务功能开发(用户登录)

1.客户需求(需求开发说明书)

用户在登录页面,输入用户名和密码,点击"登录"按钮或者回车,完成用户登录的功能.

*用户名和密码不能为空

*用户名或者密码错误,用户已过期,用户状态被锁定,ip受限 都不能登录成功

*登录成功之后,所有业务页面显示当前用户的名称

*实现10天记住密码

*登录成功之后,跳转到业务主页面

*登录失败,页面不跳转,提示信息

2.首先明确需求,规划程序访问流程,画好UML顺序图再编写代码,方便以后对项目进行管理,同时也是开发规范的硬性要求

3.前面已经使用mybatis逆向工程创建了UserMapper文件,自动创建的文件中已经包含了增删改查等基本操作语句,为了理解开发的流程,再自己写一个查询用户的语句添加进去。

mapper文件目录位置

UserMapper接口

package com.it.crm.settings.mapper;

import com.it.crm.settings.entity.User;

import java.util.Map;

public interface UserMapper {
    
    int deleteByPrimaryKey(String id);

    
    int insert(User record);

    
    int insertSelective(User record);

    
    User selectByPrimaryKey(String id);

    
    int updateByPrimaryKeySelective(User record);

    
    int updateByPrimaryKey(User record);

    
    User selectUserByActAndPwd(Map map);
}

UserMapper.xml文件




  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  
  
    
    id, login_act, name, login_pwd, email, expire_time, lock_state, deptno, allow_ips, 
    createTime, create_by, edit_time, edit_by
  
  
select

from tbl_user
where login_act=#{loginAct} and login_pwd=#{loginPwd}
  

4.创建service层文件

UserService接口

package com.it.crm.settings.service;

import com.it.crm.settings.entity.User;

import java.util.Map;

public interface UserService {
    User queryUserByActAndPwd(Map map);
}

UserServiceImpl类

package com.it.crm.settings.service.impl;

import com.it.crm.settings.entity.User;
import com.it.crm.settings.mapper.UserMapper;
import com.it.crm.settings.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Map;

@Service("userService")
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User queryUserByActAndPwd(Map map) {
        return userMapper.selectUserByActAndPwd(map);
    }
}

5.创建web层下的controller层

UserController类

package com.it.crm.settings.web.controller;

import com.it.crm.commons.contants.Contants;
import com.it.crm.commons.entity.ReturnObject;
import com.it.crm.commons.utils.DateUtils;
import com.it.crm.settings.entity.User;
import com.it.crm.settings.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Controller
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping(value = "/settings/qx/user/toLogin.do")
    public String toLogin(){
        return "settings/qx/user/login";
    }

    @RequestMapping(value = "/settings/qx/user/login.do")
    @ResponseBody
    public Object login(String loginAct, String loginPwd, String isRemPwd, HttpServletRequest request, HttpSession session){
        //封装参数
        Map map=new HashMap<>();
        map.put("loginAct",loginAct);
        map.put("loginPwd",loginPwd);
        map.put("isRemPwd",isRemPwd);
        //调用service层方法,查询用户
        User user = userService.queryUserByActAndPwd(map);
        //根据查询结果生成响应信息
        ReturnObject returnObject=new ReturnObject();
        if (user==null){
            //登录失败,用户名或密码错误
            returnObject.setCode(Contants.RETURN_OBJECT_CODE_FAIL);
            returnObject.setMessage("用户名或密码错误");
        }else {//进一步判断账号是否合法
            if (DateUtils.formateDateTime(new Date()).compareTo(user.getExpireTime())>0){
                //登录失败,账号已过期
                returnObject.setCode(Contants.RETURN_OBJECT_CODE_FAIL);
                returnObject.setMessage("账号已经过期");
            }else if ("0".equals(user.getLockState())){
                //登录失败,状态被锁定
                returnObject.setCode(Contants.RETURN_OBJECT_CODE_FAIL);
                returnObject.setMessage("状态被锁定");
            }else if (!user.getAllowIps().contains(request.getRemoteAddr())){
                //登录失败,ip受限
                returnObject.setCode(Contants.RETURN_OBJECT_CODE_FAIL);
                returnObject.setMessage("ip受限");
            }else{
                //登录成功
                returnObject.setCode(Contants.RETURN_OBJECT_CODE_SUCCESS);
                //把user保存到session中
                session.setAttribute(Contants.SESSION_USER,user);
            }
        }
        return returnObject;
    }
}

UserController类调用了该项目中的通用层commons下多个类

如下所示

 Contants类

把条件常量用封装好的类中的方法表示,有利于后期维护时,更改条件值时只更新该处,不需要更改整个项目

package com.it.crm.commons.contants;

//定义常量类,有利于后期维护
public class Contants {
    //保存ReturnObject类中的Code值
    public static final String RETURN_OBJECT_CODE_SUCCESS="1";//成功
    public static final String RETURN_OBJECT_CODE_FAIL="0";//失败

    //保存session中当前用户的key
    public static final String SESSION_USER="sessionUser";
}

 ReturnObject类

package com.it.crm.commons.entity;

public class ReturnObject {
    private String code;//处理成功或者失败的标记,1:成功,0:失败
    private String message;//提示信息
    private Object returnData;//返回其他数据

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

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

    public Object getReturnData() {
        return returnData;
    }

    public void setReturnData(Object returnData) {
        this.returnData = returnData;
    }

    @Override
    public String toString() {
        return "ReturnObject{" +
                "code='" + code + ''' +
                ", message='" + message + ''' +
                ", returnData=" + returnData +
                '}';
    }
}

DateUtils类(时间工具类)

package com.it.crm.commons.utils;

import java.text.SimpleDateFormat;
import java.util.Date;

//对Date类型数据进行处理的工具类
public class DateUtils {

    //对指定的date对象进行格式化
    public static String formateDateTime(Date date){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = sdf.format(date);
        return format;
    }
    //对指定的date对象进行格式化
    public static String formateDate(Date date){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        String format = sdf.format(date);
        return format;
    }
    //对指定的date对象进行格式化
    public static String formateTime(Date date){
        SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");
        String format = sdf.format(date);
        return format;
    }

}

6.创建webapp下的登录页面

login.jsp

使用ajax异步传输判断,如果账号密码为空直接弹出提示框,不为空时进入UserController类 进行账号密码的各种验证,全部正确跳转到WorkBenchIndexContoller类,不正确时在登录页面上显示错误信息。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
	String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
%>



	




    



	
		
	
	
		CRM  客户关系管理系统
	
	
	
		
			
				登录
			
			
  

7.创建workbench包下的web层

 WorkBenchIndexContoller类

登录成功时跳转到该类

package com.it.crm.workbench.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class WorkBenchIndexContoller {

    @RequestMapping(value = "/workbench/index.do")
    public String index(){
        //跳转到业务主页面
        return "workbench/index";
    }
}

 8.创建工作台首页

 index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
%>



	







	
	
	
		
			
				
					
					

我的资料 姓名:张三

登录帐号:zhangsan

组织机构:1005,市场部,二级部门

邮箱:zhangsan@bjpowernode.com

失效时间:2017-02-14 10:10:10

允许访问IP:127.0.0.1,192.168.100.2

修改密码

离开

您确定要退出系统吗?

CRM  客户关系管理系统(LJL)
  • ${sessionUser.name}
    • 系统设置
    • 我的资料
    • 修改密码
    • 退出
  • 工作台
  • 动态
  • 审批
  • 客户公海
  • 市场活动
  • 线索(潜在客户)
  • 客户
  • 联系人
  • 交易(商机)
  • 售后回访
  • 统计图表
    •     市场活动统计图表
    •     线索统计图表
    •     客户和联系人统计图表
    •     交易统计图表
  • 报表
  • 销售订单
  • 发货单
  • 跟进
  • 产品
  • 报价

项目效果展示

 直接点击登录

输入用户名后点击登录

 全部输入后

 输入正确的用户名和密码

数据库用户表信息如下所示

输入李四信息登录

输入张三信息登录

已经进入到了工作台主页面

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005855.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号