Spring Exception Handling Example
Spring Exception Handling Example
http://www.tuto rialspo int.co m/spring /spring _e xce ptio n_handling _e xample .htm
T he following example show how to write a simple web based application using Spring MVC Framwork, which
can handle one or more exceptions raised inside its controllers. T o start with it, let us have working Eclipse IDE
in place and follow the following steps to develope a Dynamic Form based Web Application using Spring Web
Framework:
Step
Desc ription
Create a Dynamic Web Project with a name HelloWeb and create a packag e com.tutorialspoint
under the src folder in the created project.
Drag and drop below mentioned Spring and other libraries into the folder WebContent/WEBINF/lib.
Create Spring config uration files Web.xml and HelloWeb-servlet.xml under the WebContent/WEBINF folder.
Create a sub-folder with a name jsp under the WebContent/WEB-INF folder. Create a view files
student.jsp, result.jsp, error.jsp, and ExceptionPage.jsp under jsp sub-folder.
T he final step is to create the content of all the source and config uration files and export the
application as explained below.
Following is the content of StudentController.java file. Here you need to annotate a service method using
@ExceptionHandler where you can specify one or more exceptions to be handled. If you are specifying more
than one exceptions then you can use comma separated values.
package com.tutorialspoint;
import
import
import
import
import
import
import
org.springframework.stereotype.Controller;
org.springframework.web.bind.annotation.ExceptionHandler;
org.springframework.web.bind.annotation.ModelAttribute;
org.springframework.web.bind.annotation.RequestMapping;
org.springframework.web.bind.annotation.RequestMethod;
org.springframework.web.servlet.ModelAndView;
org.springframework.ui.ModelMap;
@Controller
public class StudentController {
@RequestMapping(value = "/student", method = RequestMethod.GET)
public ModelAndView student() {
return new ModelAndView("student", "command", new Student());
}
@RequestMapping(value = "/addStudent", method = RequestMethod.POST)
@ExceptionHandler({SpringException.class})
public String addStudent( @ModelAttribute("HelloWeb")Student student,
ModelMap model) {
if(student.getName().length() < 5 ){
throw new SpringException("Given name is too short");
}else{
model.addAttribute("name", student.getName());
}
if( student.getAge() < 10 ){
throw new SpringException("Given age is too low");
}else{
model.addAttribute("age", student.getAge());
}
model.addAttribute("id", student.getId());
return "result";
}
}
<servlet>
<servlet-name>HelloWeb</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWeb</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
Following is the content of another Spring Web config uration file HelloWeb-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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">
<context:component-scan base-package="com.tutorialspoint" />
<bean >
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<bean class="org.springframework.web.servlet.handler.
SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="com.tutorialspoint.SpringException">
ExceptionPage
</prop>
</props>
</property>
<property name="defaultErrorView" value="error"/>
</bean>
</beans>
Here you specified ExceptionPage as an exception view in case Spring Exception occurs, if there is any other
type of exception then a g eneric view error will take place.
Following is the content of Spring view file student.jsp:
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
<title>Spring MVC Exception Handling</title>
</head>
<body>
<h2>Student Information</h2>
<form:form method="POST" action="/HelloWeb/addStudent">
<table>
<tr>
<td><form:label path="name">Name</form:label></td>
<td><form:input path="name" /></td>
</tr>
<tr>
<td><form:label path="age">Age</form:label></td>
<td><form:input path="age" /></td>
</tr>
<tr>
<td><form:label path="id">id</form:label></td>
<td><form:input path="id" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Submit"/>
</td>
</tr>
</table>
</form:form>
</body>
</html>
Following is the content of Spring view file Exc eptionPag e.jsp. Here you will access the exception instance
via ${exception}.
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
<title>Spring MVC Exception Handling</title>
</head>
<body>
<h2>Spring MVC Exception Handling</h2>
<h3>${exception.exceptionMsg}</h3>
</body>
</html>
</html>
Finally, following is the list of Spring and other libraries to be included in your web application. You simply drag
these files and drop them in WebContent/WEB-INF/lib folder.
commons-log g ing -x.y.z.jar
org .spring framework.asm-x.y.z.jar
org .spring framework.beans-x.y.z.jar
org .spring framework.context-x.y.z.jar
org .spring framework.core-x.y.z.jar
org .spring framework.expression-x.y.z.jar
org .spring framework.web.servlet-x.y.z.jar
org .spring framework.web-x.y.z.jar
spring -web.jar
Once you are done with creating source and config uration files, export your application. Rig ht click on your
application and use Export > WAR File option and save your HelloWeb.war file in T omcat's webapps
folder.
Now start your T omcat server and make sure you are able to access other web pag es from webapps folder
using a standard browser. Now try to access the URL http://loc alhost:8080/HelloWeb/student. If
everything is fine with your Spring Web Applicationand, you should see the following result :
Enter the values as shown above and click submit buttom. If everything is fine with your Spring Web Application,
you should see the following result: