登录页面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. 网站如何启用SSL安全证书?IIS7启用新建Https:/

    网站使用SSL,通过SSL证书申请,然后导入之后.我们需要对网站进行设置才能正常使用SSL证书,具体如何操作让网站启用SSL呢,本经验以一个网站添加SSL主机头的方式为例来,网站启用SSL服务器安全证 ...

  2. Nginx学习记录

    本人刚刚接触Nginx,对这个强大的服务器还没有充分的了解,现在在这里对我在使用Nginx的过程中碰到的一些问题做些总结! 1.ssi配置问题 这里我贴上我的nginx.conf配置文件中server ...

  3. 从0开始学Java——JSP&Servlet——如何在Eclipse中配置Web容器为tomcat

    windows- >Preferences -> Server->runtime Envirement ->Add 点击下一步,然后按照如下设置:  

  4. 信息安全系统设计第二次&第四次实验

    实验二 固件设计  实验步骤: 环境配置如同实验一,承接实验一. 1.在虚拟机中编译代码.对于多线程相关的代码,编译时需要加-lpthread 的库. 2.下载调试在超级终端中运行可执行文件 pthr ...

  5. iOS 自定义控件开发(上)

    工作需要,最近在进行iOS方面的图表工作.找了很多第三方库都无法实现效果,所以决定自己写一个控件. <iOS 自定义控件开发(上)> <iOS 自定义控件开发(中)> #0 目 ...

  6. [USACO2005][POJ3169]Layout(差分约束)

    题目:http://poj.org/problem?id=3169 题意:给你一组不等式了,求满足的最小解 分析: 裸裸的差分约束. 总结一下差分约束: 1.“求最大值”:写成"<=& ...

  7. linux php配置ftp扩展

    linux+nginx+php+mysql环境下,在部署的时候没有添加php的ftp扩展. 1.找到安装的PHP源码包解压的文件夹进入到到FTP的扩展目录# /root/php-5.3.6/ext/f ...

  8. 3.3.1实现Servlet

    FirstServlet.java package com.helloweenvsfei.servlet; import java.io.IOException; import java.io.Pri ...

  9. 通过url链接登录其他系统

    目的:A系统通过链接跳转到其它系统(如B系统)并登录   技术方案 1.A系统用户登录B系统方案    1.A系统用户账号已经和B系统账号绑定,直接模拟登录    2.A系统用户账号未和B系统账号绑定 ...

  10. hdu2594 KMP

    2个字符长合并在一起即可.要注意next[n]的值要小于初始的两个字符串的长度; //next[]存的是之前相同的长度. //也是位置,只是s[i]不一定和s[next[i]]相同 //但是i之前的和 ...