Primavera - Esempio di gestione delle eccezioni
L'esempio seguente mostra come scrivere una semplice applicazione basata sul Web utilizzando Spring MVC Framework, che può gestire una o più eccezioni sollevate all'interno dei suoi controller. Per cominciare, disponiamo di un IDE Eclipse funzionante e intraprendiamo i seguenti passaggi per sviluppare un'applicazione Web dinamica basata su form utilizzando Spring Web Framework:
Passo | Descrizione |
---|---|
1 | Crea un progetto Web dinamico con un nome HelloWeb e crea un pacchetto com.tutorialspoint nella cartella src nel progetto creato. |
2 | Trascina e rilascia la molla indicata di seguito e altre librerie nella cartella WebContent / WEB-INF / lib . |
3 | Crea una classe Java Student , StudentController e SpringException nel pacchetto com.tutorialspoint . |
4 | Crea i file di configurazione Spring Web.xml e HelloWeb-servlet.xml nella cartella WebContent / WEB-INF . |
5 | Crea una sottocartella con un nome jsp nella cartella WebContent / WEB-INF . Crea una visualizzazione dei file student.jsp , result.jsp , error.jsp e ExceptionPage.jsp nella sottocartella jsp . |
6 | Il passaggio finale consiste nel creare il contenuto di tutti i file sorgente e di configurazione ed esportare l'applicazione come spiegato di seguito. |
Di seguito è riportato il contenuto di Student.java file
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;
}
}
Di seguito è riportato il contenuto di SpringException.java file
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;
}
}
Di seguito è riportato il contenuto di StudentController.javafile. Qui, è necessario annotare un metodo di servizio utilizzando @ExceptionHandler in cui è possibile specificare una o più eccezioni da gestire. Se si specifica più di un'eccezione, è possibile utilizzare valori separati da virgole.
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";
}
}
Di seguito è riportato il contenuto del file di configurazione di 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>
Di seguito è riportato il contenuto di un altro file di configurazione 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>
Qui hai specificato ExceptionPage come vista di eccezione nel caso in cui si verifichi SpringException, se c'è un altro tipo di eccezione, si verificherà un errore di vista generico .
Di seguito è riportato il contenuto del file di visualizzazione 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>
Di seguito è riportato il contenuto del file di visualizzazione Spring error.jsp
<html>
<head>
<title>Spring Error Page</title>
</head>
<body>
<p>An error occured, please contact webmaster.</p>
</body>
</html>
Di seguito è riportato il contenuto del file di visualizzazione Spring ExceptionPage.jsp. Qui accederai all'istanza dell'eccezione tramite $ {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>
Di seguito è riportato il contenuto del file di visualizzazione 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>
Infine, di seguito è riportato l'elenco di Spring e di altre librerie da includere nella tua applicazione web. Devi semplicemente trascinare questi file e rilasciarliWebContent/WEB-INF/lib cartella.
- 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
Dopo aver creato i file di origine e di configurazione, esporta l'applicazione. Fare clic con il pulsante destro del mouse sull'applicazione e utilizzare il fileExport > WAR File opzione e salva il tuoHelloWeb.warfile nella cartella webapps di Tomcat .
Ora avvia il tuo server Tomcat e assicurati di essere in grado di accedere ad altre pagine web dalla cartella webapps utilizzando un browser standard. Ora prova ad accedere all'URLhttp://localhost:8080/HelloWeb/student. Se tutto va bene con la tua applicazione Web Spring e dovresti vedere il seguente risultato.
Immettere i valori come mostrato sopra e fare clic sul pulsante Invia. Se tutto va bene con la tua applicazione Web Spring, dovresti vedere il seguente risultato.