登录页面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>

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

spring mvc实现登录+异常的更多相关文章

  1. spring mvc 全局处理异常

    spring框架支持很多种全局处理异常的方式 一.Spring MVC处理异常有4种方式: (1)使用Spring-MVC提供的SimpleMappingExceptionResolver: (2)实 ...

  2. spring MVC中定义异常页面

    如果我们在使用Spring MVC的过程中,想自定义异常页面的话,我们可以使用DispatcherServlet来指定异常页面,具体的做法很简单: 下面看我曾经的一个项目的spring配置文件: 1 ...

  3. spring MVC中的异常统一处理

    1.spring MVC中定义了一个标准的异常处理类SimpleMappingExceptionResolver 该类实现了接口HandlerExceptionResolver 2.看下SimpleM ...

  4. Spring MVC过滤器-登录过滤

    以下代码是继承OncePerRequestFilter实现登录过滤的代码: package com.test.spring.filter; import java.io.IOException; im ...

  5. spring mvc实现登录验证码

    一.实现图形验证码的基础类 VerifyCodeUtils.java,这个类是从网上摘抄的~ package com.comp.common; import java.awt.Color; impor ...

  6. Spring MVC怎么统一异常管理?

    1. 在类上加上@ControllerAdvice注解 2. 在方法上加上@ExceptionHandler注解 @ExceptionHandler(Exception.class) @Respons ...

  7. Spring MVC异常统一处理(包括普通请求异常以及ajax请求异常)

    通常SpringMVC对异常的配置都是返回某个jsp视图给用户,但是通过ajax方式发起请求,即使发生异常,前台也无法获得任何异常提示信息.因此需要对异常进行统一的处理,对于普通请求以及ajax请求的 ...

  8. Spring MVC重定向和转发以及异常处理

    SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...

  9. Spring MVC重定向和转发及异常处理

    SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...

随机推荐

  1. JSON与JSONP

    JSON JSON:一种用于在浏览器和服务器之间交换信息的基于文本的轻量级数据格式.是JS对象的字符串表示.例如:‘{''name":"aa","age&quo ...

  2. Navicat for mysql 显示中文乱码问题

    使用navicat for mysql 打开数据库时,使用Console插入和查询数据显示乱码 处理过程 1.查看数据库编码为" utf8 -- UTF-8 Unicode",也就 ...

  3. [CareerCup] 12.2 Find the Reason of Crash 找到程序崩溃的原因

    12.2 You are given the source to an application which crashes when it is run. After running it ten t ...

  4. Linux第六次学习笔记

    存储器层次结构 存储器系统是一个具有不同容量.成本和访问时间的存储设备的层次结构. CPU寄存器保存着最常用的数据. 主存储器(简称主存)暂时存放存储在容量较大的.慢速磁盘上的数据. 高速缓存存储器作 ...

  5. Slider 滚动条 Pagination分页插件 JS Ajax 数据范围筛选 加载 翻页 笔记

    入职以后的第二个任务  根据用户所选的价格范围 筛选数据 修复BUG - 筛选数据后 总数没有更新.列表显示错误.翻页加载错误 用到的一些知识点 jquery插件系列之 - Slider滑块 max ...

  6. Sublime Text 2 使用笔记(大全呀,菜鸟必看)

    下载和安装 Sublime Text2是一款开源的软件,不需要注册即可使用(虽然没有注册会有弹窗,但是基本不影响使用). 下载地址:http://www.sublimetext.com ,请自行根据系 ...

  7. 第一次作业---安卓开发工具Android studio发展演变

    Android studio2013年由谷歌推出,用于安卓端的开发,我所使用的版本为2015年5月推出的1.3.2. 1.安装.配置.作为麻瓜的我,刚刚接触Android studio时在安装方面走了 ...

  8. 视频播放实时记录日志并生成XML文件

    需求描述: 在JWPlayer视频播放过程中,要求实时记录视频观看者播放.暂停的时间,并记录从暂停到下一次播放时所经过的时间.将所有记录保存为XML文件,以方便数据库的后续使用. 实现过程: 尝试1: ...

  9. [转]数据库物化视图刷新SQL命令和查询被delete掉的数据

    原文地址:http://blog.csdn.net/wangyong191212/article/details/8024161 刷新物化视图的SQL命令: 在sql语句的命令窗口并输入如下命令: e ...

  10. poj1470 LCA Tarjan

    比较直接的题目,入门一下. #include<map> #include<queue> #include<stack> #include<cmath> ...