service中的代码实现
==public User userLogin(User user) throws Exception {
User user2 = ud.userLogin(user);
==if(user2==null){
人为抛出异常
throw new RuntimeException("密码错误!");
}
if(user2.getState()==0){==
人为抛出异常
throw new RuntimeException("帐户未激活!");
}else{
return user2;
}
}==
servlet中的代码实现(包含记住用户名功能)
public String userLogin(HttpServletRequest request, HttpServletResponse response) throws Exception {
//获取表单数据
Map map = request.getParameterMap();
//创建user对象存储获取的账号密码
User user=new User();
//调用工具类自动完成数据的匹配与加载
MyBeanUtils.populate(user, map);
//获取自动登陆选择
String aLogin=request.getParameter("aLogin");
//获取记住用户名选择
String rName=request.getParameter("rName");
//获取cookies
Cookie[] cookies = request.getCookies();
//查找指定的cookie
Cookie cookie = CookUtils.getCookieByName("aLogin", cookies);
System.out.println((rName!=null));
if(rName!=null){
request.getSession().setAttribute("rNameSession",user.getUsername());
System.out.println("是否选择"+rName+"================用户名:"+user.getUsername());
}
else{
request.getSession().setAttribute("rNameSession",null);
}
try{
//调用service方法
UserService us=new UserServiceImp();
//创建user对象用来存储service查询获得到的user
User user02=new User();
//利用抛异常的方法分情况处理登陆的问题
//执行service方法获得用户信息
user02=us.userLogin(user);
//将用户信息传到前台
request.getSession().setAttribute("user",user02);
//判断用户是否选择自动登陆按钮
if(aLogin!=null){
//选择自动登陆
cookie=new Cookie("aLogin",user02.getUsername()+"#"+user02.getPassword());
cookie.setMaxAge(60*60*24*7);//7天有效期
//设置有效路径
cookie.setPath("/store_07");
//将cookie上传到前端
response.addCookie(cookie);
}
response.sendRedirect("/store_07/jsp/index.jsp");
return null;
}catch (RuntimeException e) {
String msg=e.getMessage();
request.getSession().setAttribute("msg",msg);
return "/jsp/login.jsp";
}catch (Exception e) {
System.out.println(e.getMessage());
}
return null;
}
记住用户名功能的实现思想
这个判断必须在前面执行,因为不用跳转页面,不用返回值,所以,不会影响后面的代码的执行。
在jsp页面在传值的时候也要进行判断如果,servlet传过来上次是选择记住用户名的话,就一直记住用户名。反正依然。
在java页面判断如果选择记住用户名,就将本次的用户名和传到前端。
<input type="checkbox" name="rName" value="${user.rNameSession }" checked="checked"> 记住用户名
</c:if>
<c:if test="${empty rNameSession }">
<input type="checkbox" name="rName" value="rName"> 记住用户名
</c:if>```