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核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...
随机推荐
- MVC5 + EF6 + Bootstrap3 (10) 数据查询页面
文章来源:Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-search-page.html 系列教程:MVC ...
- Bootstrap系列 -- 16. 文本域textarea
文本域和原始使用方法一样,设置rows可定义其高度,设置cols可以设置其宽度.但如果textarea元素中添加了类名“form-control”类名,则无需设置cols属性.因为Bootstrap框 ...
- Dandelion - Distributed Computing on GPU Clusters
linq on GPUs 非常期待中 看起来很cool,期望早点面世
- js中模仿接口继承
一般情况下我们会这样写,但是这样写的话,不够美化或者直观. 如果我们可以这样写的话,感觉更好: 但是样子的话,我们没有考虑原型覆盖之类的,因为我们通常的情况,我们继承只有一层,在通常情况下,我们原型覆 ...
- SQL 内置排名函数 DENSE_RANK
求排名前五的数据信息: 实现一: select distinct top 5 Id,Title,sort from content order by sort DESC 实现二: select * f ...
- 【Aaronyang原创】用linq取出一个集合中重复的数据
文章已经迁移:http://www.ayjs.net/2013/07/69/ 文章已经迁移:http://www.ayjs.net/2013/07/69/ 文章已经迁移:http://www.ayjs ...
- Daily Scrum – 1/4
Meeting Minutes 大家讨论了一下作业的内容,以及用户的反馈,商量了一下长期计划(naive)的完成方式. 好像有些时候用户测试的时候会崩溃,不过我们自己用的时候一直没有出现过,分析可能是 ...
- Gson 的使用
Gson 的使用简介Gson 是 Google 开发的Java API,用于转换Java对象 和 Json 对象. 使用Maven 依赖<dependency> <groupId&g ...
- 用php生成数据字典
<?php header("Content-type: text/html; charset=utf-8"); $dbserver = "localhost&quo ...
- 求第N数大问题
问题: InputThe first line of input contains a single integer P, (1 ≤ P ≤ 1000), which is the number of ...