ecemexico-web

Nos posicionamos en el modulo ecemexico-web y en el archivo pom.xml escribimos lo siguiente:
 
         
            
            <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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.tutosoftware.ecemexico</groupId>
    <artifactId>ecemexico</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>ecemexico-web</artifactId>
  <packaging>war</packaging>
  <name>ECEMEXICO Web</name>
  <dependencies>
	
	
	 <dependency>
	<groupId>com.tutosoftware.ecemexico</groupId>
	<artifactId>ecemexico-core</artifactId>
	</dependency>
	
	
	
	
	
	
	
   <!-- Spring 5 dependencies -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
        </dependency>

      
         <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-beans</artifactId>
         </dependency>
        
        
        
        
         <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-cassandra</artifactId>
    </dependency>
        
        
	 <!-- Spring Security -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
        </dependency>
        
        
        
         <!-- Servlet and JSP -->
        <dependency>
				<groupId>javax.servlet.jsp</groupId>
				<artifactId>jsp-api</artifactId>
			</dependency>
			
			
         <dependency>
	     <groupId>javax.servlet</groupId>
	    <artifactId>javax.servlet-api</artifactId>
        </dependency>
			
			
			
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>jstl</artifactId>
			</dependency>
        
         
      <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
     </dependency>
    
       
       
       	
		<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
     </dependency>	
       
       
       <dependency>
           <groupId>com.itextpdf</groupId>
           <artifactId>itextpdf</artifactId>
         </dependency>
       
        
        </dependencies>
  <build>
		<finalName>ecemexico</finalName>
		<plugins>	
			<plugin>            
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.3</version>
				
				<configuration>
                        <warSourceDirectory>src/main/webapp</warSourceDirectory>
                        <warName>ecemexico</warName>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                    </configuration>
				
			</plugin>
		</plugins>
	</build>
</project>
     
  

Aparece un error hacemos clic derecho y seleccionamos Maven->Update Project Nos pasamos al directoriosrc/main/java creamos el paquete com.tutosoftware.ecemexico.config y creamos la clase ECEMexicoConfig
 
     
 package com.tutosoftware.ecemexico.config;

import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.List;

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.validation.Validator;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
import org.springframework.web.servlet.view.ResourceBundleViewResolver;


@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.tutosoftware.ecemexico")
public class ECEMexicoConfig implements WebMvcConfigurer {
	
private static final Charset UTF8 = Charset.forName("UTF-8");
	
	
	
	@Bean(name="EceMexico")
	public ViewResolver viewResolver() {
		InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
		viewResolver.setViewClass(JstlView.class);
		viewResolver.setPrefix("/WEB-INF/views/");
		viewResolver.setSuffix(".jsp");

		return viewResolver;
	}
	
	@Bean(name="EceMexicoPdf")
	public ViewResolver viewResolver2() {
		ResourceBundleViewResolver viewResolver = new ResourceBundleViewResolver();
		viewResolver.setOrder(1);
	    viewResolver.setBasename("views");
		
		return viewResolver;
	}
	
	
	
	 public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
	      StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
	      stringConverter.setSupportedMediaTypes(Arrays.asList(new MediaType("text", "plain", UTF8)));
	      converters.add(stringConverter);
	      
	      
	       converters.add(new MappingJackson2HttpMessageConverter());
	 
	      // Add other converters ...
	  }
	 
	 
	 
	 
	 
	  // Static Resource Config
	  // equivalents for <mvc:resources/> tags
	  @Override
	  public void addResourceHandlers(ResourceHandlerRegistry registry) {
		  registry.addResourceHandler("/resources/**").addResourceLocations("/resources/").setCachePeriod(31556926);
	      registry.addResourceHandler("/css/**").addResourceLocations("/css/").setCachePeriod(31556926);
	      registry.addResourceHandler("/img/**").addResourceLocations("/img/").setCachePeriod(31556926);
	      registry.addResourceHandler("/js/**").addResourceLocations("/js/").setCachePeriod(31556926);
	  }
	 
	  // Equivalent for <mvc:default-servlet-handler/> tag
	  @Override
	  public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
	      configurer.enable();
	  }
	  
	  
	  
	  
	  @Bean
	   public MessageSource messageSource() {
	      ResourceBundleMessageSource source = new ResourceBundleMessageSource();
	      source.setBasename("messages");
	      return source;
	   }

	   @Override
	   public Validator getValidator() {
	      LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
	      validator.setValidationMessageSource(messageSource());
	      return validator;
	   }

}
 
    
  

La clase SpringMvcInitializer
 
   
   
   package com.tutosoftware.ecemexico.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;



public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{
	
	@Override
	protected Class<?>[] getRootConfigClasses() {
		return new Class[] { ECEMexicoConfig.class };
	}
 
	@Override
	protected Class<?>[] getServletConfigClasses() {
		return null;
	}
 
	@Override
	protected String[] getServletMappings() {
		return new String[] { "/" };
	}

}
   
    
  

Nos vamos a src/main/resources y creamos el archivo messages.properties que es para mandar los mensajes de error en los formularios
 
   
expediente.nombre.empty=El nombre no puede estar en blanco
expediente.apellidoPaterno.empty=El apellido paterno no puede estar en blanco
expediente.sexo.empty=El sexo no puede estar en blanco
expediente.calle.empty=La calle no puede estar en blanco
expediente.numeroExterior.empty=El numero exterior no puede estar en blanco
expediente.estado.empty=El estado no puede estar en blanco
expediente.municipio.empty=El municipio no puede estar en blanco
expediente.colonia.empty=La colonia no puede estar en blanco
   
   
   
    
  

En el mismo directorio agregamos el archivo views.properties para redirecionar la vista de pdf
 
   
pdfExpediente.(class)=com.tutosoftware.ecemexico.pdf.PDFExpedienteBuilder
pdfReceta.(class)=com.tutosoftware.ecemexico.pdf.PDFRecetaBuilder
    
   
   
    
  

Hasta este momento asi se veria el proyecto.
java project