lunes, 30 de marzo de 2020

java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


Buenas, si estáis es la misma situación que yo intentado utilizar Struts2 en eclipse y teneis el mismo error, está fue mi solución, desconozco si es lo más correcto pero a mí me funcionó:

Me descargue la versión de struts “struts-2.3.37”. Y en el directorio de mi proyecto en "Lib" no agregar todos los “.jar” solamente los siguientes:
  • commons-fileupload-1.4.jar
  • commons-io-2.2.jar
  • commons-lang3-3.2.jar
  • commons-logging-1.1.3.jar
  • freemarker-2.3.28.jar
  • javassist-3.11.0.GA.jar
  • ognl-3.0.21.jar
  • struts2-core-2.3.37.jar
  • xwork-core-2.3.37.jar




y ya pude iniciar “Tomcat”.


lunes, 16 de marzo de 2020

VSView 8.0 C# mostrar número total de paginas


Este ejemplo muestra dos métodos para obtener encabezados que indican el número total de páginas en el documento.

Método 1: dos pases
Este método es simple y adecuado para documentos cortos. Consiste en crear el documento dos veces: una vez solo para contar las páginas y una vez para crear el documento completo.

  
vp.Header = "Página " + x+ " de " + vp.PageCount;
vp.StartDoc();

// Creamos el documento

vp.EndDoc();

vp.Header = "Página " + x+ " de " + vp.PageCount;
vp.StartDoc();

// Creamos el documento

vp.EndDoc();

Método 2: pase único
Este método utiliza superposiciones para realizar las mismas tareas en una sola pasada. Los encabezados se dibujan en cada página. Después de que se complete el documento.
  
vp.StartDoc();
// Creamos el documento
vp.EndDoc();

for (int x=1; x < vp.PageCount; x++)
{
   vp.StartOverlay((short)x, true);
   vp.TextAlign = VSPrinter8Lib.TextAlignSettings.taRightTop;
   vp.CurrentX = vp.MarginHeader;
   vp.FontName =  "Times New Roman";
   vp.FontSize = (float)8;
   vp.TextRTF = @"Página " + x+ " de " + vp.PageCount;
   vp.EndOverlay();
}

lunes, 24 de febrero de 2020

XAMPP - Error al iniciar Apache


Mensaje error:
11:15:36  [Apache] Error: Apache shutdown unexpectedly.
11:15:36  [Apache] This may be due to a blocked port, missing dependencies,
11:15:36  [Apache] improper privileges, a crash, or a shutdown by another method.
11:15:36  [Apache] Press the Logs button to view error logs and check
11:15:36  [Apache] the Windows Event Viewer for more clues
11:15:36  [Apache] If you need more help, copy and post this
11:15:36  [Apache] entire log window on the forums

Solución: fue simplemente definir otros puerto para arrancar el servidor web.


Paso 1: Modificar fichero “httpd.conf”
Ruta: C:\xampp\apache\conf

Modificar:

#Listen 12.34.56.78:80
Listen 80

por

#Listen 12.34.56.78:80
Listen 8080


Paso 2: Modificar fichero “httpd-ssl.conf”
Ruta: C:\xampp\apache\conf\extra

Modificar:

# When we also provide SSL we have to listen to the
# standard HTTP port (see above) and to the HTTPS port
#
Listen 443

Por

# When we also provide SSL we have to listen to the
# standard HTTP port (see above) and to the HTTPS port
#
Listen 4433

martes, 18 de febrero de 2020

Activar Visual Studio 2015 community Sin Acceso a internet

1º) Activar el Visual Studio 2015 Community desde otra maquina que si tenga acceso a Internet o conseguir el archivo de activación de otra maquina. El fichero lo podremos encontrar en la siguiente ruta del equipo:

 2º) Copiar carpeta “ OnlineLicensing”. 

Ejemplo: C:\Users\nombreUsuario\AppData\Local\Microsoft\VSCommon


 Dentro de ese directorio hay una carpeta llamada “OnlineLicensing” este sera la carpeta que tendremos que copiar para poder utilizar el Visual Studio en la maquina que no tiene acceso a la red.

jueves, 31 de octubre de 2019

Ejemplo Progress bar

Requisitos:

  • Sistema Operativo: Windows 
  • IDE: Visual Studio 2009, framework 4.0 


Paso 1: Diseño interfaz



NOTA: como se ve en la captura se agregado en componente “Timer”.



Paso 2: Código.
   
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Ejemplo_Progress_bar
{
    public partial class Principal : Form
    {
        public Principal()
        {
            InitializeComponent();
        }

        private void butLanzar_Click(object sender, EventArgs e)
        {
            // Reset
            progressBar1.Value = 0;
            progressBar1.Maximum = int.Parse(txtTiempo.Text);

            // Activamos el Timer
            timer1.Interval = 1000; // 1 Segundo
            timer1.Start();
        }

        // Evento del timer
        private void timer1_Tick(object sender, EventArgs e)
        {
            // Comparamos si se ha llegado al limite
            if (progressBar1.Maximum == progressBar1.Value)
            {
                timer1.Stop();
                MessageBox.Show("Completado");
            }

            // Avanzamos el la barra
            progressBar1.Increment(1);
        }
    }
}


Resultado:

martes, 27 de agosto de 2019

C# Insertar fichero XML en Oracle



Requisitos:
IDE: Visual Studio 2005 .NET
Base de datos: Oracle



