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继承父类方法
异常抛出后,显示出来很难看,我们最好自己创建一个页面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实现登录+异常的更多相关文章
- spring mvc 全局处理异常
spring框架支持很多种全局处理异常的方式 一.Spring MVC处理异常有4种方式: (1)使用Spring-MVC提供的SimpleMappingExceptionResolver: (2)实 ...
- spring MVC中定义异常页面
如果我们在使用Spring MVC的过程中,想自定义异常页面的话,我们可以使用DispatcherServlet来指定异常页面,具体的做法很简单: 下面看我曾经的一个项目的spring配置文件: 1 ...
- spring MVC中的异常统一处理
1.spring MVC中定义了一个标准的异常处理类SimpleMappingExceptionResolver 该类实现了接口HandlerExceptionResolver 2.看下SimpleM ...
- Spring MVC过滤器-登录过滤
以下代码是继承OncePerRequestFilter实现登录过滤的代码: package com.test.spring.filter; import java.io.IOException; im ...
- spring mvc实现登录验证码
一.实现图形验证码的基础类 VerifyCodeUtils.java,这个类是从网上摘抄的~ package com.comp.common; import java.awt.Color; impor ...
- Spring MVC怎么统一异常管理?
1. 在类上加上@ControllerAdvice注解 2. 在方法上加上@ExceptionHandler注解 @ExceptionHandler(Exception.class) @Respons ...
- Spring MVC异常统一处理(包括普通请求异常以及ajax请求异常)
通常SpringMVC对异常的配置都是返回某个jsp视图给用户,但是通过ajax方式发起请求,即使发生异常,前台也无法获得任何异常提示信息.因此需要对异常进行统一的处理,对于普通请求以及ajax请求的 ...
- Spring MVC重定向和转发以及异常处理
SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...
- Spring MVC重定向和转发及异常处理
SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...
随机推荐
- 使用Uploadify实现上传图片生成缩略图例子,实时显示进度条
不了解Uploadify的,先看看前一篇详细说明 http://www.cnblogs.com/XuebinDing/archive/2012/04/26/2470995.html Uploadify ...
- 模拟alert和confirm
啥也不说,先上图,有图有真相 :) 现在绝大多数网站都不用自带的alert和confirm了,因为界面太生硬了.因此这个插件就这样产生了... 来看插件的实现代码吧: (function () { $ ...
- sqlalchemy 的 Core 方式使用示例
知乎: sqlalchemy 的 Core 方式操作数据是一种怎样的体验? 答: 爽! 本文基于:win 10 + python 3.4 + sqlalchemy 1.0.13 基本步骤如下: 1. ...
- python 转 exe -- py2exe库实录
本文基于windows 7 + python 3.4 把python程序打包成exe,比较好用的库是py2exe 其操作步骤是: --> 编写python程序 --> 再额外编写一个导入了 ...
- 用 eric6 与 PyQt5 实现python的极速GUI编程(系列03)---- Drawing(绘图)(1)-- 绘写文字
[概览] 本文实现如下的程序:(在窗体中绘画出文字) 主要步骤如下: 1.在eric6中新建项目,新建窗体 2.(自动打开)进入PyQt5 Desinger,编辑图形界面,保存 3.回到eric 6, ...
- Caffe学习系列(17):模型各层数据和参数可视化
cifar10的各层数据和参数可视化 .caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1p ...
- IOS开发之—— 各种加密的使用(MD5,base64,DES,AES)
基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法)SHA(Secure Hash Algorithm ...
- Unity 3D本地发布WebPlayer版时Failed to download data file解决方案
遇到这个问题就是指Web服务器并没有支持这种*.unity3d文件类型.需要做的是在Web服务器中添加MIME类型: IIS 7 及以上版本: 在功能视图的IIS选项卡中: 双击打开MIME,选择添加 ...
- [BZOJ2753][SCOI2012]滑雪与时间胶囊(特殊的有向树形图)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2753 分析: 第一问:直接BFS扩展知道无法扩展 第二问: 看似就是最小树形图啊= = ...
- ThinkPHP之验证码的使用
ThinkPHP中已经提供了验证码的生成以及验证的功能.下面介绍如何使用验证码.编程的时候还是采用MVC的方式 View层 <!DOCTYPE html> <html> < ...