Check-in [4baacad57e]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:login admin, log , correcion nombre parquete persistencia
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:4baacad57e151d21bfa694cbb830c8a12bf00e7d
User & Date: malcon 2015-01-08 02:51:19
Context
2015-01-08
04:06
estilos admin check-in: 894392e309 user: malcon tags: trunk
02:51
login admin, log , correcion nombre parquete persistencia check-in: 4baacad57e user: malcon tags: trunk
2015-01-06
09:22
plantilla admin check-in: 3ffe99c11b user: malcon tags: trunk
Changes

Changes to WebContent/META-INF/context.xml.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<context>
	<Resource auth="Container"
	    driverClassName="com.mysql.jdbc.Driver"
	    maxActive="10"
	    name="jdbc/daw1"
	    username="root"
	    password="123"
	    type="javax.sql.DataSource"
	    url="jdbc:mysql://localhost:3306/agenciadb">
	</Resource>
</context>








|





1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<context>
	<Resource auth="Container"
	    driverClassName="com.mysql.jdbc.Driver"
	    maxActive="10"
	    name="jdbc/daw1"
	    username="root"
	    password="mysql"
	    type="javax.sql.DataSource"
	    url="jdbc:mysql://localhost:3306/agenciadb">
	</Resource>
</context>

Changes to WebContent/WEB-INF/admin/login.jsp.

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<s:head />
</head>
<body>

	<p>Login</p>

	<s:form action="loginUsuario" namespace="/admin">
		<s:textfield key='usuario'  name="usuario.cuenta" />
		<s:password key='clave' name="usuario.contrasena" />
		<s:submit value="Aceptar" />
	</s:form>

	<s:actionerror />

	








|
|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<s:head />
</head>
<body>

	<p>Login</p>

	<s:form action="loginUsuario" namespace="/admin">
		<s:textfield key='usuario'  name="usuario.usuario" />
		<s:password key='clave' name="usuario.clave" />
		<s:submit value="Aceptar" />
	</s:form>

	<s:actionerror />

	

Changes to src/action/UsuarioAction.java.

1
2















3
4

5

















































package action;
















public class UsuarioAction {


}



















































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|

>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package action;


import java.util.Map;

import model.Usuario;
import negocio.UsuarioService;
import negocio.UsuarioServiceDAO;


import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.SessionAware;

import util.Constantes;

import com.opensymphony.xwork2.ActionSupport;

public class UsuarioAction extends ActionSupport implements SessionAware{

	private static final long serialVersionUID = 1L;

	//atributos I/O
	private Usuario usuario;
	private SessionMap<String, Object> session;
	
	public void setSession(Map<String, Object> session) {
		this.session = (SessionMap<String, Object>)session;
		
	}
	
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	public Usuario getUsuario() {
		return usuario;
	}
	
	public String login() throws Exception{
		
		String vista="";
		
	
		UsuarioService loginService=new UsuarioServiceDAO();
		String res=loginService.isCredencialValida(usuario);

		if(res!=null){//caso credenciales correctas
			//System.out.println(getUsuario().getUsuario());
			session.put("usuario_admin", getUsuario().getUsuario());
			//mensaje informativo
			String[] params=new String[]{res};
			addActionMessage(getText(Constantes.MENSAJE_LOGIN_EXITO,params) ); 

			vista=SUCCESS;

		}else{//caso credenciales incorrectas
			addActionError(getText(Constantes.MENSAJE_LOGIN_VALIDACION)); //mensaje de error
			vista=LOGIN;
		}
	
		//retorna result
		return vista;
	}
	
	public String logout() throws Exception {      
        //invalidamos sesion
        session.invalidate();
        return LOGIN;
	}

}

Added src/interceptor/CronometroInterceptor.java.

















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package interceptor;

import org.apache.log4j.Logger;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class CronometroInterceptor implements Interceptor{
	
	private static final long serialVersionUID = -3995934949117455140L;
	Logger logger=Logger.getLogger(CronometroInterceptor.class);
	
	@Override
	public void destroy() {}

	@Override
	public void init() {}

	@Override
	public String intercept(ActionInvocation arg0) throws Exception {
		
		//pre-procesamiento
		long inicio=System.currentTimeMillis();
		
		String actionMapping=arg0.getProxy().getActionName();
		String actionClass=arg0.getAction().getClass().getName();
		
		String result=arg0.invoke();
		
		//post-procesamiento
		long fin=System.currentTimeMillis();	
		long tiempo= fin-inicio;
		logger.info("ActionMapping: "+actionMapping+
					" ActionClass:"+actionClass+
					" Tiempo: "+tiempo+"ms.");
		
		return result;
	}

}

Added src/log4j.properties.

















>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[PIT %p] %-5m %d{dd/MM/yyyy HH:MM:ss} %n

log4j.logger.com.opensymphony.xwork2=INFO
log4j.logger.org.apache.struts2=INFO
log4j.logger.org.apache.ibatis=DEBUG

Changes to src/model/Usuario.java.

1
2
3
4
5
6




7
8
9
10
11

