电商模块开发-第二天

1.实现用户登录功能

//用户实体类
import
java.util.Date; public class User { private int id; private String loginName; private String password; private String name; private int sex; private String email; private String phone; private String address; private int role; private Date createDate; private int disabled; private String active; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public int getRole() { return role; } public void setRole(int role) { this.role = role; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } public int getDisabled() { return disabled; } public void setDisabled(int disabled) { this.disabled = disabled; } public String getActive() { return active; } public void setActive(String active) { this.active = active; } }
//dao层
@Repository("userDao") public interface UserDao { @Select("select * from ec_user where LOGIN_NAME=#{loginName}") public User selectByAccount(String loginName); }
//业务层及其实现类
public interface UserService {
    public Map<String,Object> login(String account,String password);
}

@Service("userService")
public class UserServiceImp implements UserService {
    @Resource
    private UserDao userDao;
    @Override
    public Map<String, Object> login(String loginName, String password) {   // 与之前代码的不同之处,在于使用了Map来进行封装结果,能够将处理信息在页面上显示。
        Map<String,Object> map=new HashMap<>();
        User user=userDao.selectByAccount(loginName);
        if (StringUtils.isEmpty(loginName) || StringUtils.isEmpty(password) ){   //StringUtils类属于spring框架中的。
            map.put("code",2);
            map.put("msg","不能为空!");
        }else{
            if (user!=null){
                if (user.getPassword().equals(password)){
                    map.put("code",0);
                    map.put("msg",user);
                } else{
                    map.put("code",1);
                    map.put("msg","密码错误!");
                }
            }else{
                map.put("code",3);
                map.put("msg","用户不存在!");
            }
        }
        return map;
    }
}
//servlet请求处理
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
     private HttpServletRequest request;
     private HttpServletResponse response;
     private UserService service1;
    @Override
    public void init() throws ServletException {
        super.init();
        ServletContext servletContext=this.getServletContext();
        WebApplicationContext context= WebApplicationContextUtils.getWebApplicationContext(servletContext);
        service1=(UserService)context.getBean("userService");
    }
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.request=req;                     //这里用到了this关键字,查看资料。
        this.response=resp;
        String param=request.getParameter("method");
        if(param.equals("getJsp")){
            req.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request,response);
        }else if(param.equals("login")){
            login();
        }
    }
    private void login() throws ServletException, IOException {
        String loginName=request.getParameter("loginName");
        String password=request.getParameter("passWord");
        Map<String,Object> map=service1.login(loginName,password);
        if ((int)map.get("code")==0){
            User user=(User)map.get("msg");
            request.getSession().setAttribute("USER",user);
        }else{
            String msg=map.get("msg")+"";   //+“”可将其转化为字符串。
            request.setAttribute("Msg",msg);
            request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request,response);
        }
    }
}

2.异常。

事件:过程中出现了空指针异常。

地点:在service的实现类中。

原因:少判断一种情况,数据库中不存在的用户进行登录时,导致user为null。没有对该情况进行处理。

猜你喜欢

转载自www.cnblogs.com/liu-chen/p/11705184.html