首页 > 学院 > 开发设计 > 正文

SpringMVC学习笔记(七)处理异常

2019-11-11 01:26:04
字体:
来源:转载
供稿:网友

参考

(1)《sPRing入门经典》(基于本书第三章)


代码结构

这里写图片描述

程序清单

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zqx</groupId> <artifactId>SpringMVCExceptionhandling</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>SpringMVCExceptionhandling Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.7.RELEASE</version> </dependency> </dependencies> <build> <finalName>SpringMVCExceptionhandling</finalName> </build></project>

web.xml

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping></web-app>

springmvc-servlet.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <context:component-scan base-package="com.wiley.beginningspring.ch3" /> <context:annotation-config /> <mvc:annotation-driven /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/" /> <property name="suffix" value=".jsp" /> </bean></beans>

UserController.java

package com.wiley.beginningspring.ch3.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.wiley.beginningspring.ch3.domain.User;import com.wiley.beginningspring.ch3.exception.UserNotFoundException;import javax.annotation.PostConstruct;import java.util.HashMap;import java.util.Map;@Controllerpublic class UserController { private Map<String, User> users = new HashMap<String, User>(); @PostConstruct public void setup() { users.put("mert", new User("Mert", "Caliskan")); users.put("kenan", new User("Kenan", "Sevindik")); } @RequestMapping(value = "/form") public ModelAndView user() { return new ModelAndView("userForm", "user", new User()); } @RequestMapping(value = "/result") public ModelAndView processUser(String name) throws Exception { ModelAndView modelAndView = new ModelAndView(); User user = users.get(name); if ("johndoe".equals(name)) { throw new Exception(); } if (user == null) { throw new UserNotFoundException(name); } modelAndView.addObject("u", user); modelAndView.setViewName("userResult"); return modelAndView; } @ExceptionHandler(UserNotFoundException.class) public ModelAndView handleException(UserNotFoundException e) { ModelAndView modelAndView = new ModelAndView("errorUser"); modelAndView.addObject("errorMessage", e.getMessage()); return modelAndView; }}

User.java

package com.wiley.beginningspring.ch3.domain;public class User { private String name; private String lastName; public User() { } public User(String name, String lastName) { this.name = name; this.lastName = lastName; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; }}

UserNotFoundException.java

package com.wiley.beginningspring.ch3.exception;public class UserNotFoundException extends Exception { public UserNotFoundException(String name) { super("User not found with name: " + name); }}

GlobalExceptionHandler.java

package com.wiley.beginningspring.ch3.handler;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.servlet.ModelAndView;@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ModelAndView handleException() { return new ModelAndView("errorGlobal"); }}

测试

(1)当输入Mert或者Kenan时: 这里写图片描述 这里写图片描述 (2)当输入johndoe时: 这里写图片描述 (3)当输入其它,例如aaaa时: 这里写图片描述


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表