In
my previous post, I explained how to handle the exceptions at controller level.
One problem with this approach is, the exception handling mechanism is tied to
the controller and it can't be used by other controllers.
In
this post, I am going to show you how to handle exceptions that are applicable
for all the controllers.
Follow
below steps.
a. Create a class and
annotate it with @ControllerAdvice annotation
@ControllerAdvice
public
class GlobalExceptionHandler {
}
b. Add all the
exception handling methods to GlobalExceptionHandler class.
@ControllerAdvice
public
class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
public String handleRuntimeException()
{
return "runtimeException";
}
}
Find
the below working application.
package com.sample.myApp.controllers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloWorldController { @RequestMapping("/welcome") public String getHelloMessage() { boolean flag = true; if (flag) { throw new RuntimeException("Throwning blindly"); } return "welcome"; } }
GlobalExceptionHandler.java
package com.sample.myApp.exceptionHandlers; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(RuntimeException.class) public String handleRuntimeException() { return "runtimeException"; } }
Create
runTimeException.jsp, welcome.jsp files under WEB-INF/jsp folder.
runTimeException.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!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=ISO-8859-1"> <title>Insert title here</title> </head> <body> <h1>Run time exception occured. Please contact the Administrator. </h1> </body> </html>
welcome.jsp
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!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=ISO-8859-1"> <title>Hello World Spring Web MVC</title> </head> <body> <h1> Hello, Good Morning </h1> </body> </html>
Create
web.xml, HelloWorld-servlet.xml files under WEB-INF folder.
web.xml
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Spring MVC Hello WorldApplication</display-name> <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
HelloWorld-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <mvc:annotation-driven /> <context:component-scan base-package="com.sample.myApp" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
Create
index.jsp file under webapp folder.
index.jsp
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%> <html> <head> <title>Welcome Page</title> </head> <body> <h2>Click on below button to get welcome page</h2> <form method="post" action="/springdemo/welcome" id="form1"> <input type="submit" value="getWelcomeMessage" style="font-size: 18px;" /> </form> </body> </html>
Total
project structure looks like below.
Run
the application on server, you can able to see below kind of screen.
No comments:
Post a Comment