Los desarrolladores de Java a menudo se basan en ejemplos para aprender el marco de Spring. Los ejemplos simples suelen ser un recurso de aprendizaje clave. Hay muchas aplicaciones Spring MVC HelloWorld. Sin embargo, la mayoría de ellos están desactualizados (no integran Maven, usan la versión anterior de Spring, etc.) o no están completos (faltan pasos clave o vista de jerarquía de archivos). Por lo tanto, no puede conducir a un Hello World que funcione perfectamente. En este artículo, mostraré los pasos para crear una aplicación Spring MVC HelloWorld usando Maven en Eclipse. Se ilustra el contenido y la ubicación de todos los archivos.
Requisito previo
- Windows 7, Java 7, Eclipse Kepler Java EE
- Tomcat 7 (Cómo instalar Tomcat 7 en Eclipse)
Paso 1: cree un proyecto Maven
Cree un proyecto de Maven siguiendo los siguientes pasos:
Seleccione «aplicación web».
GroupId identifica el proyecto de forma única en todos los proyectos, por lo que debemos aplicar un esquema de nomenclatura. ArtifactId es el nombre del jar sin versión. Para obtener más información sobre cada campo, consulte el Página Oficial sobre la convención de nomenclatura de maven. (Puede hacer esto más tarde. Tiene más sentido cuando completa el proyecto primero).
Una vez creado el proyecto Maven, el proyecto en la vista del navegador debería tener el siguiente aspecto:
Como se muestra arriba, hay un error marcado con rojo. Si abre el archivo index.jsp, puede ver el mensaje de error:
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
Para solucionar el problema, haga clic con el botón derecho en el proyecto -> Propiedades -> Ruta de compilación de Java -> Agregar biblioteca …-> Tiempo de ejecución del servidor -> Apache Tomcat -> Finalizar.
Paso 2: configurar Spring
Para hacer una aplicación web Spring, necesitamos configurar varios archivos xml. En primer lugar, necesitamos agregar dependencias de Spring. Edite el archivo pom.xml generado automáticamente para que sea el siguiente:
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>com.programcreek</groupId> <artifactId>HelloWorld</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>HelloWorld 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>3.8.1</version> <scope>test</scope> </dependency> <!-- Spring dependencies --> <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>HelloWorld</finalName> </build> </project> |
Edite el archivo web.xml predeterminado.
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <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> |
Cree un archivo xml «dispatcher-servlet.xml» en el mismo directorio de web.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.programcreek.helloworld.controller" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/views/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans> |
En el archivo xml anterior, base-package
especifica el paquete de los controladores. prefix
especifica el directorio de vistas, y está configurado para ser /WEB-INF/views/
, lo que significa views
El directorio debe crearse bajo WEB-INF
. suffix
especifica la extensión de archivo de las vistas. Por ejemplo, dada una vista «helloworld», la vista se ubicará como /WEB-INF/views/helloworld.jsp. Puede resolver esto más adelante en el Paso 3.
Paso 3: Cree el controlador Spring y la vista
Crea el HelloWorldController
en el directorio src / main / java /.
HelloWorldController.java
package com.programcreek.helloworld.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; @Controller public class HelloWorldController { String message = "Welcome to Spring MVC!"; @RequestMapping("/hello") public ModelAndView showMessage( @RequestParam(value = "name", required = false, defaultValue = "World") String name) { System.out.println("in controller"); ModelAndView mv = new ModelAndView("helloworld"); mv.addObject("message", message); mv.addObject("name", name); return mv; } } |
En el código de arriba, @RequestMapping
la anotación asigna las solicitudes web a clases de controlador específicas y / o métodos de controlador, en este caso, showMessage()
. Proporciona un estilo coherente entre los entornos Servlet y Portlet, con la semántica adaptándose al entorno concreto.
RequestParam
indica que un parámetro de método debe estar vinculado a un parámetro de solicitud web. En este caso, también lo hacemos no obligatorio y le damos un valor predeterminado.
new ModelAndView("helloworld")
determina que helloworld
es la vista de destino.
index.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>Spring 4 MVC - HelloWorld Index Page</title> </head> <body> <center> <h2>Hello World</h2> <h3> <a href="hello?name=Eric">Click Here</a> </h3> </center> </body> </html> |
Hello World
Haga clic aquí
Cree el archivo helloworld.jsp en el directorio / WEB-INF / views /.
helloworld.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>Spring 4 MVC -HelloWorld</title> </head> <body> <center> <h2>Hello World</h2> <h2> ${message} ${name} </h2> </center> </body> </html> |
Hello World
$ {message} $ {name}
${variable}
se convertirá al valor de la variable.
Vista final del navegador del proyecto:
Paso 4: ejecutar en el servidor
Haga clic con el botón derecho en el proyecto y seleccione Ejecutar como -> Ejecutar en el servidor.
Archivo zip del proyecto para descargar.
Siguiente: Inyección de dependencias y configuración XML