springMVC 异常
- 2020 年 6 月 8 日
- 筆記
springMVC 异常
0.依赖(不只是本次案例所需)
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="//maven.apache.org/POM/4.0.0" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="//maven.apache.org/POM/4.0.0 //maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.gxeom</groupId> <artifactId>bookshop</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <!--1.servlet-api jsp-api 2个jar包--> <!--作用: 1. Springmvc 当中要用servlet对象 request session 2. Springmvc web.xml配置 dispatcherServlet 继承httpServlet 3.Springmvc 的注解 --> <!-- //mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!-- //mvnrepository.com/artifact/javax.servlet/jsp-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> <!--2.数据库 3个jar包 --> <!-- mysql的连接驱动 版本要和自己的数据库版本相匹配 --> <!-- //mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.19</version> </dependency> <!-- 连接池的依赖--> <!-- //mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version> </dependency> <!-- 我为了使用JdbcTemplate 所以我们要导入spring-jdbc--> <!-- //mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.5.RELEASE</version> </dependency> <!--3.spring核心 3个jar包(SpEL)不必须导入 --> <!-- spring 核心依赖 beans core context SpEL(不是必须导入)--> <!-- //mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.5.RELEASE</version> </dependency> <!-- //mvnrepository.com/artifact/org.springframework/spring-core --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.2.5.RELEASE</version> </dependency> <!-- //mvnrepository.com/artifact/org.springframework/spring-beans --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.2.5.RELEASE</version> </dependency> <!--4. Spring-web+ Spring-mvc+json 3个jar包--> <!-- 要和web相结合 spring-web--> <!-- //mvnrepository.com/artifact/org.springframework/spring-web --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.2.5.RELEASE</version> </dependency> <!-- Spring mvc --> <!-- //mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.5.RELEASE</version> </dependency> <!-- springmvc配套的第三方json依赖--> <!-- //mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.8</version> </dependency> <!--5.aop+aspectj 3个jar包--> <!-- AOP ASPECTJ--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>5.2.5.RELEASE</version> </dependency> <!--aop切点--> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.6.11</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.6.11</version> </dependency> <!--动态代理--> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.1</version> </dependency> <!-- 6.jstl标签 2个jar包 作用: 页面上去掉 scriptlet(脚本) 页面上获值并输出--> <!--jstl+standard--> <!-- //mvnrepository.com/artifact/javax.servlet/jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- //mvnrepository.com/artifact/taglibs/standard --> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <!--7.图片上传 2个jar包--> <!--字节流+图片--> <!-- //mvnrepository.com/artifact/commons-io/commons-io --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> <!-- //mvnrepository.com/artifact/commons-fileupload/commons-fileupload --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> </dependencies> </project>
1.xml配置(WEB-INF下)
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="//xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="//xmlns.jcp.org/xml/ns/javaee //xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!--转发控制器--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置classpath contextConfigLocation 默认classpath WEB-INF--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:Spring-MVC.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- <error-page>--> <!-- <error-code>404</error-code>--> <!-- <location>/fristex.do</location>--> <!-- </error-page>--> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- <servlet-mapping>--> <!-- <servlet-name>default</servlet-name>--> <!-- <url-pattern>*.js</url-pattern>--> <!-- <url-pattern>*.css</url-pattern>--> <!-- <url-pattern>*.map</url-pattern>--> <!-- <url-pattern>*.jpg</url-pattern>--> <!-- <url-pattern>*.png</url-pattern>--> <!-- </servlet-mapping>--> </web-app>
2.spring-mvc配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="//www.springframework.org/schema/beans" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance" xmlns:mvc="//www.springframework.org/schema/mvc" xmlns:context="//www.springframework.org/schema/context" xsi:schemaLocation=" //www.springframework.org/schema/beans //www.springframework.org/schema/beans/spring-beans.xsd //www.springframework.org/schema/mvc //www.springframework.org/schema/mvc/spring-mvc.xsd //www.springframework.org/schema/context //www.springframework.org/schema/context/spring-context.xsd "> <!-- <mvc:resources mapping="/js/**" location="js/"></mvc:resources>--> <!-- mvc驱动--> <mvc:annotation-driven></mvc:annotation-driven> <context:component-scan base-package="com.tjetc.*"></context:component-scan> <bean id="sysExceptionResolver" class="com.tjetc.exeception.SysExetionResolve"></bean>
3.SysExeption类
package com.tjetc.exeception; public class SysExeption extends Exception{ private String message; public SysExeption(String message) { this.message = message; } @Override public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
4.SysExetionResolve
package com.tjetc.exeception; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SysExetionResolve implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception ex) { SysExeption e = null; if ( ex instanceof SysExeption){ e= (SysExeption)ex; }else { e=new SysExeption("系统正在维护。。"); } ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("errorMsg",e.getMessage()); modelAndView.setViewName("error.jsp"); return modelAndView; } }
5.FristController
package com.tjetc.controller; import com.tjetc.exeception.SysExeption; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class FristController { @RequestMapping("fristex.do") public String fristEX() throws SysExeption { try { System.out.println(1/0); }catch (Exception e){ e.printStackTrace(); throw new SysExeption("查询出错了。。。"); } return "success.jsp"; } }
6.error.jsp
<%-- Created by IntelliJ IDEA. User: sun Date: 2020/6/8 Time: 11:24 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> ${errorMsg} </body> </html>