zoukankan      html  css  js  c++  java
  • SpringMVC异常处理

     1 package cn.itcast.controller;
     2 
     3 import cn.itcast.service.DemoService;
     4 import org.springframework.beans.factory.annotation.Autowired;
     5 import org.springframework.stereotype.Controller;
     6 import org.springframework.web.bind.annotation.RequestMapping;
     7 import org.springframework.web.bind.annotation.ResponseBody;
     8 
     9 import java.io.FileNotFoundException;
    10 
    11 @Controller
    12 public class DemoController {
    13 
    14     @Autowired
    15     DemoService demoService;
    16 
    17     @RequestMapping("/cast")
    18     @ResponseBody
    19     public void cast(){
    20         demoService.cast();
    21     }
    22 
    23     @RequestMapping("/nullPointer")
    24     @ResponseBody
    25     public void nullPointer(){
    26         demoService.nullPointer();
    27     }
    28 
    29     @RequestMapping("/io")
    30     @ResponseBody
    31     public void io() throws FileNotFoundException {
    32         demoService.io();
    33     }
    34 
    35     @RequestMapping("/zero")
    36     @ResponseBody
    37     public void zero(){
    38         demoService.zero();
    39     }
    40 }
    DemoController.java
     1 package cn.itcast.service;
     2 
     3 import org.springframework.stereotype.Service;
     4 
     5 import java.io.File;
     6 import java.io.FileInputStream;
     7 import java.io.FileNotFoundException;
     8 
     9 @Service
    10 public class DemoService {
    11 
    12     public void cast(){
    13         String s = (String) new Object();
    14     }
    15 
    16     public void nullPointer(){
    17         String s = null;
    18         s.equals("");
    19     }
    20 
    21     public void io() throws FileNotFoundException {
    22         new FileInputStream("d:/x1/x2/x3");
    23     }
    24 
    25     public void zero(){
    26         int i = 1 / 0;
    27     }
    28 }
    DemoService.java
     1 package cn.itcast.exception;
     2 
     3 import org.springframework.web.servlet.HandlerExceptionResolver;
     4 import org.springframework.web.servlet.ModelAndView;
     5 
     6 import javax.servlet.http.HttpServletRequest;
     7 import javax.servlet.http.HttpServletResponse;
     8 import java.io.FileNotFoundException;
     9 
    10 public class MyExceptionResolver implements HandlerExceptionResolver {
    11     @Override
    12     public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
    13         ModelAndView modelAndView = new ModelAndView();
    14         if(ex instanceof FileNotFoundException){
    15             //对文件不存在异常进行特殊处理
    16             modelAndView.setViewName("noFile");
    17         }else if(ex instanceof  NullPointerException){
    18             //对空指针异常进行特殊处理
    19             modelAndView.setViewName("nullPointer");
    20         }else{
    21             //其他的异常,默认处理
    22             modelAndView.setViewName("error");
    23         }
    24         return modelAndView;
    25     }
    26 }
    MyExceptionResolver.java
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:mvc="http://www.springframework.org/schema/mvc"
     4        xmlns:context="http://www.springframework.org/schema/context"
     5        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     6        xsi:schemaLocation="
     7        http://www.springframework.org/schema/beans
     8        http://www.springframework.org/schema/beans/spring-beans.xsd
     9        http://www.springframework.org/schema/mvc
    10        http://www.springframework.org/schema/mvc/spring-mvc.xsd
    11        http://www.springframework.org/schema/context
    12        http://www.springframework.org/schema/context/spring-context.xsd
    13 ">
    14 
    15     <!--组件扫描-->
    16     <context:component-scan base-package="cn.itcast"></context:component-scan>
    17 
    18     <!--注解驱动-->
    19     <mvc:annotation-driven></mvc:annotation-driven>
    20 
    21     <!--静态资源处理-->
    22     <mvc:default-servlet-handler></mvc:default-servlet-handler>
    23 
    24     <!--视图解析前后缀-->
    25     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    26         <property name="prefix" value="/WEB-INF/jsp/"></property>
    27         <property name="suffix" value=".jsp"></property>
    28     </bean>
    29 
    30     <!--在SpringMVC中定义多个异常处理器的话,貌似只加载第1个。-->
    31     <bean class="cn.itcast.exception.MyExceptionResolver"></bean>
    32 
    33     <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    34         <!--定义默认的异常处理页面,所有不在exceptionMappings中的异常,将由这个处理-->
    35         <property name="defaultErrorView" value="error"></property>
    36         <!--定义异常处理页面用来获取异常信息的变量名,默认为exception-->
    37         <property name="exceptionAttribute" value="ex"></property>
    38         <!--需要特殊处理的异常,key是异常的全类名,value是异常页面-->
    39         <property name="exceptionMappings">
    40             <map>
    41                 <entry key="java.io.FileNotFoundException" value="noFile"></entry>
    42                 <entry key="java.lang.ArithmeticException" value="zero"></entry>
    43             </map>
    44         </property>
    45     </bean>
    46 
    47 </beans>
    spring-mvc.xml
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     5          version="3.1">
     6 
     7     <!--spring容器监听器-->
     8 <!--    <listener>
     9         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    10     </listener>
    11 
    12     <context-param>
    13         <param-name>contextConfigLocation</param-name>
    14         <param-value>classpath:applicationContext.xml</param-value>
    15     </context-param>-->
    16 
    17 
    18     <!--springmvc前端控制器-->
    19     <servlet>
    20         <servlet-name>app</servlet-name>
    21         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    22         <init-param>
    23             <param-name>contextConfigLocation</param-name>
    24             <param-value>classpath:spring-mvc.xml</param-value>
    25         </init-param>
    26         <load-on-startup>1</load-on-startup>
    27     </servlet>
    28 
    29     <servlet-mapping>
    30         <servlet-name>app</servlet-name>
    31         <url-pattern>/</url-pattern>
    32     </servlet-mapping>
    33 
    34 
    35     <!--编码过滤-->
    36     <filter>
    37         <filter-name>CharacterEncodingFilter</filter-name>
    38         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    39         <init-param>
    40             <param-name>encoding</param-name>
    41             <param-value>UTF-8</param-value>
    42         </init-param>
    43     </filter>
    44     <filter-mapping>
    45         <filter-name>CharacterEncodingFilter</filter-name>
    46         <url-pattern>/*</url-pattern>
    47     </filter-mapping>
    48 
    49 </web-app>
    web.xml
    1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2 <html>
    3 <head>
    4     <title>Title</title>
    5 </head>
    6 <body>
    7     出错啦!!${ex}
    8 </body>
    9 </html>
    error.jsp
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     5     <modelVersion>4.0.0</modelVersion>
     6 
     7     <groupId>cn.itcast</groupId>
     8     <artifactId>spring_mvc_exception</artifactId>
     9     <version>1.0-SNAPSHOT</version>
    10     <packaging>war</packaging>
    11 
    12     <properties>
    13         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    14     </properties>
    15 
    16     <dependencies>
    17         <dependency>
    18             <groupId>org.springframework</groupId>
    19             <artifactId>spring-webmvc</artifactId>
    20             <version>5.0.5.RELEASE</version>
    21         </dependency>
    22 
    23         <dependency>
    24             <groupId>javax.servlet.jsp</groupId>
    25             <artifactId>javax.servlet.jsp-api</artifactId>
    26             <version>2.3.1</version>
    27             <scope>provided</scope>
    28         </dependency>
    29         <dependency>
    30             <groupId>javax.servlet</groupId>
    31             <artifactId>javax.servlet-api</artifactId>
    32             <version>3.1.0</version>
    33             <scope>provided</scope>
    34         </dependency>
    35 
    36     </dependencies>
    37 
    38     <build>
    39         <plugins>
    40             <!--编译插件-->
    41             <plugin>
    42                 <groupId>org.apache.maven.plugins</groupId>
    43                 <artifactId>maven-compiler-plugin</artifactId>
    44                 <version>3.8.0</version>
    45                 <configuration>
    46                     <source>1.8</source>
    47                     <target>1.8</target>
    48                 </configuration>
    49             </plugin>
    50             <!--tomcat插件-->
    51             <plugin>
    52                 <groupId>org.apache.tomcat.maven</groupId>
    53                 <!-- tomcat7的插件, 不同tomcat版本这个也不一样 -->
    54                 <artifactId>tomcat7-maven-plugin</artifactId>
    55                 <version>2.1</version>
    56                 <configuration>
    57                     <!-- 通过maven tomcat7:run运行项目时,访问项目的端口号 -->
    58                     <port>80</port>
    59                     <!-- 项目访问路径  本例:localhost:9090,  如果配置的aa, 则访问路径为localhost:9090/aa-->
    60                     <path>/</path>
    61                 </configuration>
    62             </plugin>
    63         </plugins>
    64     </build>
    65 
    66 </project>
    pom.xml

  • 相关阅读:
    以用户名注册来分析三种Action获取数据的方式
    Struts2中的OGNL详解 《转》
    Module 'null' not found异常解决办法
    struts标签<logic:iterate>的用法
    struts2的核心和工作原理 <转>
    jstl标签怎么实现分页中下一页
    forward 和redirect
    forward 和redirect的区别
    今天早上起来就想着要问问龙虎有圆通没
    昨天晚上回来弄了两个皮蛋吃
  • 原文地址:https://www.cnblogs.com/mozq/p/11005015.html
Copyright © 2011-2022 走看看