jueves, 9 de noviembre de 2017

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

Este laboratorio se basa en https://www.youtube.com/watch?v=_SOXs4xdurE 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>Spring4webMVCMaven</artifactId>
<version>1.0</version>        aqui se le quita el SNAPSHOT que crea por default
<packaging>war</packaging>    esto se agrega al POM.XML
 
nombre del proyecto "Spring4webMVCMaven"

- Agregamos la siguiente dependencia al POM.xml
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>4.0.1.RELEASE</version>
</dependency>

- Creamos la clase com.bext.controller.HelloControler.java en src/main/java
package com.bext.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
 public class HomeController {
    @RequestMapping(value = "/")
    public String home() {
        return "test";
    }
}

- Creamos un archivo test.jsp en la ruta src/main/webapp/
 
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>src/main/webapp/test.jsp</title>
</head>
<body>
src/main/webapp/test.jsp file
</body>

- Cramos el archivo web.xml en la ruta src/main/webapp/WEB-INF/

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"         version="3.1">
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

</web-app>

- Creamos el archivo de configuracion xml de spring bajo WEB-INF con click derecho -> new -> XML Configuration File -> Spring config
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="com.bext" />
</beans>
- Creamos el archivo de configuracion java com.bext.util.AppConfig.java en src/main/java
package com.bext.util;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
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
 public class AppConfig extends WebMvcConfigurerAdapter{
    @Bean 
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
        internalResourceViewResolver.setPrefix("/");
        internalResourceViewResolver.setSuffix(".jsp");
        return internalResourceViewResolver;
    }

    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

- Configuramos el App server para este proyecto que sera Glassfish

- El resultado


No hay comentarios:

Publicar un comentario