Commit c46daa5a by Alonso Moreno

[ADD] Creado login, integracion con seguridad

parent 438cc85f
......@@ -11,5 +11,7 @@ public interface PersonaDAO {
public JSONObject editarPersona(JSONObject datos);
public JSONObject cambiarEstado(JSONObject datos);
public JSONObject reportePersona(JSONObject datos);
}
......@@ -49,4 +49,14 @@ public class PersonaService {
return respuesta;
}
public JSONObject reportePersona(JSONObject datos) {
JSONObject respuesta = null;
try {
respuesta = dao.reportePersona(datos);
} catch (Exception e) {
System.out.println("Error PersonaService >> reportePersona >> " + e.getMessage());
}
return respuesta;
}
}
......@@ -32,9 +32,9 @@ public class PersonaServlet extends HttpServlet {
PrintWriter pw = response.getWriter();
JSONObject respuesta = new JSONObject();
respuesta
.put("status", false)
.put("message", "No existe la url solicitada.")
.put("data", "");
.put("status", false)
.put("message", "No existe la url solicitada.")
.put("data", "");
pw.print(respuesta);
break;
}
......
package demojsoncrud.servlets;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebFilter("/*")
public class RequestFilter implements Filter, ServletContextListener {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
System.out.println("Filter");
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
System.out.println("req URI ==> " + request.getRequestURI());
System.out.println("req Path ==> " + request.getContextPath());
String login = request.getContextPath() + "/vistas/index.jsp";
String assets = request.getContextPath() + "/plantilla/assets";
String css = request.getContextPath() + "/plantilla/css";
String js = request.getContextPath() + "/plantilla/js";
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
@Override
public void contextInitialized(ServletContextEvent sce) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
......@@ -219,12 +219,12 @@ public class PersonaSqlserverDAO implements PersonaDAO {
System.err.println("Error al registrar -> " + e.getMessage() + "[" + e.getErrorCode() + "]");
} finally {
try {
if (connection != null) {
connection.close();
}
if (psEditarPersona != null) {
psEditarPersona.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
System.err.println("Error: ha ocurrido un error al intentar cerrar las conexiones y/o liberacion de recursos -> " + e.getMessage());
}
......@@ -286,4 +286,9 @@ public class PersonaSqlserverDAO implements PersonaDAO {
return jsonReturn;
}
@Override
public JSONObject reportePersona(JSONObject datos) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
......@@ -5,14 +5,14 @@ To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<script>
window.location.href = "vistas/index.jsp";
</script>
</body>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<script>
window.location.href = "vistas/index.jsp";
</script>
</body>
</html>
const Cookies = {
set: (key, value, expiration) => {
key = [encodeURIComponent(key) + "=" + encodeURIComponent(value)]
expiration && ("expiry" in expiration && ("number" === typeof expiration.expiry && (expiration.expiry = new Date(1E3 * expiration.expiry + +new Date)),
key.push("expires=" + expiration.expiry.toGMTString())),
"domain" in expiration && key.push("domain=" + expiration.domain),
"path" in expiration && key.push("path=" + expiration.path),
"secure" in expiration && expiration.secure && key.push("secure"))
document.cookie = key.join("; ")
},
get: (key, bool) => {
const arr = []
for (let cookies = document.cookie.split(/; */), i = 0; i < cookies.length; i++) {
var cookie = cookies[i].split("=")
cookie[0] === encodeURIComponent(key) && arr.push(decodeURIComponent(cookie[1].replace(/\+/g, "%20")))
}
return bool ? arr : arr[0]
},
clear: (key, obj) => {
// b = key
// c = obj {path: '/', domain: '.example.com'}
obj || (obj = {});
obj.expiry = -86400;
this.set(key, "", obj)
}
};
\ No newline at end of file
// reusable ajax promise
const ajaxRequest = obj => {
return new Promise((resolve, reject) => {
$.ajax({
url: obj.url,
type: obj.type,
headers: obj.headers,
data: JSON.stringify(obj.body),
beforeSend: (xhr, settings) => {
}, success: (response, textStatus, jqXHR) => {
resolve(response)
}, error: (jqXHR, textStatus, errorThrown) => {
reject({
status: textStatus,
message: `Error making request`,
request: obj
})
}
})
})
}
// http request
const httpRequest = {
login(params) {
return ajaxRequest({
url: 'http://172.16.2.53:8080/security-rest/api/user/login',
type: 'POST',
headers: {
"Content-type": 'application/json',
"Accept": 'application/json'
},
body: params
})
},
verify() {
return ajaxRequest({
url: 'http://172.16.2.53:8080/security-rest/api/user/verificarLogin',
type: 'POST',
headers: {
"Content-type": 'application/json',
"Accept": 'application/json',
// "Authorization": window.localStorage.getItem('Authorization')
"Authorization": Cookies.get('Authorization')
}
})
}
}
// domevents
const DOMEvents = {
init() {
this.signIn()
this.verify()
},
signIn() {
document.querySelector('#signIn').addEventListener('click', (e) => {
let params = {
usuario: document.querySelector('#usuario').value.trim(),
pass: document.querySelector('#pass').value,
codigoProyecto: "2",
path: `${location.origin}/${location.pathname.split('/')[1]}/`
}
httpRequest.login(params)
.then(data => {
if (data.status) {
delete data["status"]
// window.localStorage.setItem('Authorization', 'Bearer ' + data.token)
// window.localStorage.setItem('menu', JSON.stringify(data.menu))
Cookies.set('Authorization', `Bearer ${data.token}`, {expiry: 36000000})
Cookies.set('menu', `${JSON.stringify(data.menu)}`)
window.location.href = 'main.jsp'
} else {
alert('No tienes autorización')
}
console.log(data)
})
.catch(err => console.log(err))
})
},
verify() {
document.querySelector('#verify').addEventListener('click', (e) => {
httpRequest.verify()
.then(data => console.log(data))
.catch(err => console.log(err))
})
}
}
DOMEvents.init()
\ No newline at end of file
......@@ -64,7 +64,6 @@ const ajaxRequest = obj => {
dataType: obj.dataType,
data: obj.body,
beforeSend: (xhr, settings) => {
}, success: (response, textStatus, jqXHR) => {
resolve(response)
}, error: (jqXHR, textStatus, errorThrown) => {
......@@ -253,6 +252,7 @@ const asignarEventos = () => {
})
document.querySelectorAll('.estado').forEach((e) => {
console.log(e)
e.addEventListener('click', (ev) => {
console.log(getClosest(ev.target, 'tr').rowIndex - 1)
})
......
<%--
Document : index
Created on : 05-ene-2018, 20:49:32
Author : Alonso
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<%@include file="templates/header.jsp" %>
<!--template-core-->
<!--css-->
<!--css-->
</head>
<body>
<%@include file="templates/header-body.jsp" %>
<!-- content -->
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-flat border-top-xlg border-top-primary">
<div class="panel-heading">
<h6 class="panel-title text-semibold"><i class="icon-location4 position-left"></i> Ubigeo</h6>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label class="text-uppercase">departamento<span class="text-danger"> (*)</span></label>
<select id="select_departamento" class="form-control" data-width="100%">
<option value="0">[ SELECCIONE ]</option>
</select>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label class="text-uppercase">provincia<span class="text-danger"> (*)</span></label>
<select id="select_provincia" class="bootstrap-select" data-width="100%">
<option value="0">[ SELECCIONE ]</option>
</select>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label class="text-uppercase">distrito<span class="text-danger"> (*)</span></label>
<select id="select_distrito" class="bootstrap-select" data-width="100%">
<option value="0">[ SELECCIONE ]</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<label class="text-danger pull-right">Campos obligatorios (*)</label>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- / content -->
<%@include file="templates/footer-body.jsp" %>
<!--js-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/selects/bootstrap_select.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/pages/form_bootstrap_select.js"></script>
<!--js-->
<script src="../js/general.js" type="text/javascript"></script>
<script src="../js/pages/consultaUbigeo.js" type="text/javascript"></script>
</body>
</html>
<%--
Document : index
Created on : 05-ene-2018, 20:49:32
Author : Alonso
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<%@include file="templates/header.jsp" %>
<!--template-core-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>DEMO JSON CRUD</title>
<!-- Global stylesheets -->
<link href="https://fonts.googleapis.com/css?family=Roboto:400,300,100,500,700,900" rel="stylesheet" type="text/css">
<link href="../plantilla/assets/css/icons/icomoon/styles.css" rel="stylesheet" type="text/css">
<link href="../plantilla/assets/css/bootstrap.css" rel="stylesheet" type="text/css">
<link href="../plantilla/assets/css/core.css" rel="stylesheet" type="text/css">
<link href="../plantilla/assets/css/components.css" rel="stylesheet" type="text/css">
<link href="../plantilla/assets/css/colors.css" rel="stylesheet" type="text/css">
<!-- /global stylesheets -->
</head>
<body class="login-container">
<!-- Page container -->
<div class="page-container">
<!--css-->
<!-- Page content -->
<div class="page-content">
<!--css-->
</head>
<!-- Main content -->
<div class="content-wrapper">
<body>
<%@include file="templates/header-body.jsp" %>
<!-- Content area -->
<div class="content">
<!-- content -->
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-flat border-top-xlg border-top-primary">
<div class="panel-heading">
<h6 class="panel-title text-semibold"><i class="icon-location4 position-left"></i> Ubigeo</h6>
<!-- Advanced login -->
<form action="#" >
<div class="panel panel-body login-form">
<div class="text-center">
<div class="icon-object border-slate-300 text-slate-300"><i class="icon-reading"></i></div>
<h5 class="content-group">PROYECTO ESTÁNDAR <small class="display-block">Ingrese sus credenciales</small></h5>
</div>
<div class="form-group has-feedback has-feedback-left">
<input type="text" id="usuario" class="form-control" placeholder="Usuario" value="amoreno">
<div class="form-control-feedback">
<i class="icon-user text-muted"></i>
</div>
</div>
<div class="form-group has-feedback has-feedback-left">
<input type="password" id="pass" class="form-control" placeholder="Contraseña" value="123">
<div class="form-control-feedback">
<i class="icon-lock2 text-muted"></i>
</div>
</div>
<div class="form-group login-options">
<div class="row">
<div class="col-sm-6">
<label class="checkbox-inline">
<input type="checkbox" class="styled" checked="checked">
Remember
</label>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label class="text-uppercase">departamento<span class="text-danger"> (*)</span></label>
<select id="select_departamento" class="form-control" data-width="100%">
<option value="0">[ SELECCIONE ]</option>
</select>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label class="text-uppercase">provincia<span class="text-danger"> (*)</span></label>
<select id="select_provincia" class="bootstrap-select" data-width="100%">
<option value="0">[ SELECCIONE ]</option>
</select>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label class="text-uppercase">distrito<span class="text-danger"> (*)</span></label>
<select id="select_distrito" class="bootstrap-select" data-width="100%">
<option value="0">[ SELECCIONE ]</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<label class="text-danger pull-right">Campos obligatorios (*)</label>
</div>
</div>
<div class="col-sm-6 text-right">
<a href="login_password_recover.html">¿Olvidaste tu contraseña?</a>
</div>
</div>
</div>
<div class="form-group">
<button type="button" id="signIn" class="btn bg-blue btn-block">Ingresa <i class="icon-arrow-right14 position-right"></i></button>
</div>
<div class="form-group">
<button type="button" id="verify" class="btn bg-blue btn-block">Verificar token <i class="icon-arrow-right14 position-right"></i></button>
</div>
</div>
</form>
<!-- /advanced login -->
<!-- Footer -->
<div class="footer text-muted text-center">
&copy; 2015. <a href="#">Proyecto Estándar</a> por <a href="#">Área Sistemas TIC</a>
</div>
<!-- /footer -->
</div>
<!-- /content area -->
</div>
<!-- / content -->
<!-- /main content -->
</div>
<!-- /page content -->
</div>
<!-- /page container -->
<%@include file="templates/footer-body.jsp" %>
<!--javascript template-->
<!-- Core JS files -->
<script type="text/javascript" src="../plantilla/assets/js/plugins/loaders/pace.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/core/libraries/jquery.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/core/libraries/bootstrap.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/plugins/loaders/blockui.min.js"></script>
<!-- /core JS files -->
<!--js-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/selects/bootstrap_select.min.js"></script>
<!-- Theme JS files -->
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/styling/uniform.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/pages/form_bootstrap_select.js"></script>
<!--js-->
<script src="../js/general.js" type="text/javascript"></script>
<script src="../js/pages/ubigeo.js" type="text/javascript"></script>
</body>
<script type="text/javascript" src="../plantilla/assets/js/core/app.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/pages/login.js"></script>
<!-- /theme JS files -->
<!--javascript template-->
<script src="../js/lib/cookies.js" type="text/javascript"></script>
<script src="../js/pages/index.js" type="text/javascript"></script>
</body>
</html>
<%--
Document : index
Created on : 05-ene-2018, 20:49:32
Author : Alonso
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<%@include file="templates/header.jsp" %>
<!--template-core-->
<!--css-->
<!--css-->
</head>
<body>
<%@include file="templates/header-body.jsp" %>
<!-- content -->
<!-- / content -->
<%@include file="templates/footer-body.jsp" %>
<!--js-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/selects/bootstrap_select.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/pages/form_bootstrap_select.js"></script>
<!--js-->
<script src="../js/general.js" type="text/javascript"></script>
</body>
</html>
......@@ -264,7 +264,7 @@
<!--mi js-->
<script src="../js/lib/validate_inputs.js" type="text/javascript"></script>
<script src="../js/general.js" type="text/javascript"></script>
<script src="../js/pages/persona.js" type="text/javascript"></script>
<script src="../js/pages/mantenimientoPersona.js" type="text/javascript"></script>
<!--mi js-->
</body>
......
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<%@include file="templates/header.jsp" %>
<!--template-core-->
<!--css-->
<!--css-->
</head>
<body>
<%@include file="templates/header-body.jsp" %>
<!-- content -->
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="panel panel-flat border-top-xlg border-top-primary">
<div class="panel-heading">
<h6 class="panel-title text-semibold"><i class="icon-cog3 position-left"></i> Mantenimiento persona</h6>
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="control-label display-block">Ingresar criterio de búsqueda: </label>
<div class="input-group input-group-xlg">
<span class="input-group-addon"><i class="icon-search4"></i></span>
<input id="txt-busqueda" type="text" class="form-control" placeholder="Ingresar criterio">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 text-center">
<button id="btn_buscar_criterio" type="button" class="btn btn-primary"><i class="icon-search4 position-left"></i> Buscar</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="panel panel-flat border-top-xlg border-top-primary">
<div class="panel-heading">
<h6 class="panel-title text-semibold"><i class=" icon-list3 position-left"></i> Listado persona</h6>
</div>
<div class="table-responsive">
<table class="table table-striped table-sm" id="tbl-persona">
<thead>
<tr>
<th>#</th>
<th>DNI</th>
<th>APELLIDOS Y NOMBRES</th>
<th>EDAD</th>
<th>CORREO ELECTRONICO</th>
<th>ESTADO</th>
<th>ACCIONES</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- / content -->
<%@include file="templates/footer-body.jsp" %>
<!--js plantilla-->
<!--jQueryValidator-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/validation/validate.min.js"></script>
<!--jQueryValidator-->
<!--form-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/inputs/touchspin.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/pages/form_input_groups.js"></script>
<!--form-->
<!--modal-->
<script type="text/javascript" src="../plantilla/assets/js/pages/components_modals.js"></script>
<!--modal-->
<!--sweetalerts-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/notifications/bootbox.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/plugins/notifications/sweet_alert.min.js"></script>
<!--sweetalerts-->
<!--datatable-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/tables/datatables/datatables.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/selects/select2.min.js"></script>
<!--datatable-->
<!--js plantilla-->
<!--mi js-->
<script src="../js/lib/validate_inputs.js" type="text/javascript"></script>
<script src="../js/general.js" type="text/javascript"></script>
<!--mi js-->
</body>
</html>
......@@ -27,4 +27,5 @@
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/selects/bootstrap_multiselect.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/core/app.js"></script>
<script src="../js/lib/cookies.js" type="text/javascript"></script>
<!-- /core JS files -->
\ No newline at end of file
......@@ -6,6 +6,7 @@
<!-- Global stylesheets -->
<link href="https://fonts.googleapis.com/css?family=Roboto:400,300,100,500,700,900" rel="stylesheet" type="text/css">
<link href="../plantilla/assets/css/icons/icomoon/styles.css" rel="stylesheet" type="text/css">
<link href="../plantilla/assets/css/icons/fontawesome/styles.min.css" rel="stylesheet" type="text/css">
<link href="../plantilla/assets/css/bootstrap.css" rel="stylesheet" type="text/css">
<link href="../plantilla/assets/css/core.css" rel="stylesheet" type="text/css">
<link href="../plantilla/assets/css/components.css" rel="stylesheet" type="text/css">
......
<!-- Main sidebar -->
<div class="sidebar sidebar-main">
<div class="sidebar-content">
<div class="sidebar-content">
<!-- User menu -->
<div class="sidebar-user">
<div class="category-content">
<div class="media">
<a href="#" class="media-left"><img src="../plantilla/assets/images/placeholder.jpg" class="img-circle img-sm" alt=""></a>
<div class="media-body">
<span class="media-heading text-semibold">Alonso Moreno</span>
<div class="text-size-mini text-muted">
<i class="icon-pin text-size-small"></i> &nbsp;Lima - Per
</div>
</div>
<div class="media-right media-middle">
<ul class="icons-list">
<li>
<a href="#"><i class="icon-cog3"></i></a>
</li>
</ul>
</div>
</div>
<!-- User menu -->
<div class="sidebar-user">
<div class="category-content">
<div class="media">
<a href="#" class="media-left"><img src="../plantilla/assets/images/placeholder.jpg" class="img-circle img-sm" alt=""></a>
<div class="media-body">
<span class="media-heading text-semibold">Alonso Moreno</span>
<div class="text-size-mini text-muted">
<i class="icon-pin text-size-small"></i> &nbsp;Lima - Per
</div>
</div>
<div class="media-right media-middle">
<ul class="icons-list">
<li>
<a href="#"><i class="icon-cog3"></i></a>
</li>
</ul>
</div>
</div>
<!-- /user menu -->
</div>
</div>
<!-- /user menu -->
<!-- Main navigation -->
<div class="sidebar-category sidebar-category-visible">
<div class="category-content no-padding">
<ul class="navigation navigation-main navigation-accordion">
<!-- Main -->
<li class="navigation-header"><span>Main</span> <i class="icon-menu" title="Main pages"></i></li>
<!-- <li class="active"><a href="index.html"><i class="icon-home4"></i> <span>UBIGEO</span></a></li>-->
<li><a href="../vistas/index.jsp"><i class="icon-location4"></i> <span>UBIGEO</span></a></li>
<li>
<a href="#"><i class="icon-cog3"></i> <span>Mantenimiento</span></a>
<ul>
<li><a href="../vistas/persona.jsp" id="layout1">Persona</a></li>
</ul>
</li>
</ul>
</div>
</div>
<!-- /main navigation -->
<!-- Main navigation -->
<div class="sidebar-category sidebar-category-visible">
<div class="category-content no-padding">
<ul class="navigation navigation-main navigation-accordion">
<!-- Main -->
<li class="navigation-header">
<span><i class="icon-menu" title="Main pages"></i> MEN PRINCIPAL</span>
</li>
<li>
<a href="#"><i class="fa fa-gears fa-lg"></i> <span>MANTENIMIENTO</span></a>
<ul>
<li><a href="../vistas/mantenimientoPersona.jsp"><span>PERSONA</span></a></li>
</ul>
</li>
<li>
<a href="#"><i class="fa fa-exclamation-triangle fa-lg"></i> <span>REPORTES</span></a>
<ul>
<li><a href="../vistas/reportePersona.jsp" id="layout1">PERSONA</a></li>
</ul>
</li>
<li class="navigation-header">
<span><i class="icon-menu" title="Main pages"></i> MEN SECUNDARIO</span>
</li>
<li>
<a href="#"><i class="fa fa-search fa-lg"></i> <span>CONSULTA</span></a>
<ul>
<li><a href="../vistas/consultaUbigeo.jsp"><span>UBIGEO</span></a></li>
</ul>
</li>
</ul>
</div>
</div>
<!-- /main navigation -->
</div>
</div>
<!-- /main sidebar -->
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment