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。没有对该情况进行处理。