12
13
14
15
16
17
18
package model;

import java.io.Serializable;

public class Usuario implements Serializable {
	




	private Integer codigo;
	private String usuario;
	private String nombre;
	private String clave;
	private Boolean web;

	public Integer getCodigo() {
		return codigo;
	}
	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}
	public String getUsuario() {






>
>
>
>





>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package model;

import java.io.Serializable;

public class Usuario implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Integer codigo;
	private String usuario;
	private String nombre;
	private String clave;
	private Boolean web;
	
	public Integer getCodigo() {
		return codigo;
	}
	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}
	public String getUsuario() {

Added src/negocio/ClienteServiceDAO.java.











>
>
>
>
>
1
2
3
4
5
package negocio;

public class ClienteServiceDAO {

}

Added src/negocio/UsuarioService.java.



















>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
package negocio;

import model.Usuario;

public interface UsuarioService {
	
	public String isCredencialValida(Usuario usuario) throws Exception;

}

Added src/negocio/UsuarioServiceDAO.java.















































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package negocio;

import org.apache.ibatis.session.SqlSession;

import persistencia.mybatis.mapper.UsuarioMapper;
import util.MyBatisUtil;
import model.Usuario;

public class UsuarioServiceDAO implements UsuarioService{

	@Override
	public String isCredencialValida(Usuario usuario) throws Exception {
		// TODO Auto-generated method stub
		SqlSession session=MyBatisUtil.getSqlSessionFactory().openSession();
		UsuarioMapper usuarioMapper=session.getMapper(UsuarioMapper.class);
		String rs=usuarioMapper.getAccess(usuario);
		session.close();
	          
		return rs;
	}
	

}

Added src/persistencia/mybatis/mapper/ClienteMapper.java.











>
>
>
>
>
1
2
3
4
5
package persistencia.mybatis.mapper;

public class ClienteMapper {

}

Added src/persistencia/mybatis/mapper/ClienteMapper.xml.

































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper 
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

 <mapper namespace="persistencia.mybatis.mapper.ClienteMapper">
 
     <resultMap type="cliente" id="rmClienteBusqueda">
        <id column="id" property="codigo"/>
        <result column="nombres" property="nombres"/>
        <result column="ap_paterno" property="ap_paterno"/>
        <result column="ap_materno" property="ap_materno"/>
     </resultMap>
     
    <select id="buscar" resultMap="rmClienteBusqueda" parameterType="cliente">
    	SELECT id, nombres, ap_paterno, ap_materno
    	FROM cliente
    	WHERE nombres LIKE #{nombres}
    </select>
    
    <resultMap type="cliente" id="rmClienteByPK">
        <id column="id" property="codigo"/>
        <result column="nombres" property="nombres"/>
        <result column="ap_paterno" property="ap_paterno"/>
        <result column="ap_materno" property="ap_materno"/>
        <result column="direccion" property="direccion"/>
        <result column="telefono" property="telefono"/>
        <result column="dni" property="dni"/>
        <result column="ruc" property="ruc"/>
        <result column="email" property="email"/>
        <association property="usuario" javaType="usuario">
            	<result column = "usuario_id" property="codigo"/>
        </association>
    </resultMap>
    
 	<select id="obtener" resultMap="rmClienteByPK" parameterType="integer">
 		SELECT c.id, c.nombres, c.ap_paterno, c.ap_materno, 
 			c.direccion, c.telefono, c.dni, c.ruc, c.email, u.usuario
 			FROM cliente c, usuario u
 			WHERE c.usuario_id = u.id
 			AND c.id = #{codigo}
 	</select>
 	
 	<insert id="insertar" parameterType="cliente">
 		INSERT INTO cliente(nombres, ap_paterno, ap_materno, dni, ruc, email, telefono, direccion, usuario_id)
 		values (#{nombres},#{ap_paterno},#{ap_materno},#{dni},#{ruc},#{email},#{telefono},#{direccion},#{usuario.codigo})
 	</insert>
 	
 	<update id="actualizar" parameterType="cliente">
 		UPDATE cliente
 		SET nombres=#{nombres},
 			ap_paterno=#{ap_paterno},
 			ap_materno=#{ap_materno},
 			dni=#{dni},
 			ruc=#{ruc},
 			email=#{email},
 			telefono=#{telefono},
 			direccion=#{direccion}
 			WHERE id=#{codigo}
 	</update>
 
 
 </mapper>

Added src/persistencia/mybatis/mapper/UsuarioMapper.java.



















>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
package persistencia.mybatis.mapper;

import model.Usuario;

public interface UsuarioMapper {
	
	String getAccess(Usuario usuario);

}

Added src/persistencia/mybatis/mapper/UsuarioMapper.xml.

































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper 
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
 <mapper namespace="persistencia.mybatis.mapper.UsuarioMapper">
 
  <select id="getAccess" resultType="string" parameterType="usuario">
	  	SELECT usuario
	  	FROM usuario
	  	WHERE usuario= #{usuario}
	  	AND clave = #{clave}
   </select>
 
 </mapper>

Added src/recursos/textos.properties.









































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#key= value

#titulos
titulo.index=Cibertec te da la bienvenida
titulo.principal=Bienvenido a la zona de Administraci&oacute;n
titulo.empleado.nuevo=Nuevo Empleado
titulo.vendedor.busqueda=Busqueda de Vendedores
titulo.vendedor.edicion=Edici&oacute;n de Vendedor
titulo.vendedor.detalle=Datos de Vendedor
titulo.cabecera=DESARROLLO DE APLICACIONES WEB I
titulo.menu=Opciones
titulo.pie=CIBERTEC

#titulos menu
titulo.menu.empleado=Gesti&oacute;n de Empleados
titulo.menu.vendedor=Gesti&oacute;n de Vendedores

#parrafos
parrafo.login=Por favor identif&iacute;quese.

#etiquetas
label.usuario=Usuario
label.clave=Contraseņa
label.nombre=Nombre
label.apellido=Apellido
label.genero=Genero
label.estadoCivil=Estados Civiles
label.estudiosSuperiores=Estudios Superiores
label.fechaNacimiento=Fecha Nacimiento
label.experiencia=Experiencia
label.cargo=Cargo
label.vigente=Vigente?
label.codigo=C&oacute;digo
label.actualizar=Actualizar
label.eliminar=Eliminar
label.detalle=Detalle
label.distrito=Distrito
label.foto=Foto

#accion
accion.iniciar=Iniciar
accion.login=Acceder
accion.logout=Cerrar Sesion
accion.grabar=Grabar
accion.editar=Editar
accion.nuevo=Nuevo
accion.buscar=Buscar
accion.actualizar.inicial=A
accion.eliminar.inicial=E
accion.detalle=Detalle
accion.mantenimiento=Mantenimiento

#modulo
modulo.vendedor=Vendedor
modulo.empleado=Empleado

#listados
estadoCivil.casado=CASADO
estadoCivil.soltero=SOLTERO
genero.masculino=MASCULINO
genero.femenino=FEMENINO

#mensajes informativos
info.principal=Usuario: %{#session.usuario.username}
info.principal.fecha.acceso=La &uacute;ltima vez que accedi&oacute; fue {0}
info.resultado=Proceso Exitoso
info.resultado.registro=Registro de {0} fue exitoso
info.resultado.actualizacion=Se actualiz&oacute; {0} con c&oacute;digo {1}
info.resultado.eliminacion=Se elimin&oacute; {0} con c&oacute;digo {1}

#mensaje error
error.login.credenciales=Credenciales Incorrectas
error.no.disponible=En estos momentos no lo podemos atender
error.solicitud.nulo=La solicitud no pudo ser procesada correctamente

#seccion menu
idioma.titulo=Seleccione un idioma para ingresar
idioma.ingles=Ingl&eacute;s
idioma.espanol=Espaņol

#validaciones
campo.requerido=Dato requerido
campo.longitud.minima=Longitud minima es %{minLength}
campo.longitud.maxima=Longitud maxima es %{maxLength}

Changes to src/struts.xml.

1
2
3
4
5
6
7

8
9
10
11
12
13
14
15
16
17
18
19


















20
21
22
23
24
25
26
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
	 			
	<include file="struts-admin.xml"/>
	<include file="struts-cliente.xml"/>
	<include file="struts-reserva.xml"/>
	<include file="struts-web.xml"/>
    
	<package name="demo" extends="struts-default">
		<result-types>
			<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"></result-type>
		</result-types>
		


















		<global-results>		
			<result name="null">/WEB-INF/error/nulo.jsp</result>
			<result name="noDisponible">/WEB-INF/error/noDisponible.jsp</result>
		</global-results>
		
		<global-exception-mappings>		
			<exception-mapping result="null" 







>
|











>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
	<constant name="struts.custom.i18n.resources" value="recursos.textos" />
	<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
	 			
	<include file="struts-admin.xml"/>
	<include file="struts-cliente.xml"/>
	<include file="struts-reserva.xml"/>
	<include file="struts-web.xml"/>
    
	<package name="demo" extends="struts-default">
		<result-types>
			<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"></result-type>
		</result-types>
		
		<interceptors>
			<interceptor name="cronometro" class="interceptor.CronometroInterceptor"/>
			
			<interceptor-stack name="pitStack">
				<interceptor-ref name="cronometro"/>
				<interceptor-ref name="defaultStack">
					<param name="prepare.excludeMethods">buscar,eliminar</param>
				</interceptor-ref>
			</interceptor-stack>
			
			<interceptor-stack name="pitParamsPrepareParamsStack">
				<interceptor-ref name="cronometro"/>
				<interceptor-ref name="paramsPrepareParamsStack"/>
			</interceptor-stack>
		</interceptors>
		
		<default-interceptor-ref name="pitStack" />
		
		<global-results>		
			<result name="null">/WEB-INF/error/nulo.jsp</result>
			<result name="noDisponible">/WEB-INF/error/noDisponible.jsp</result>
		</global-results>
		
		<global-exception-mappings>		
			<exception-mapping result="null"