Spring 4 MVC Esempio Hello World

Spring 4 MVC Esempio Hello World

Tutorial su Spring 4 MVC Esempio Hello World

1 – Introduzione

questa guida  è stata scritta basandosi su

  • eclipse kepler
  • Spring 4.0.1.RELEASE

2 – Creare Maven Project

In eclipse, selezionare File–>New–>Other

Spring 4 MVC Esempio Hello World 1

selezionare “maven-archetype-webapp”

Inserire:

  • Group Id: iljavarolo
  • Artifact Id: spring4mvchelloworld

la struttura del progetto appena creato dovrebbe essere questa


se manca la cartella “java”, crearla e andare nuovamente in New–>Source Folder e selezionarla

e andare in proprietà del progetto–>Java Build Path, elimare resources come source folder.

3 – Configurare Spring 4 MVC

Inserire nel pom.xml le dependencies di Spring

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>iljavarolo</groupId>
  <artifactId>spring4mvchelloworld</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>spring4mvchelloworld Maven Webapp</name>
  <url>http://maven.apache.org</url>
 <properties>
    <spring.version>4.0.1.RELEASE</spring.version>
 </properties>

 <dependencies>

    <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.12</version>
     <scope>test</scope>
    </dependency>

   <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
  </dependency>

 <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-web</artifactId>
   <version>${spring.version}</version>
 </dependency>

 <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
 </dependency>
</dependencies>

  <build>
    <finalName>spring4mvchelloworld</finalName>
  </build>
</project>

Specificare nel web.xml l’uso di Spring e del suo file di configurazione. Questo file può avere qualsiasi nome, in questo caso  dispatcher-servlet.xml.

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
   <servlet-name>dispatcher</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet-mapping>
   <servlet-name>dispatcher</servlet-name>
   <url-pattern>/</url-pattern>
 </servlet-mapping>

 <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
 </context-param>

 <listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
</web-app>

Creare il file dispatcher-servlet.xml sotto la directory WEB-INF

dispatcher-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-4.0.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-4.0.xsd">

 <context:component-scan base-package="com.iljavarolo.spring" />

 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 <property name="prefix">
   <value>/pages/</value>
 </property>
 <property name="suffix">
    <value>.jsp</value>
 </property>
 </bean>
</beans>

da notare che con

<context:component-scan base-package="com.iljavarolo.spring" />

si sta dicendo a Spring che nel package “com.iljavarolo.spring” e nei suoi sotto package ci saranno dei compontenti autoconfiguranti tramite le varie annotation, quindi non c’è bisogno di specificare quale classe fa cosa nell’xml.

Con

 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 <property name="prefix">
   <value>/pages/</value>
 </property>
 <property name="suffix">
    <value>.jsp</value>
 </property>
 </bean>

si aggiunge all’output dei vari componenti il prefisso “/pages” e il suffisso “.jsp”. Quindi se per esempio  il  metodo del nostro componente ritorna la stringa “helloworld“, allora spring cercherà la view  /pages/helloworld.jsp

Creare la classe HelloWorldController.java nel package com.iljavarolo.spring

HelloWorldController.java

package com.iljavarolo.spring;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloWorldController {

 @RequestMapping("/hello")
 public String hello(@RequestParam(value="msg", required=false, defaultValue="Hello World") String msg, Model model) {
  
   model.addAttribute("msg", msg);
   
   return "helloworld";

 }

}

questo controller per ogni richiesta con url del tipo “…/hello….” richiamerà il metodo corrispondente, eseguirà il codice e richiamerà la vista “pages/helloworld.jsp”.

La request  potrà avere anche il parametro, opzionale, msg.

Es. /hello/?msg=Prova2

creare la cartella pages sotto webapp, e al suo interno, creare la pagina helloworld.jsp

helloworld.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isELIgnored="false"
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>Spring4 MVC -HelloWorld 2</title>
</head>
<body>
    <h1>${msg}</h1>
</body>
</html>

da notare la  prima riga

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isELIgnored="false"
pageEncoding="ISO-8859-1"%>

senza la presenza dell’attributo isELIgnored l’istruzione ${msg} non verrà stampata.

Alla fine il progetto dovrà avere questo aspetto

4 – Esecuzione

Selezionare pom.xml. Dal menù  Run–>Run Configurations–>Maven Buid–>Add

inserire i seguenti valori:

  • name: cleanBuild
  • base directory:  ${workspace_loc:${project_path}}
  • goals: clean install  package

cliccare su RUN

Dalla cartella /spring4mvchelloworld/target/ prendere il file spring4mvchelloworld.war e deployarlo sotto tomcat.

Dal browser digitare l’URL

verrà stampato qualsiasi valore dato al parametro msg.

Se msg non  è presente verrà stampato il messagio di default


DOWNLOAD SORGENTI

 

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *