Demo Spring 3.2

demoSpring

Usuarios.java

package domain;

public class Usuarios {
    String nombre;
    public Usuarios() {    
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
}

UsuariosController.java

package web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import web.validator.UsuariosValidator;

import domain.Usuarios;

@Controller
public class UsuariosController {
   
    @RequestMapping(method = RequestMethod.GET)
    public ModelAndView ingreso(){
        Usuarios u =  new Usuarios();
        ModelAndView mav = new ModelAndView("index", "usuarios", u);
        return mav;
    }
   
    @RequestMapping(method = RequestMethod.POST)
    public ModelAndView salida(@ModelAttribute Usuarios u, BindingResult br ){
       
        UsuariosValidator uv =  new UsuariosValidator();
        uv.validate(u, br);
       
        if(br.hasErrors()){
            ModelAndView mav = new ModelAndView("index", "usuarios", u);
            return mav;
        }else{
            ModelAndView mav = new ModelAndView("result", "usuarios", u);
            return mav;
        }
    }      
}

UsuariosValidator.java

package web.validator;

import org.springframework.validation.Errors;
import org.springframework.validation.Validator;

import domain.Usuarios;

public class UsuariosValidator implements Validator {

    @Override
    public boolean supports(Class<?> type) {
        return Usuarios.class.isAssignableFrom(type);
    }

    @Override
    public void validate(Object o, Errors e) {
        Usuarios u = (Usuarios) o;
       
        //validando nombre
        String nombre = u.getNombre();
       
        if(nombre==null){
            e.rejectValue("nombre", "nombre.required1");
        }else{
            if(nombre.trim().length()==0){
                e.rejectValue("nombre", "nombre.required1");
            }else{
                if(nombre.trim().length()<3 || nombre.trim().length() >50){
                    e.rejectValue("nombre", "nombre.required2");
                }
            }
        }      
    }

}

messages.properties

nombre.required1=Ingrese nombre de usuario
nombre.required2=nombre de [3, 50] caracteres

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Spring Navegación 01 - INDEX</title>
    </head>
    <body>
        <form:form commandName="usuarios" action="usuarios.htm" method="post">
            <table>
                <tr>
                    <td>Nombre</td>
                    <td>
                        <form:input path="nombre" cssStyle="width:200px"/>
                    </td>
                    <td>
                        <form:errors path="nombre" cssStyle="color:red" />
                    </td>                  
                </tr>
                <tr>
                    <td colspan="2">&nbsp;</td>
                </tr>
                <tr>
                    <td colspan="2">
                        <input type="submit" value="Enviar datos" />
                    </td>
                </tr>
            </table>
        </form:form>
    </body>
</html>

result.jsp

<%@page contentType="text/html" pageEncoding="UTF-8" %>
<!DOCTYPE>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>JSP Page</title>
    </head>
    <body>
        <h3>Bienvenido ${usuarios.nombre} a Spring Framework</h3>
        <p><a href="usuarios.htm">Volver</a></p>
    </body>
</html>

redirect.jsp

<%@page contentType="text/html" pageEncoding="UTF-8" %>
<% response.sendRedirect("usuarios.htm");  %>

applicationContext.xml

<?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:p="http://www.springframework.org/schema/p"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xmlns:tx="http://www.springframework.org/schema/tx"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">


        <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
            <property name="basename" value="resources/messages"></property>
           
        </bean>
        <bean class="web.controller.UsuariosController" id="usuariosController"></bean>

</beans>

dispatcher-servlet.xml

<?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:p="http://www.springframework.org/schema/p"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xmlns:tx="http://www.springframework.org/schema/tx"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">


    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="index.htm">indexController</prop>
                <prop key="usuarios.htm">usuariosController</prop>                    
            </props>
        </property>
    </bean>

    <bean id="viewResolver"
         class="org.springframework.web.servlet.view.InternalResourceViewResolver"
         p:prefix="/WEB-INF/jsp/"
         p:suffix=".jsp" />
       
    <bean name="indexController"
         class="org.springframework.web.servlet.mvc.ParameterizableViewController"
         p:viewName="index" />

</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>redirect.jsp</welcome-file>
    </welcome-file-list>
   
    <!-- Acentos Spring -->
    <filter>
        <filter-name>charsetFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
     </filter>
     <filter-mapping>
        <filter-name>charsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
     </filter-mapping>
   
</web-app>
post-author