spring mvc实现登录+异常
登录页面login.jsp在webroot下
<body> <form action="user/login" method="post"> userName:<input type="text" name="userName"/><br/> password:<input type="password" name="password"/><br/> <input type="submit" value="登录"/> </form> </body>
map的遍历方法
<body> <form action="user/login" method="post"> userName:<input type="text" name="username"/><br/> password:<input type="password" name="password"/><br/> <input type="submit" value="登录"/> </form> </body> 遍历map的方法 //登录方法 @RequestMapping(value="/login",method=RequestMethod.POST) public String login(@RequestParam String userName,@RequestParam String password,HttpSession session){ //方法一:map遍历 //比对userList 遍历map(key value) //userList.values();//拿到一个conllection for(User user:userList.values()){ if(userName.equals(user.getUserName()) && password.equals(user.getPassword())){ System.out.println("登录成功!"); break; } } //方法二:userList.keySet() 得到key的集合,遍历set就行了 for(String key:userList.keySet()){ System.out.println("key-->"+key+"value-->"+userList.get(key).getUserName()); } //方法三:iterator遍历 Iterator<Map.Entry<String, User>> itor = userList.entrySet().iterator(); while(itor.hasNext()){ Map.Entry<String, User> entry = itor.next(); System.out.println("key-->"+entry.getKey()+"value-->"+entry.getValue().getUserName()); } //方法四:遍历userList.entrySet() for(Map.Entry<String, User> entry:userList.entrySet()){ System.out.println("key-->"+entry.getKey()+"value-->"+entry.getValue().getUserName()); } return "redirect:/user/list";//跳转到展示页面 }
登录
//登录方法 @RequestMapping(value="/login",method=RequestMethod.POST) public String login(@RequestParam String userName,@RequestParam String password,HttpSession session){ boolean flag = false; for(User user:userList.values()){ if(userName.equals(user.getUserName()) && password.equals(user.getPassword())){ System.out.println("登录成功!"); session.setAttribute("loginUser", user); flag = true; break; } } // if(!flag){ throw new UserException("用户名,密码不正确,请重新输入!!"); //抛出一个runtimeException异常, } return "redirect:/user/list"; }
UserException(开发中,异常都是要自己写的)extends RuntimeException alt+shirt+s 找到superclass继承父类方法
UserException
异常抛出后,显示出来很难看,我们最好自己创建一个页面error.jsp来接收异常
<body> <h1>${e.message }</h1> </body>
这里用的是局部异常处理
//局部异常处理:只针对某一个controller @ExceptionHandler(value={UserException.class}) public String handlerException(UserException e,HttpServletRequest request){ request.setAttribute("e", e);//异常放到request里面 return "error"; }
全局异常处理
error.jsp界面
${exception.message }
在springmvc-servlet.xml配置文件中加入全局异常
<!-- 全局异常SimpleMappingExceptionResolver 注意是serlvet的包 --> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="pojo.UserException">error</prop> </props> </property> </bean>
有全局异常的时候要把局部异常的方法注释了