jueves, 9 de noviembre de 2017

Spring Framework: simple webMVC sin XML, Maven, Glassfish en IntelliJ

Este laboratorio se basa en https://www.youtube.com/watch?annotation_id=annotation_2978606867&feature=iv&src_vid=_SOXs4xdurE&v=5BY9YxdMg8I pero modificado a Glassfish.

  Un punto importante para poder deployar a GlassFish desde IntelliJ es ejecutar IntelliJ como administrador, de lo contrario el log de glassfish nos llevara a un error que ronda el no poder crear un subdirectorio de cache.

Pasos Simplificados:

  - Se crea un proyecto Maven con estas características:
<groupId>com.bext</groupId>
<artifactId>Spring4webMVCMavenNoXML</artifactId>
<version>1.0</version>
<packaging>war</packaging>
con nombre de proyecto "Spring4webMVCMavenNoXML". 
-Agregamos las siguientes dependencias al POM.XML
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.0.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
- Creamos el archivo com.bext.controller.HomeController.java en src/main/java

- Creamos un archivo home.jsp en la ruta src/main/webapp

- A diferencia de configurar con archivos XML, aquí configuraremos spring con java,crearemos las tres siguientes clases java para configurar sin XML. en src/main/java
com.bext.config.WebInit
package com.bext.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

@Configuration 
public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer{
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{RootConfig.class};
    }

    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }

    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}
com.bext.config.WebConfig
package com.bext.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration 
@EnableWebMvc 
@ComponentScan("com.bext")
public class WebConfig extends WebMvcConfigurerAdapter{
    @Bean 
    public InternalResourceViewResolver resolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
}
com.bext.config.RootConfig
package com.bext.config;

import org.springframework.context.annotation.Configuration;

@Configuration
 public class RootConfig {
}
-Configuramos el App Server para el proyecto que será Glassfish
- y el resultado

Notese que no existe archivo de configuración web.xml.

No hay comentarios:

Publicar un comentario