domingo, 10 de agosto de 2014

Ajax Struts2 Login Page with Shake Animation Effect

Artículo original: Ajax PHP Login Page with Shake Animation Effect

El siguiente es una adaptacion sencilla del plugin de animacion shake, sobre Struts2 y Jquery plugin y Maven.

Estructura de la aplicacion:



Pom.xml:

  4.0.0
  org
  Struts2_ej_01
  war
  1.0
  Struts2_ej_01 Maven Webapp
  http://maven.apache.org


  
    javax.servlet
    servlet-api
    2.5
    provided
  
  
  
  
    org.apache.struts
    struts2-core
    2.3.16.3
  
  
    org.apache.struts
    struts2-convention-plugin
    2.3.16.3
  

  
  
    org.apache.struts
    struts2-json-plugin
    2.3.16.3
  

  
  
    com.jgeppert.struts2.jquery
    struts2-jquery-plugin
    3.7.1
  



  Struts2_ej_01
  
    
      org.apache.maven.plugins
      maven-compiler-plugin
      
        1.6
        1.6
      
    
  




Crer archivo login.jsp en src\main\webapp\User\pages
  • Agregar las siguientes taglibs:
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
    
  • Sección HEAD:
      
      <link href='<s:url value="/resources/css/style.css" />' rel="stylesheet"></link>
      <sj:head jquerytheme="redmond" >
      <script src='<s:url value="/resources/js/jquery.ui.shake.js" />'></script>
      <script>
          $.subscribe('beforeSubmit', function(event,data){
            $("#error").html('');
          });
          $.subscribe('submitComplete', function(event,data){
                
            var usuario=event.originalEvent.request.responseJSON.userName;
                
            if(event.originalEvent.request.responseJSON.loginValido=='OK'){
              $('#box')
                .toggle(
                  "explode",
                  function(){
                    $('#box').html(
                      '<table>'+
                      '<tr>'+
                      '<td><img src="<s:url value="/resources/images/ok.png"/>" /></td>'+
                      '<td><span style="font-weight:bold;"> Bienvenido '+usuario + '</span>'+
                      '</td>'+
                      '</tr>'+
                      '</table>'
                    );
                    $('#box').toggle("explode");
                  }
                );
            }else{
              //Shake animation effect.
              $('#box').shake();
              $("#error").html(
                '<table>'+
                '<tr>'+
                '<td><img src="<s:url value="/resources/images/error.png"/>" /></td>'+
                '<td>'+
                '<span style="color:#cc0000;font-weight:bold;">Error:</span>'+
                '<span style="color:#cc0000;">el usuario y/o la contraseña no son validos.</span>'+
                '</td>'+
                '</tr>'+
                '</table>'
              );
            }
          });
        </script>
    </sj:head>
    
  • Sección BODY:
    <div id="main">
    <sj:div 
      cssclass="result ui-widget-content ui-corner-all" 
      cssstyle="width:300px;" 
      delay="3000" 
      effect="explode" 
      effectduration="1500" 
      id="divContentResult">
    </sj:div>
    
    <div id="box">
        <s:form 
            action="Login" 
            id="loginForm" 
            theme="xhtml">
    
            <h2>Identificate</h2>
            <img 
                id="indicator" 
                src='<s:url value="/resources/images/indicator.gif"/>'
                alt="Cargando..."
                style="display:none"
                />
    
            <s:textfield 
                cssclass="input_text ui-widget ui-widget-content ui-corner-all campoTexto" 
                label="Usuario" 
                name="userName" 
                size="10"
                />
       
            <s:password 
                cssclass="input_text ui-widget ui-widget-content ui-corner-all campoTexto" 
                label="Contraseña" 
                name="password" 
                size="10"
                />
    
            <sj:submit 
                id="btnEntrar"
                button="true"
                value="Entrar"
                indicator="indicator"
                formIds="loginForm"
                onCompleteTopics="submitComplete"
                onBeforeTopics="beforeSubmit"
                targets="divContentResult"
                cssStyle="float:right;"
                />
    
            <div style="clear: both;"></div>
            <div id="error">
            </div>
            <div style="clear: both;">
            </div>
    
        </s:form>
    
    </div> <!-- Cierre div id="box" -->
    </div> <!-- Cierre div id="main" -->
    
    

Crear LoginAction en src\main\java\org\action:
package org.action;

import java.util.Map;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.ResultPath;
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;

@Namespace("/User")
@ResultPath(value="/")
@ParentPackage("json-default")
public class WelcomeUserAction extends ActionSupport implements SessionAware{
 private static final long serialVersionUID = 1L;

 private SessionMap<String,Object> sessionMap;
 
 @Override
 public void setSession(Map<String, Object> map) {
  sessionMap=(SessionMap)map;
 }
 
 private String userName;
 private String password;
 private String loginValido;
 
 @Action(
  value="Login", 
  results={
   @Result(
    name="success",
    type="json"
   )
  }
 )
 public String execute(){
  System.out.println("U="+this.userName);
  System.out.println("P="+this.password);
  
  if(
   this.userName.equalsIgnoreCase("cespower")
   &&
   this.password.equalsIgnoreCase("1234")
  ){
   this.loginValido="OK";
   this.sessionMap.put("userName", this.userName);
  }else
   this.loginValido="ERROR";
  
  return SUCCESS;
 }
 public String getUserName() {
  return userName;
 }
 public void setUserName(String userName) {
  this.userName = userName;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public String getLoginValido() {
  return loginValido;
 }
}

Al final, el login debe funcionar de la siguiente manera:



2 comentarios:

  1. Nice information and Thank You
    if you don't mind please visit my Website MPOGG
    it talks about Slot Online and other fun things.
    Also visit our patner website Asiaking168 the best slot in Asia also known as asia slot
    Thank You

    ResponderEliminar
  2. mpo4d is a good engine from mpo. This entertainment business provide by TOWERKLUB, you can do mpo4d login in here

    ResponderEliminar