Spring - Exemplo de tratamento de exceções
O exemplo a seguir mostra como escrever um aplicativo simples baseado na web usando Spring MVC Framework, que pode lidar com uma ou mais exceções levantadas dentro de seus controladores. Para começar, vamos ter um Eclipse IDE funcionando e realizar as seguintes etapas para desenvolver um aplicativo da Web baseado em formulário dinâmico usando Spring Web Framework -
Degrau | Descrição |
---|---|
1 | Crie um projeto da Web dinâmico com um nome HelloWeb e crie um pacote com.tutorialspoint na pasta src no projeto criado. |
2 | Arraste e solte o Spring mencionado abaixo e outras bibliotecas na pasta WebContent / WEB-INF / lib . |
3 | Crie uma classe Java Student , StudentController e SpringException no pacote com.tutorialspoint . |
4 | Crie arquivos de configuração Spring Web.xml e HelloWeb-servlet.xml na pasta WebContent / WEB-INF . |
5 | Crie uma subpasta com o nome jsp na pasta WebContent / WEB-INF . Criar um arquivos de visão student.jsp , result.jsp , error.jsp e ExceptionPage.jsp sob jsp sub-pasta. |
6 | A etapa final é criar o conteúdo de todos os arquivos de origem e configuração e exportar o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo de Student.java Arquivo
package com.tutorialspoint;
public class Student {
private Integer age;
private String name;
private Integer id;
public void setAge(Integer age) {
this.age = age;
}
public Integer getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
}
A seguir está o conteúdo de SpringException.java Arquivo
package com.tutorialspoint;
public class SpringException extends RuntimeException{
private String exceptionMsg;
public SpringException(String exceptionMsg) {
this.exceptionMsg = exceptionMsg;
}
public String getExceptionMsg(){
return this.exceptionMsg;
}
public void setExceptionMsg(String exceptionMsg) {
this.exceptionMsg = exceptionMsg;
}
}
A seguir está o conteúdo de StudentController.javaArquivo. Aqui, você precisa anotar um método de serviço usando @ExceptionHandler, onde você pode especificar uma ou mais exceções a serem tratadas. Se você estiver especificando mais de uma exceção, poderá usar valores separados por vírgula.
package com.tutorialspoint;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import 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";
}
}
A seguir está o conteúdo do arquivo de configuração do Spring Web 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 Exception Handling</display-name>
<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>
A seguir está o conteúdo de outro arquivo de configuração Spring Web HelloWeb-servlet.xml
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:context = "http://www.springframework.org/schema/context"
axmlns: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 class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
<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>
Aqui você especificou ExceptionPage como uma visualização de exceção no caso de SpringException ocorrer, se houver qualquer outro tipo de exceção, um erro de visualização genérico ocorrerá.
A seguir está o conteúdo do arquivo de visualização do Spring 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>
A seguir está o conteúdo do arquivo de visualização do Spring error.jsp
<html>
<head>
<title>Spring Error Page</title>
</head>
<body>
<p>An error occured, please contact webmaster.</p>
</body>
</html>
A seguir está o conteúdo do arquivo de visualização do Spring ExceptionPage.jsp. Aqui, você acessará a instância de exceção por meio de $ {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>
A seguir está o conteúdo do arquivo de visualização do Spring result.jsp
<%@taglib uri = "http://www.springframework.org/tags/form" prefix = "form"%>
<html>
<head>
<title>Spring MVC Form Handling</title>
</head>
<body>
<h2>Submitted Student Information</h2>
<table>
<tr>
<td>Name</td>
<td>${name}</td>
</tr>
<tr>
<td>Age</td>
<td>${age}</td>
</tr>
<tr>
<td>ID</td>
<td>${id}</td>
</tr>
</table>
</body>
</html>
Finalmente, a seguir está a lista de Spring e outras bibliotecas a serem incluídas em seu aplicativo da web. Basta arrastar esses arquivos e soltá-losWebContent/WEB-INF/lib pasta.
- commons-logging-x.y.z.jar
- org.springframework.asm-x.y.z.jar
- org.springframework.beans-x.y.z.jar
- org.springframework.context-x.y.z.jar
- org.springframework.core-x.y.z.jar
- org.springframework.expression-x.y.z.jar
- org.springframework.web.servlet-x.y.z.jar
- org.springframework.web-x.y.z.jar
- spring-web.jar
Quando terminar de criar os arquivos de origem e configuração, exporte seu aplicativo. Clique com o botão direito em seu aplicativo e use oExport > WAR File opção e salve seuHelloWeb.wararquivo na pasta webapps do Tomcat .
Agora inicie o seu servidor Tomcat e certifique-se de que consegue acessar outras páginas da web da pasta webapps usando um navegador padrão. Agora tente acessar o URLhttp://localhost:8080/HelloWeb/student. Se tudo estiver bem com seu Spring Web Applicationand, você deverá ver o seguinte resultado.
Insira os valores conforme mostrado acima e clique no botão Enviar. Se tudo estiver bem com seu Spring Web Application, você deverá ver o seguinte resultado.