自定义异常类UserException.java
package com.test.exception; public class UserException extends RuntimeException { public UserException(String message) { super(message); } }
在Action控制器UserController.java中类名上添加:
@SessionAttributes("loginUser"),表示loginUser是session属性,为在用户列表上显示当前登录人做准备
然后添加:
/** * 登录前 * * @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.jsp中e为exception)
相关推荐
Spring MVC允许自定义异常处理器,通过`@ExceptionHandler`注解来捕获并处理特定的运行时异常。 10. **测试REST服务** 使用诸如Postman这样的工具,可以方便地发送各种HTTP请求,测试REST服务的功能和性能。 在`...
REST风格简介 2、RESTful入门案例 入门案例 请求方法设定 请求路径参数 3、REST快速开发 RESTful快速开发(标准开发) @RestController 标准请求动作映射(4种) 4、案例:基于RESTful页面数据交互 5、SSM整合 ...
4. **异常处理**:使用`@ExceptionHandler`注解可以自定义全局或局部的异常处理逻辑,提升API的健壮性。 5. **验证**:SpringMvc支持JSR-303/JSR-349 Bean Validation标准,可以通过`@Valid`和`@Validated`注解进行...
例如,可能需要集成身份验证、日志记录、异常处理等功能。同时,结合其他工具如Swagger,可以自动生成API文档,进一步提升开发效率。 总之,这个资源为基于SpringMVC的RESTful服务开发提供了一种自动化工具,通过T4...
5. **错误处理**:使用`@ExceptionHandler`注解处理可能出现的异常,返回自定义的错误信息,保持API的一致性。 6. **测试**:使用Postman或者JUnit测试你的REST接口。发送不同类型的HTTP请求,并检查返回的JSON数据...
例如,可以使用`@ExceptionHandler`注解处理异常,Spring Security提供安全控制,Log4j或SLF4J实现日志记录。 总结来说,本示例项目展示了如何利用Spring MVC构建RESTful API,实现对用户资源的增删改查操作。这...
8. **拦截器(Interceptor)**:SpringMVC的拦截器允许在请求处理前后插入自定义逻辑,例如权限检查、日志记录等。通过实现HandlerInterceptor接口并配置在MVC配置中,即可启用拦截器。 9. **AOP(面向切面编程)**...
8. **异常处理**:Spring MVC提供了全局异常处理机制,通过`@ControllerAdvice`和`@ExceptionHandler`注解,可以集中处理异常并返回自定义的错误响应。 在实际开发中,结合以上知识,我们可以构建一个完整的RESTful...
5. **错误处理**:通过自定义异常处理器或使用全局异常处理注解`@ExceptionHandler`来处理可能出现的错误情况。 在"restful webservice in springMVC Demo"中,开发者可能创建了一个简单的REST服务,例如,用于管理...
8. **异常处理**:SpringMVC提供了全局异常处理机制,可以集中处理所有Controller抛出的异常。 9. **数据绑定和验证**:SpringMVC支持自动将请求参数绑定到Bean属性,并能进行数据验证。 10. **多文件上传**:通过...
SpringMVC提供了统一的异常处理机制,可以配置一个或多个@ControllerAdvice注解的类,里面包含@ExceptionHandler方法来捕获和处理特定类型的异常,从而避免在每个Controller中都写异常处理代码。 八、RESTful风格 ...
- **转换器与格式化器**:自定义类型转换器和格式化器,以处理复杂的数据类型和格式化需求。 5. **异常处理** - **全局异常处理**:设置 `@ExceptionHandler` 处理特定异常,或者配置 `@ControllerAdvice` 进行...
6. **拦截器(Interceptor)**:SpringMVC的拦截器机制允许我们在请求处理前后执行自定义逻辑,例如进行权限验证、日志记录等。通过实现HandlerInterceptor接口并配置在SpringMVC配置中,可以实现全局的接口拦截处理...
可以自定义拦截器,实现预处理和后处理功能,例如登录检查、日志记录等。 6. **视图解析**: 使用 `ModelAndView` 或直接返回视图名,Spring MVC 会根据配置的视图解析器解析为实际的视图。 7. **异常处理**: ...
9. **异常处理**:Spring MVC提供了优雅的异常处理机制,可以全局统一处理异常,通过@ControllerAdvice和@ExceptionHandler注解,可以定义全局异常处理器。 10. **RESTful支持**:Spring MVC支持RESTful风格的URL...
10. **拦截器(Interceptor)**:拦截器允许在请求被Controller处理之前或之后执行自定义逻辑,例如登录检查、性能监控等。 11. **异常处理**:通过配置或注解,SpringMVC可以优雅地处理异常,提供统一的错误页面或...
6. **异常处理**:掌握如何自定义异常处理器,以优雅地处理程序运行时可能出现的错误和异常。 7. **验证**:了解SpringMVC中的数据验证机制,如使用Hibernate Validator进行前端和后端的数据校验。 8. **文件上传...
10. **异常处理**:SpringMVC 提供了全局异常处理机制,可以通过 `@ExceptionHandler` 注解或配置 `HandlerExceptionResolver` 实现。 11. **验证**:SpringMVC 集成了 Hibernate Validator,允许对输入数据进行...
4. **异常处理**:学习如何自定义全局异常处理器,统一处理应用程序可能出现的错误。 5. **拦截器**:通过编写Interceptor,实现预处理和后处理逻辑,如权限验证、日志记录等。 6. **文件上传下载**:掌握处理文件...
10. **RESTful API**:理解RESTful风格的URL设计,以及如何在SpringMVC中创建REST服务,包括使用HTTP动词(GET、POST、PUT、DELETE)和处理JSON数据。 11. **拦截器(Interceptor)**:介绍SpringMVC的拦截器机制,...