`

springmvc的rest风格之二实现用户登录(自定义异常处理)

 
阅读更多

自定义异常类UserException.java

package com.test.exception;

public class UserException extends RuntimeException {

	public UserException(String message) {
		super(message);
	}

}

 

Action控制器UserController.java中类名上添加:

@SessionAttributes("loginUser"),表示loginUsersession属性,为在用户列表上显示当前登录人做准备

然后添加:

/**
 * 登录前
 * 
 * @return
 */
@RequestMapping(value = {"/loginUserPro", "/"}, method = RequestMethod.GET)
public String loginUserPro() {
	return "user/loginUser";
}

/**
 * 登录
 * 
 * @param username
 * @param password
 * @param model
 * @return
 */
@RequestMapping(value = "/loginUser", method = RequestMethod.POST)
public String loginUser(String username, String password, Model model) {
	if (!users.containsKey(username)) {
		throw new UserException("用户名不存在!");// 异常捕获
	}
	if (!password.equals(users.get(username).getPassword())) {
		throw new UserException("密码不正确!");// 异常捕获
	}
	// 把登录用户名的信息保存到session的loginUser中,注意loginUser和上面@SessionAttributes中的参数保持一致
	model.addAttribute("loginUser", users.get(username));
	return InternalResourceViewResolver.REDIRECT_URL_PREFIX + "/user/userList";
}

// 局部异常处理
@ExceptionHandler(UserException.class)
public String handlerException(Exception e, HttpServletRequest request) {
	request.setAttribute("e", e);
	return "user/loginUser";
}

 

用户列表页面/jsp/user/userList.jsp添加:登录用户名:${loginUser.username }

<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>用户列表</title>
</head>
<body>
	登录用户名:${loginUser.username }
	<table border="1">
		<tr>
			<th>用户名</th>
			<th>别名</th>
			<th>密码</th>
			<th>邮箱</th>
		</tr>
		<c:forEach items="${users}" var="user">
			<tr>
				<td>${user.value.username }</td>
				<td>${user.value.nickname }</td>
				<td>${user.value.password }</td>
				<td>${user.value.email }</td>
			</tr>
		</c:forEach>
	</table>
</body>
</html>

 

登录页面/jsp/user/loginUser.jsp

<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>添加用户</title>
</head>
<body>
	<!-- 显示自定义局部异常信息 -->
	<font color="red">${e.message }</font><br>
	<form method="post" action="loginUser">
		用户名:<input type="text" name="username"/><br>
		密码:<input type="password" name="password"/><br>
		<input type="submit" value="登录"/>
	</form>
</body>
</html>

 

在浏览器中输入:

http://127.0.0.1:9900/springmvc_005_rest_02/user/,页面随便填写,显示结果

 

 

用户名输入:ldh,密码输入:1,直接跳转到用户列表页面

 

知识扩展:

关于异常处理,spring提供了全局的异常处理:

去掉Action控制器UserController.java中的handlerException局部异常处理方法

springmvc配置文件spring-mvc.xml中添加关于全局异常处理的配置

<!-- 全局异常处理 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
	<property name="exceptionMappings">
		<props>
			<!-- 设置显示异常信息的视图逻辑 -->
			<prop key="com.test.exception.UserException">user/loginUser</prop>
		</props>
	</property>
</bean>

 

这个时候传递到loginUser.jsp页面上的存放异常信息参数名默认就是exception(修改登录页面/jsp/user/loginUser.jspeexception)

  • 大小: 1.8 KB
  • 大小: 1.8 KB
  • 大小: 4 KB
分享到:
评论

相关推荐

    springmvc之rest风格的crud

    Spring MVC允许自定义异常处理器,通过`@ExceptionHandler`注解来捕获并处理特定的运行时异常。 10. **测试REST服务** 使用诸如Postman这样的工具,可以方便地发送各种HTTP请求,测试REST服务的功能和性能。 在`...

    SpringMVC-REST风格和SSM整合(注解版)彩色PPT版本.pptx

    REST风格简介 2、RESTful入门案例 入门案例 请求方法设定 请求路径参数 3、REST快速开发 RESTful快速开发(标准开发) @RestController 标准请求动作映射(4种) 4、案例:基于RESTful页面数据交互 5、SSM整合 ...

    SpringMvc_RestfullAPI

    4. **异常处理**:使用`@ExceptionHandler`注解可以自定义全局或局部的异常处理逻辑,提升API的健壮性。 5. **验证**:SpringMvc支持JSR-303/JSR-349 Bean Validation标准,可以通过`@Valid`和`@Validated`注解进行...

    T4模版生成SpringMVC构造REST代码源代码

    例如,可能需要集成身份验证、日志记录、异常处理等功能。同时,结合其他工具如Swagger,可以自动生成API文档,进一步提升开发效率。 总之,这个资源为基于SpringMVC的RESTful服务开发提供了一种自动化工具,通过T4...

    springmvc+rest+json交互+接口

    5. **错误处理**:使用`@ExceptionHandler`注解处理可能出现的异常,返回自定义的错误信息,保持API的一致性。 6. **测试**:使用Postman或者JUnit测试你的REST接口。发送不同类型的HTTP请求,并检查返回的JSON数据...

    springmvc restful风格示例 增删改查完整版

    例如,可以使用`@ExceptionHandler`注解处理异常,Spring Security提供安全控制,Log4j或SLF4J实现日志记录。 总结来说,本示例项目展示了如何利用Spring MVC构建RESTful API,实现对用户资源的增删改查操作。这...

    SpringMVC面试专题及答案.zip

    8. **拦截器(Interceptor)**:SpringMVC的拦截器允许在请求处理前后插入自定义逻辑,例如权限检查、日志记录等。通过实现HandlerInterceptor接口并配置在MVC配置中,即可启用拦截器。 9. **AOP(面向切面编程)**...

    springmvc 3.2.8 restful支持

    8. **异常处理**:Spring MVC提供了全局异常处理机制,通过`@ControllerAdvice`和`@ExceptionHandler`注解,可以集中处理异常并返回自定义的错误响应。 在实际开发中,结合以上知识,我们可以构建一个完整的RESTful...

    restful webservice in springMVC Demo

    5. **错误处理**:通过自定义异常处理器或使用全局异常处理注解`@ExceptionHandler`来处理可能出现的错误情况。 在"restful webservice in springMVC Demo"中,开发者可能创建了一个简单的REST服务,例如,用于管理...

    Java进阶之SpringMVC高级技术共7页.pdf.z

    8. **异常处理**:SpringMVC提供了全局异常处理机制,可以集中处理所有Controller抛出的异常。 9. **数据绑定和验证**:SpringMVC支持自动将请求参数绑定到Bean属性,并能进行数据验证。 10. **多文件上传**:通过...

    springMVC完整教程及学习文件

    SpringMVC提供了统一的异常处理机制,可以配置一个或多个@ControllerAdvice注解的类,里面包含@ExceptionHandler方法来捕获和处理特定类型的异常,从而避免在每个Controller中都写异常处理代码。 八、RESTful风格 ...

    springmvc全面的学习资料

    - **转换器与格式化器**:自定义类型转换器和格式化器,以处理复杂的数据类型和格式化需求。 5. **异常处理** - **全局异常处理**:设置 `@ExceptionHandler` 处理特定异常,或者配置 `@ControllerAdvice` 进行...

    springMVC接口化实践

    6. **拦截器(Interceptor)**:SpringMVC的拦截器机制允许我们在请求处理前后执行自定义逻辑,例如进行权限验证、日志记录等。通过实现HandlerInterceptor接口并配置在SpringMVC配置中,可以实现全局的接口拦截处理...

    springmvc从入门到精通的代码.rar

    可以自定义拦截器,实现预处理和后处理功能,例如登录检查、日志记录等。 6. **视图解析**: 使用 `ModelAndView` 或直接返回视图名,Spring MVC 会根据配置的视图解析器解析为实际的视图。 7. **异常处理**: ...

    《一头扎进SpringMvc》第二讲 源码

    9. **异常处理**:Spring MVC提供了优雅的异常处理机制,可以全局统一处理异常,通过@ControllerAdvice和@ExceptionHandler注解,可以定义全局异常处理器。 10. **RESTful支持**:Spring MVC支持RESTful风格的URL...

    springMVC 例子

    10. **拦截器(Interceptor)**:拦截器允许在请求被Controller处理之前或之后执行自定义逻辑,例如登录检查、性能监控等。 11. **异常处理**:通过配置或注解,SpringMVC可以优雅地处理异常,提供统一的错误页面或...

    北京动力节点-Reyco郭-SpringMVC4

    6. **异常处理**:掌握如何自定义异常处理器,以优雅地处理程序运行时可能出现的错误和异常。 7. **验证**:了解SpringMVC中的数据验证机制,如使用Hibernate Validator进行前端和后端的数据校验。 8. **文件上传...

    SpringMVCDemo

    10. **异常处理**:SpringMVC 提供了全局异常处理机制,可以通过 `@ExceptionHandler` 注解或配置 `HandlerExceptionResolver` 实现。 11. **验证**:SpringMVC 集成了 Hibernate Validator,允许对输入数据进行...

    传智博客SpringMvc课堂笔记和老师教案

    4. **异常处理**:学习如何自定义全局异常处理器,统一处理应用程序可能出现的错误。 5. **拦截器**:通过编写Interceptor,实现预处理和后处理逻辑,如权限验证、日志记录等。 6. **文件上传下载**:掌握处理文件...

    springmvc系列教程PDF精讲.

    10. **RESTful API**:理解RESTful风格的URL设计,以及如何在SpringMVC中创建REST服务,包括使用HTTP动词(GET、POST、PUT、DELETE)和处理JSON数据。 11. **拦截器(Interceptor)**:介绍SpringMVC的拦截器机制,...

Global site tag (gtag.js) - Google Analytics