Paso 1: Creación aplicación escritorio

  • Vamos crear la siguiente interfaz.


  •        Cargar fichero XML.
     Vamos a mostrar el código del botón “Cargar”.
        private void btCargar_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "Archivos XML | *.xml";
            openFileDialog1.Multiselect = false;
            openFileDialog1.ShowDialog();

            // Mostramos valor en el textbox
            txtRuta.Text = openFileDialog1.FileName;
        }

  • Llamada procedimiento almacenado (botón "Generar")
        private void btGenerar_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.FileName.Trim() != "")
            {

                // Objeto deconexión
                OracleConnection conn = new OracleConnection();

                try
                {                
                    conn.ConnectionString = "TuCadenaConexiónBD";

                    String procedimiento = "MIESQUEMA.PG_XML.PR_XML_TO_TABLE";

                    OracleCommand command = new OracleCommand();
                    command.Connection = conn;

                    command.CommandText = procedimiento;
                    command.CommandType = CommandType.StoredProcedure;

                    // Parametro XML
                    XmlDocument xmlDoc = new XmlDocument();
                    string ruta = openFileDialog1.FileName;
                    xmlDoc.Load(ruta);

                    string xml = xmlDoc.OuterXml;

                    OracleParameter param1 = new OracleParameter();
                    param1.OracleType = OracleType.Clob;
                    param1.Direction = ParameterDirection.Input;
                    param1.ParameterName = "pXmlContent";

                    param1.Value = xml;

                    command.Parameters.Add(param1);

                    // Parametros Salida Resultado
                    OracleParameter param2 = new OracleParameter();
                    param2.OracleType = OracleType.VarChar;
                    param2.Size = 500;
                    param2.Direction = ParameterDirection.InputOutput;
                    param2.ParameterName = "pResultado";
                    param2.Value = "";

                    command.Parameters.Add(param2);


                    conn.Open();
                    int exito = command.ExecuteNonQuery();

                    // Todo bien
                    if (exito == 1)
                    {
                        MessageBox.Show("Resultado: " + command.Parameters["pResultado"].Value.ToString());
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("ERROR: " + ex.Message.ToString());
                }
                finally
                {
                    // Cerramos Conexión
                    conn.Close();
                }
            }
            else
            {
                MessageBox.Show("No se ha seleccionado ningun fichero.");
            }
        }

NOTA: La variable "TuCadenaConexiónBD" se debe remplazar por tu cadena de conexión a la Base de datos.


Paso 2: Procedimiento para inserción del XML

  • Para ello hemos creado dentro de nuestra base de datos el paquete "PG_XML" y el procedimiento "PR_XML_TO_TABLE". Este procedimiento insertara el XML en la tabla “XML_TABLE”.
CREATE OR REPLACE PACKAGE BODY MIESQUEMA."PG_XML" 
AS

PROCEDURE PR_XML_TO_TABLE(
    pXmlContent IN CLOB, 
    pResultado  OUT VARCHAR2 
) 
IS

BEGIN
   
    INSERT INTO XML_TABLE 
    VALUES (SYSDATE, 9999, XMLTYPE(pXmlContent));

    pResultado := 'OK';
    
EXCEPTION 
    WHEN OTHERS THEN
        ROLLBACK;
        pResultado :=  'ERROR EN PG_XML.PR_XML_TO_TABLE: ' || SQLERRM;

END PR_XML_TO_TABLE;

END PG_XML;
/

Paso 3: Creación XML

    41975980Z
    Manuel
    Cruz
    Pérez
    617841085




Código fuente: aqui

viernes, 23 de agosto de 2019

Lanzar Ejecutables(EXE) desde el navegador web

El presente post está destinado a explicar cómo podemos ejecutar aplicaciones de escritorio desde el nuestro cliente web.

La necesidad de esta aplicación surge debido a necesidad de la ejecución de aplicaciones de escritorio desde el navegador web. Utilizando para ello otras plataformas que no sean los ActiveX ya que la compatibilidad con dicho componente no tienen soporte para otras plataformas de navegador fuera de Internet Explorer como pueden ser Chrome, Firefox, Safari, etc.

Descripción de aplicación de ejemplo:
Vamos a realizar una pequeña aplicación en la que vamos a lanzar la calculadora de Windows desde el navegador.

Paso 1: Crear registro de Windows


  • Creamos el fichero "AppUrl.reg" para agregar al registro.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\appurl]
@="URL:AutoHotKey AppURL Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\appurl\DefaultIcon]
@="appurl.exe,1"

[HKEY_CLASSES_ROOT\appurl\shell]

[HKEY_CLASSES_ROOT\appurl\shell\open]

[HKEY_CLASSES_ROOT\appurl\shell\open\command]
@="\"C:\\Windows\\System32\\calc.exe\" \"%1\""

  • Añadimos al registro de Windows.



Paso 2: Crear web

==================================================================================
<html>

<head>

<meta charset="UTF-8"> 

<style>

 button {
  width: 180px;
  height: 60px;
 }

 td {
  height: 60px;
  border-style: solid;
  border-width: 1px;
  text-align: center;
 }

 .btn {
  border-width: 0px;
 }

 p {
  text-align: center;
 }
 
</style>

<script type="text/javascript">

function LanzarAPP() {
    window.location.assign("appurl://1");
}

</script>

</head>

<body>
 <h1 align=center><u> Ejecutar appURL </u></h1>
 <p id="contador"></p>
 <table width=600 align="center"><tr>
  <tr>
  <td class='btn'><button onclick="LanzarAPP()">Calc.exe</button></td>
  <tr>
 </table>
</body>

</html>
==================================================================================

Ejemplo: