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";//跳转到展示页面
        }
View Code

登录

//登录方法
        @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>

有全局异常的时候要把局部异常的方法注释了

 

posted @ 2015-11-10 16:24  夏末、初秋  阅读(253)  评论(0编辑  收藏  举报