Foros del Web » Programación para mayores de 30 ;) » Java »

FAQ's de Java

Estas en el tema de FAQ's de Java en el foro de Java en Foros del Web. Tema: NET y Coneccion a BD Pregunta: Acceso a datos con un jndi segunda parte? Respuesta: un jndi es un metodo de tener acceso a ...

  #61 (permalink)  
Antiguo 14/05/2008, 09:42
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 8 años, 8 meses
Puntos: 2
Re: FAQ's de Java

Tema: NET y Coneccion a BD
Pregunta: Acceso a datos con un jndi segunda parte?
Respuesta: un jndi es un metodo de tener acceso a bases de datos mucho mas rapido que con un acceso jdbc tradicional.

En ocasiones dependiendo del Sistema operativo hay que hacer unos pasos más.

Si con el faq anterior no se ha realizado la conexión puedes entrar directamente al archivo Server.xml del tomcat y escribir el mismo código que escribiste en el archivo content.xml, ten cuidado en este archivo una mala configuración puede hacer que el tomcat no se levante.

Código PHP:
<Context path="/prueba" docBase="/home/lino/sitios_web/prueba" reloadable="true">
         <
Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" maxActive="50" maxIdle="5" maxWait="20000" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/database"/>
      </
Context>¡ 
Otra cosa que puedes hacer es declarar las variables de entorno por ejemplo en Linux hacer algo como esto.

Código PHP:
JAVA_HOME="/usr/local/java/jdk1.5.0_10"
CLASSPATH="/usr/local/java/jdk1.5.0_10/lib/tools.jar:/usr/local/java/jdk1.5.0_10/lib/dt.jar:/usr/local/tomcat/common/lib/mysql-connector.jar:/usr/local/tomcat/common/lib/servlet-api.jar"
PATH="$PATH:/usr/local/java/jdk1.5.0_10/bin"
CATALINA_HOME="/usr/local/tomcat"
export JAVA_HOME
export CLASSPATH
export PATH
export CATALINA_HOME 
los valores del jdk cambian de acuerdo a la versión que tengas. Verifica el class path para que mysql-connector este levantado.

Para windows se puede hacer desde el asistente de variables de entorno en propiedades de mi PC.
  #62 (permalink)  
Antiguo 14/05/2008, 10:03
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 8 años, 8 meses
Puntos: 2
Re: FAQ's de Java

Tema: NET y MVC
Pregunta: Nomenclatura de clases?
Respuesta: El patrón MVC o Modelo Vista Controlador esta orientado a la programación en capas separando la lógica del negocio de la vista. Las capas que se utilizan son Modelo, Vista y Controlador.

Modelo: la capa de Modelo es la capa intermedia entre la Vista y el Controlador, esta capa tiene tres tipos de clases importantes o beans como las llaman los desarrolladores de java estas clases son: clases BO, clases DAO y clases DTO.

• BO (Business Object): son clases que se encargan de armar toda la lógica del negocio y así mismo separarla de las clases de acceso a datos, vista y modelo.

• DAO (Data Access Object): son las clases que se encargan del acceso a los datos, como consultas a Bases de Datos, ejecución de Stored Procedures.

• DTO (Data Transfer Object): son clases beans simples que su función primordial es servir de contenedor de datos para ser transferidos a otros lados de la aplicación.

Controlador: la capa de Controlador tiene la función de manipular el flujo de la aplicación por medio de clases que extienden de Action o DispatchAction, en estos ejemplos usaremos la clase DispatchAction ya que es mucho mas funcional al distribuir el flujo de la aplicación por medio de un despachador de peticiones.

Vista: la capa de Vista es la capa de presentación al usuario final de la aplicación, en esta capa se encuentran los JSP que mostraran la salida de los datos al usuario.
  #63 (permalink)  
Antiguo 14/05/2008, 10:11
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 8 años, 8 meses
Puntos: 2
Re: FAQ's de Java

Tema: NET y MVC
Pregunta: Clases DTO?
Respuesta: Como se vio anterior mente. Una clase DTO sirve para almacenar temporalmente datos y transferirlos a otras partes de la aplicación.

Este es un ejemplo de clase DTO.
Código PHP:
public class DireccionDTO {
  private 
String postalCode;
  private 
String ciudad;
  private 
String municipio;
  
public 
DireccionDTO(){}
  
  public 
String getPostalCode(){
   return 
postalCode;    
  }
  
  public 
void setPostalCode(String postalCode){
   
this.postalCode=postalCode;    
  }
  
  public 
String getCiudad(){
    return 
ciudad;    
  }
  
  public 
void setCiudad(String ciudad){
    
this.ciudad=ciudad;    
  }

public 
String getMunicipio(){
    return 
municipio;    
  }
  
  public 
void setMunicipio(String municipio){
    
this.municipio=municipio;    
  }

Como se puede observar no es mas que una simple clase bean pero la terminología es clase DTO.
  #64 (permalink)  
Antiguo 14/05/2008, 10:29
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 8 años, 8 meses
Puntos: 2
Re: FAQ's de Java

Tema: NET y MVC
Pregunta: Clases DAO?
Respuesta: Como se vio anterior mente. Una clase DAO sirve para comunicarse con la BD.

Clases DAO son de acceso a bases de datos, este es un ejemplo de clase DAO.

Código PHP:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.lino.prueba.utils.*;
import com.lino.prueba.dto.*;

public class 
DireccionDAO {

    public 
DireccionDAO(){}
    
    public 
DireccionDTO getDireccion(String postalCodethrows Exception{
        
Connection con=null;
        
PreparedStatement ps=null;
        
ResultSet rs=null;
                   
DireccionDTO direccionDTO=null;
        
        
String query="select CodigoPostal from Direcciones where CodigoPostal=?";
        
        try{
          
con=ConnectionFactory.getConnection();
          
ps=con.prepareStatement(query);
          
ps.setString(1,postalCode);
          
rs=ps.executeQuery();
          if(
rs.next()){
                  
direccionDTO=new DireccionDTO();
              
direccionDTO.setPostalCode(postalCode);
              
direccionDTO.setCuidad(rs.getString("cuidad"));
              
direccionDTO.setMunicipio(rs.getString("municipio"));
          }
        }catch(
Exception e){
          throw new 
Exception(e.getMessage());
        }
finally{
          if(
rs!=null){
               
rs.close();
          }if(
ps!=null){
              
ps.close();
          }
          
ConnectionFactory.closeConnection(con);
        }
        return 
direccionDTO;
    } 
Lo que hace esta clase es una consulta a la base de datos en el comando ps.setString(1,postalCode); se sustituye el signo ? por el contenido del string lo que hace que la consulta sea portable independientemente del DBMS. Para la implementación de la clase ConnectionFactory vean la página anterior en la pregunta de Acceso a datos con un jndi. Esta consulta trae un registro el cual se almacena en un objeto DTO y se transfiere.

Para preparar la consulta.
Código PHP:
          con=ConnectionFactory.getConnection();
          
ps=con.prepareStatement(query);
          
ps.setString(1,postalCode);
          
rs=ps.executeQuery(); 
Es aquí donde se llama a la clase estática y a su método getConnection() ( ConnectionFactory.getConnection), si el lector ha notado en la sentencia sql almacenada en el String query hay una parte así CodigoPostal=? Esto con el fin de establecer ese parámetro como un String, int o con algún otro dato esto se hace con la instrucción ps.setString(1,postalCode);

La sentencia
Código PHP:
if(rs.next()){
      
direccionDTO=new DireccionDTO();
    
direccionDTO.setPostalCode(postalCode);
    
direccionDTO.setCuidad(rs.getString("cuidad"));
    
direccionDTO.setMunicipio(rs.getString("municipio"));

Valida si existe esa información, el rs (ResultSet) tiene un metodo llamado next(), si al realizar una consulta esta devuelve por lo menos un registrio rs.next() encontrará una respuesta, en caso contrario no producira nada, como esta consulta es devuelve un solo elemento basta con ejecutar rs.next() una vez, si entra en el if significa que la consulta fue exitosa.

En caso de una excepción se tira para arriba, hay que recordar siempre en conexiones a bases de datos cerrar las conexiones que se habrán, para eso usamos la sentencia finally y dentro de ella cerramos la conexión.
  #65 (permalink)  
Antiguo 14/05/2008, 11:14
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 8 años, 8 meses
Puntos: 2
Re: FAQ's de Java

B]Tema:[/B] NET y MVC
Pregunta: Clases BO?
Respuesta: Como se vio anteriormente. Una clase BO sirve para realizar la logica del negocio y no incluir la logica en un DAO o en un DTO.

Esta clase es en la que se desarrolla toda la lógica del negocio. En este caso no se realiza mucha lógica, pero es en esta clase donde se debe desarrollar la lógica para después enviar los resultados al Action que solo despachará el resultado a la vista.
Código PHP:
import com.lino.prueba.dao.*;
import com.lino.prueba.dto.*;

public class 
DireccionBO {
   
DireccionDAO direccionDAO=new DireccionDAO();
   
   public 
DireccionDTO getDireccion(String postalcode)throws Exception{
       
DireccionDTO direccionDTO=new DireccionDTO();
       
direccionDTO=direccionDAO.getDireccion (postalcode);
       
       if(
direccionDTO.getCiudad()==null){
          
direccionDTO=null;     
       }
       else if(
direccionDTO.getCiudad().equals(“”)){
           
direccionDTO=null;     
        }
        return 
direccionDTO;     
      }

Esta clase consta pasa el control a la clase DAO la cual valida contra la base de datos el código postal y determina la dirección, en el caso de ser valido devuelve un objeto DireccionDTO sino genera un Exception, en caso correcto manda el control al Action que lo llama.

Para la programación de una ActionForm y un DispatchAction pondré los faqs mañana.

Saludos.
  #66 (permalink)  
Antiguo 14/05/2008, 16:28
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 8 años, 8 meses
Puntos: 2
Re: FAQ's de Java

Tema: NET y MVC
Pregunta: Paquetes?
Respuesta:
Como se han podido dar cuenta en las clases anteriores he creado los paquetes com.lino.prueba.dao, com.lino.prueba.dto y com.lino.prueba.bo estos paquetes son los que contendrán las clases creadas, pos si alguien no sabe que es un paquete. Un paquete es un directorio dentro de la aplicación y cuando una clase pertenece a un paquete se agrega la palabra package al principio de la clase con el paquete al que corresponden. Por ejemplo las tres clases que ya creamos tienen que estar dentro de un paquete por ejemplo la clase DireccionDTO debe estar dentro del paquete com.lino.prueba.dto y al principio de la clase se debe poner la instrucción package com.lino.prueba.dto;

Así la clase DTO quedaría al principio algo así.

Código PHP:
package com.lino.prueba.dto;

public class 
DireccionDTO 
  private 
String postalCode
  private 
String ciudad
  private 
String municipio
Pero para que son los paquetes, bueno los paquetes son necesarios para administrar las clases, a veces no son necesarios es decir todas las clases podrían estar en el paquete por omisión pero en ocasiones al separar las cosas es mejor hacerlo generando paquetes.

Este tutorial trata de darle a entender al usuario como crear los paquetes que posiblemente pueda necesitar en sus aplicaciones.

Formas de generar paquetes.

1.- por fuera de la aplicación crea directorios y en tu aplicación importa los paquetes dependiendo de que IDE uses en eclipse por ejemplo basta con meter estos directorios dentro de la carpeta JavaSources y darle un refresh a la aplicación desde el eclipse.

2.- al momento de generar la clase crea el paquete, nuevamente en el eclipse al crear la clase hay un cuadro de texto que te permite crear el paquete donde estará dicha clase.

PD: para las clases DAO, DTO y BO de prueba genera paquetes y agrega la linea package con el paquete que le corresponda al principio de cada clase como se muestra aquí con la clase DTO.
  #67 (permalink)  
Antiguo 14/05/2008, 16:30
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 8 años, 8 meses
Puntos: 2
Re: FAQ's de Java

Tema: NET y MVC
Pregunta: clase ActionForm?
Respuesta:

Continuando con los mini tutos, este ejercicio consiste en realizar un ActionForm de prueba que implemente la dinámica de las clases anteriores.


DireccionForm.java

Esta clase extiende de ActionForm y la mayoría de sus metodos son get y set de sus atributos, para el caso de los tipos boléanos en lugar de get se usa el termino is, también contiene un método validate y un método reset los cuales se pueden sobre escribir para realizar validaciones a gusto del usuario.

Código PHP:
import org.apache.struts.action.ActionForm;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import com.lino.prueba.dto.*;

public class 
DireccionForm extends ActionForm{
    private 
String postalCode=null;
    private 
DireccionDTO direccion=new DireccionDTO();
    
    public 
DireccionForm(){}
    
    public 
void setPostalCode(String postalCode){
      
this.postalCode=postalCode;    
    }
    
    public 
String getPostalCode(){
       return 
this.postalCode;     
    }
    
    public 
DireccionDTO getDireccion(){
       return 
this.direccion;    
    }
    
    public 
void setDireccion(DireccionDTO direccion){
        
this.direccion=direccion;
    }
    
    public 
ActionErrors validate(ActionMapping mappingHttpServletRequest request) {
        
ActionErrors errors = new ActionErrors();
        if ((
postalCode == null) || (postalCode.length() < 1))
            
errors.add("postalcode1", new ActionError("error.postalcode.required"));
        return 
errors;
    }            
    
    public 
void reset(ActionMapping actionMapping,    HttpServletRequest Request) {
           
postalCode "";
    }
    

Este form tiene dos variables, un tipo String llamado postalCode y un tipo compuesto llamado direccion, algo que es importante definir en las reglas de java es que los nombres de variables siempre deben comenzar con minúscula en el caso de que estas variables contengan un método get y set, esto dado que el compilador no hallará estos métodos si las variables comienzan con mayúscula.

Una clase form debe tener para cada atributo (variable) que se presentara en un <html:form> un método get y set, la clase form puede tener atributos que no se presenten en un <html:form> e incluso métodos que no sean get y set, tal como una clase tradicional. Un error frecuente al momento de cargar una clase form en un <html:form> es que no encuentre los metodos get y set de los atributos. Esto por que los métodos get y set no corresponden a las variables (atributos que se declaran). Por ejemplo si tenemos lo siguiente
Código PHP:
String nombre=null;

public 
void setNombres(String nombre){
   
this.nombre=nombre;

Este fragmento de código es erróneo por que a pesar de que este método set use la variable “nombre” el método se llama “setNombres” cuando debería llamarse “setNombre” otro caso común de error como ya se menciono es este.
Código PHP:
String Nombre=null;

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

En este caso la variable y el método parecen llamarse igual pero no es así, por regla si quieres tener un método set y get para un atributo debe comenzar con minúscula por eso cuando el compilador encuentra que estamos usando el atributo Nombre en el <html:form> marca que no existe método set o get, en todo caso lo mas correcto seria llamar el método así.
Código PHP:
String nombre=null;

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

Una vez que se ha entendido esto es mucho más fácil evitar errores de este tipo. La clase Form puede o no tener los métodos validate y reset, estos métodos son sobre escríbibles y en ellos se puede establecer condiciones para que los datos lleguen de forma optima al ActionServlet, si el lector observa en este ejemplo de clase Form el método validate solamente comprueba de que el código postal no sea nulo o menor de 1 y el método reset establece a nulo la variable postalCode.

Los ActionErrors y ActionMessages son instrucciones que a final de cuentas se toman como mensajes que pueden ser visualizados en las paginas JSP esto mas adelante se verá un poco mas a profundidad, estos mensajes puede ser manipulados por el usuario o descritos en un archivo ApplicationResources.properties, este archivo no solo se ocupa para esto, pero eso también se verá mas adelante.

Esta clase se debe crear dentro del paquete com.lino.prueba.form
  #68 (permalink)  
Antiguo 14/05/2008, 16:50
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 8 años, 8 meses
Puntos: 2
Re: FAQ's de Java

Tema: NET y MVC
Pregunta: clase Action?
Respuesta:

Esta clase extiende de Action o en el caso de un dispatch DispatchAction, pero ¿Por qué un DispatchAction y no un Action? Cuando en una aplicación se necesita ejecutar un solo metodo para el flujo de información se puede usar un Action tradicional y editar su método perform, pero que ocurre cuando con un mismo formulario se desea realizar diferentes procesos, pues lo óptimo es crear diferentes métodos y que dependiendo el caso se utilice un método o el otro.

En este caso se utiliza un DispatchAction a pesar de que solo se use un método, por que lo que se pretende es que el usuario se familiarice con el uso del DispatchAction.

Código PHP:
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*; 
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.action.*;
import com.lino.prueba.form.*;
import com.lino.prueba.bo.*;
import com.lino.prueba.dto.*;

public class 
DireccionAction extends DispatchAction{
   public 
ActionForward doConsulta(ActionMapping mappingActionForm form
                                         
HttpServletRequest requestHttpServletResponse response
                                         
throws IOExceptionServletException{
       
     
String target="results";
     
String postalcode="";
   
     
DireccionForm direccionForm=(DireccionForm)form;
     
     
ActionForward fwd null;
     
ActionErrors errors = new ActionErrors();
     
ActionMessages messages = new ActionMessages();
     
DireccionBO direccionBO = new DireccionBO();
     
     try{
            
postalcodedireccionForm.getPostalCode();
            
DireccionDTO direccionDTO=
                                        
direccionBO.getDireccion(postalcode);
            
direccionForm.setDireccion(direccionDTO);
            
fwd=mapping.findForward(target);
       } 
     }catch(
Exception e){
          
target="Error"
       
fwd=errorMessage(mapping,fwd,messages,request,target,"exception",
                                         
"error.exception.exception1");
     }  
     return 
fwd;
   } 
El paquete import org.apache.struts.action.*; contiene las clases ActionForm, ActionMapping, ActionForward, ActionErrors, ActionMessages, ActionMessage que se utilizan en esta clase.

En el método doConsulta se realiza todo el proceso, este método es del tipo ActionForward, lo que significa que después de realizar el proceso dirigirá el flujo de la aplicación a otro sitio, iniciando declaramos dos variables que son postalcode y target, postalcode guardara el código portal y target nos dirigirá a algún sitio si es correcto el proceso a “result” o si es incorrecto a “Error” y en caso de una validación incorrecta nos regresara el JSP principal con la palabra “main”.

Se hace un Cast del form que recibe el método doConsulta sobre el ActionForm direccionForm.
Código PHP:
DireccionForm direccionForm = (DireccionForm)form
Esto con la finalidad de obtener los datos que se almacenaron en el form.
Código PHP:
ActionForward fwd null;
ActionErrors errors = new ActionErrors();
ActionMessages messages = new ActionMessages();
DireccionBO direccionBO = new DireccionBO(); 
Se crea el ActionForward que dirigirá el flujo de la información, un ActionErrors junto con un ActionMessages para controlar mensajes de error o alerta y una instancia a la clase DireccionBO que es la clase del manejo de la lógica (business Object) de la que se habló anteriormente.
Código PHP:
     try{
            
postalcodedireccionForm.getPostalCode();
            
DireccionDTO direccionDTO=
                                        
direccionBO.getDireccion(postalcode);
            
direccionForm.setDireccion(direccionDTO);
            
fwd=mapping.findForward(target);
       } 
     } 
Dentro de un try se pregunta si el código postal recibido es valido, de no ser así se genera el error correspondiente a ese suceso, para ellos se hace una llamada al método errorMessage, de los cuales los parámetros que cambiarán constantemente son NameMsg que en este caso lleva el nombre de “postalcode2” y msg que en este caso lleva “error.postalcode.invalid”, de esto se hablara mas adelante.

Si el código postal es correcto se genera un objeto de tipo DireccionDTO llamado direccionDTO, este objeto guarda una serie de datos que serán almacenados en el objeto direccion del ActionForm direccionForm para después desplegarlos en pantalla. Después de este proceso se genera un fwd=mapping.findForward(target); esta instrucción busca el valor de la variable target dentro del apartado <action-mapping><forward> dentro del struts-config.xml, para determinar a donde debe irse. Estas y otras cosas mas las expondré en la configuración de la aplicación.
Código PHP:
}catch(Exception e){
    
target="Error"
    
fwd=errorMessage(mapping,fwd,messages,request,target,"exception",
                                         
"error.exception.exception1");
}  
return 
fwd
En caso de una excepción, se manda a llamar el método errorMessage que devuelve un forward a la pagina de error. Por ultimo retorna el control al JSP que se deba visualizar.
Código PHP:
public ActionForward errorMessage(ActionMapping mapping,ActionForward fwd,
                                                              
ActionMessages messages,HttpServletRequest       
                                                              request
,String targetString nameMsgString msg){
      
ActionMessage message;
      
message = new ActionMessage(msg);
         
messages.add(nameMsg,message);
         
saveMessages(request,messages);
         
fwd=mapping.findForward(target);
         return 
fwd;
   }

Este método recibe el nombre del mensaje de error y el mensaje de error, con ello construye el error y lo almacena en el request de la aplicación.

Cuando se crea una aplicación Web, automáticamente se crea el directorio de resources, dentro de este se crea un archivo llamado ApplocationResources.properties en el cual se puede poner un contenido parecido a esto.
Código PHP:
# Optional header and footer for <errors/> tag.
#errors.header=<ul>
#errors.footer=</ul>
error.postalcode.required=Codigo Postal No esta
error
.postalcode.invalid=Codigo Postal Invalido
error
.exception.exception1=No se pudo obtener el requerimiento 
Como el lector puede apreciar del lado izquierdo del = esta el nombre del mensaje o de la constante y del lado derecho su valor. Cuando por ejemplo se ejecuta la instrucción

El metodo errorMessage busca el valor error.exception.exception1 y obtiene el valor No se pudo obtener el requerimiento.
  #69 (permalink)  
Antiguo 14/05/2008, 16:59
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 8 años, 8 meses
Puntos: 2
Re: FAQ's de Java

Tema: NET y MVC
Pregunta: configurando Struts?
Respuesta:

Con los paquetes creados se configura el struts-config.xml de esta forma.
Código PHP:
<struts-config>
    <!-- 
Data Sources -->
    <
data-sources>
    </
data-sources>

     <!-- 
Form Beans -->
    <
form-beans>
      <
form-bean name="DireccionForm"   type="com.lino.prueba.form.DireccionForm">
     </
form-bean>
    </
form-beans>

    <!-- Global 
Exceptions -->
        <global-
exceptions>
        </global-
exceptions>

    <!-- Global 
Forwards -->
        <global-
forwards>
      <
forward name="Error" path="/Error.jsp"></forward>
        </global-
forwards>

    <!-- 
Action Mappings -->
        <
action-mappings>
      <
action path="/consulta" type="com.lino.prueba.action.DireccionAction" name="DireccionForm" scope="request" validate="true" input="/index.jsp">
        <
forward name="main" path="/index.jsp"></forward>
        <
forward name="results" path="/resultados.jsp"></forward>
      </
action>
        </
action-mappings>

    <!-- 
Message Resources -->
    <
message-resources parameter="com.lino.prueba.resources.ApplicationResources"/>
</
struts-config
Con esta configuración struts puede mapear el form y el ActionServlet a donde se ha de dirigir el flujo de la aplicación.

Si se es un poco observador te daras cuenta de que el mismo nombre de la etiqueta name en la seccion <form-bean> se usa para la seccion <action-mapping> esto por que se esta mapeando el formulario con el action es decir se están relacionando el atributo type si es diferente por que en uno apunta todo el paquete del Form y en el otro todo el paquete del Action. El applicationResources del que hablamos se declara aquí en message-resources

Y eso del target usado en el action para redireccionarnos a los jsp se declaran en los forward llamados Error, main y results cada uno apuntando a un JSP.
  #70 (permalink)  
Antiguo 14/05/2008, 17:06
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 8 años, 8 meses
Puntos: 2
Re: FAQ's de Java

Por último para acabar con todo este relajo jeje

les pongo dos JSP uno que es el index.jsp y otro que es el resultados.jsp

si despues de esto tienen dudas que yo creo que si pues mandenme un mail y les envio un .doc de unas aplicaciones que hice desde 0 donde espongo desde configurar tu eclipce para programar hasta como ejectuar Struts con tomcat y mysql ademas de que las aplicaciones son 100% probadas y funcionales.

Código PHP:
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ 
taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ 
taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

<
html:html>
  <
HEAD>
    <%@ 
page language="java" contentType="text/html; charset=ISO-8859-1"
      
pageEncoding="ISO-8859-1"%>
    <
META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <
META name="GENERATOR" content="IBM Software Development Platform">
    <
META http-equiv="Content-Style-Type" content="text/css">
     <
TITLE>Index</TITLE>
  </
HEAD>
   
  <
BODY>
  <
html:form action="/consulta" name="DireccionForm" type="com.lino.prueba.form.DireccionForm">
<
html:hidden property="dispatch" value=" doConsulta"/>

      <
table width="80%" border="0">
          <
tr>
            <
td>Postal Code</td>
            <
td><html:text property="postalCode" maxlength="5"/></td>
            <
td>
              <
html:messages message="true" id="postalcode2">
                   <
bean:write name="postalcode2" />
              </
html:messages>  
              <
html:errors property="postalcode1" /></td>
          </
tr>
              
          <
tr>
            <
td><html:submit>Aceptar</html:submit></td>
          </
tr>
       </
table>   
    </
html:form>  
   </
BODY>
</
html:html
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ 
taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ 
taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

<
html:html>
    <
HEAD>
        <%@ 
page language="java" contentType="text/html; charset=ISO-8859-1"    pageEncoding="ISO-8859-1"%>
        <
META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <
META name="GENERATOR" content="IBM Software Development Platform">
        <
META http-equiv="Content-Style-Type" content="text/css">
        <
TITLE></TITLE>
    </
HEAD>

    <
BODY>
      <
bean:define id="ConFrec" name="DireccionForm"/>
      <
table width="80%" border="1"  cellpadding="2" cellspacing="2" class="estilotabla">
     <
tr>
                  <
td class="estilocelda">Codigo Postal</td>
              <
td class="estilocelda">Ciudad</td>
              <
td class="estilocelda">Municipio</td>
          </
tr>
                  <
tr>
              <
td><bean:write name="ConFrec" property="postalCode"/></td>
              <
td><bean:write name="ConFrec" property="direccion.ciudad"/></td>
              <
td><bean:write name="ConFrec" property="direccion.municipio"/></td>
     </
tr>
          </
table>
          <
html:link page="/index.jsp">principal</html:link>
    </
BODY>
</
html:html
  #71 (permalink)  
Antiguo 27/10/2008, 15:27
 
Fecha de Ingreso: agosto-2008
Mensajes: 19
Antigüedad: 8 años, 5 meses
Puntos: 1
Tema: Fechas
Pregunta: Como obtener la fecha del sistema en varios formatos?
Respuesta: Este método permite obtener la fecha del sistema de acuerdo al modo que le pasemos como parámetro

Código PHP:
public String getFechaHora(int modo) {
      
/* 
        Tipo de Modo
      * 1- Hora  = 09:25:10
      * 2- Fecha = 20-08-2008 
      * 3- Todo  = 20-08-2008 a las 09:25:10
      * 4- Hora sin separacion = 092510
      * 5- Formato de trace = [20-08-2008][09:25:10]
      * 6- Fecha sin separación = 20080828
      */ 
      
try{   
            
Calendar calendario Calendar.getInstance();
            
String fechahoratodohora1tracefecha_ss;
            
String diamesfminfsec;
            
int year;   
            
int fhor;

            
dia ValidateNumber(calendario.get(Calendar.DAY_OF_MONTH));
            
mes ValidateNumber(calendario.get(Calendar.MONTH)+1);
            
year calendario.get(Calendar.YEAR);

            
fhor calendario.get(Calendar.HOUR_OF_DAY);
            
fmin ValidateNumber(calendario.get(Calendar.MINUTE));    
            
fsec ValidateNumber(calendario.get(Calendar.SECOND));        

            
horafhor +":"fmin +":"fsec;    
            
fechadia +"-"mes +"-"year;
            
todofecha +" a las "hora;
            
hora1 fhor +""fmin +""+fsec;
            
trace"[" fecha "][" hora "]";
            
fecha_ss year+""+mes+""+dia;

            switch(
modo){
                    case 
1:return hora;
                    case 
2:return fecha;
                    case 
3:return todo;
                    case 
4:return hora1
                    case 
5:return trace;
                    case 
6:return fecha_ss;
            } 
      }catch(
Exception ex){    
          
System.out.print("Error: " ex);
            }
      return 
"";
      } 
Adicionalmente usamos este método:

Código PHP:
public String ValidateNumber(int num){
        
String number;
            if(
num 10
                
number "0"+num;
            else
                
number ""+num;
        return 
number;
    } 
Ejemplo: Si la fecha es 10-5-2008, con este método será 10-05-2008, le agrega un cero a los números que son menores a 10, ya sea el día, mes, minuto, segundo.

Si ponemos:

Código PHP:
System.out.print("Fecha y hora del día: " getFechaHora(3)); 
Tendremos como resultado:
Fecha y hora del día: 27-10-2008 a las 09:25:10
  #72 (permalink)  
Antiguo 22/05/2009, 14:17
Avatar de Bellabys  
Fecha de Ingreso: abril-2009
Mensajes: 70
Antigüedad: 7 años, 9 meses
Puntos: 1
Respuesta: FAQ's de Java

Excelente material lino-kun, felicidades!!

Sólo tengo una duda...

Al final en la jsp de resultados, que pasa si la consulta trae más de un resultado que coincida con el código postal???

Por que he seguido tu ejemplo, adaptado a mi aplicación, pero mi consulta regresa más de una fila. Como le puedo hacer para mostrarlas???
  #73 (permalink)  
Antiguo 12/09/2009, 16:31
 
Fecha de Ingreso: septiembre-2009
Mensajes: 1
Antigüedad: 7 años, 4 meses
Puntos: 0
Respuesta: FAQ's de Java

Tema: Java Principiante
Pregunta: Hacer un programa que imprima los ocho primeros factoriales
Ayudenme es urgente

Última edición por alvarolhj6; 12/09/2009 a las 16:51 Razón: Necesito ayuda
  #74 (permalink)  
Antiguo 23/09/2009, 10:09
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 9 años, 2 meses
Puntos: 75
Respuesta: FAQ's de Java

Tema: Selector de fecha en java
Pregunta: ¿Como hacer un selector de fechas en java?
Respuesta:
Primero que todo debes tener hubicado un boton y un textfield, de awt o swing, como lo prefieras, en el siguiente ejemplo que voy a dar usar una clase principal llamada Frame1, y usare un campo de texto que he definido asi:

Código java:
Ver original
  1. public static JTextField jTextField2 = new JTextField();

luego de esto, tendre un boton que me ejecutara la clase del calendario para el selector de fechas. el codigo para que el boton ejecute el metodo es:

Código java:
Ver original
  1. jButton3.addActionListener(new ActionListener() {
  2.      public void actionPerformed(ActionEvent e) {
  3.          cambiaFecha();
  4.      }
  5. });

suponiendo, claro esta, que el boton se llamara jButton3.

ahora, el llama a un metodo llamado cambiaFecha() que sera el encargado de mostrar el selector del calendario:

calendario.java
Código java:
Ver original
  1. //para cambiar la fecha
  2.     private static  void cambiaFecha(){
  3.         calendario ca = new calendario("-");//el separador de la fecha.
  4.         ca.setTitle("CALENDARIO");
  5.         ca.pack();
  6.         ca.setVisible(true);
  7.     }

en esta parte observamos que tenemos una clase llamada calendario, en otro archivo, al cual estamos llamando, para ello debemos agregar el siguiente codigo:

[EDITO]lo pongo en los siguientes post por que es bastante largo. recuerden unir las tres partes en un solo archivo "calendario.java" en el orden en que lo puse.[EDITO]

observamos que hay una clase llamada elijeDia que ahi es donde trabajaremos regularmente si queremos hacer un cambio. como por ejemplo si no queremos que los meses menores a 10 tengan un 0 por delante, o si nuestra clase principal no se llama Frame1 y/o nuestro campo de texto que llevara la fecha no se llama jTextField2

Este codigo no es 100% creado por mi, lo saque de http://www.lawebdelprogramador.com
y le hice unas notables mejoras, para aquellas personas que quieran descargar el codigo y hacerle sus propias mejoras (solo es un calendario, no un selector de fechas) pues les dejo el link


saludos.
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175

Última edición por lobo_php; 23/09/2009 a las 10:19
  #75 (permalink)  
Antiguo 23/09/2009, 10:15
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 9 años, 2 meses
Puntos: 75
Respuesta: FAQ's de Java

esta es la primera parte del codigo de calendario.java (Recuerda al final unirlo todo)

Código java:
Ver original
  1. import java.io.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import java.util.*;
  5. import java.text.*;
  6. import javax.swing.JButton;
  7. import javax.swing.JFrame;
  8. import javax.swing.JLabel;
  9. import sun.java2d.Disposer;
  10.  
  11.  
  12. public class calendario extends JFrame implements ActionListener{
  13.     //variable
  14.     private static String auxiliad_dia,anox,mesx,diax,separador;
  15.     public static String fecha_elegida;
  16.     private static int dia_entero,xx,yy;
  17.     public static boolean cerrar;
  18.     //otras cosas
  19.     static String[] ARRMES = {"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};
  20.     static String[] ARRDIASSEMANA = {"Dom","Lun","Mar","Mie","Jue","Vie","Sab"};
  21.         static Calendar currentDate;
  22.     static JLabel meslabel;
  23.  
  24.     private void cerrarMetodo() {
  25.         calendario.this.dispose();
  26.     }
  27.     JButton anomenos;
  28.     JButton mesmenos;
  29.     JButton mesmas;
  30.     JButton anomas;
  31.     JButton auxponer;
  32.     JLabel label_2;
  33.     JLabel label_3;
  34.     JLabel label_4;
  35.     JLabel label_5;
  36.     JLabel label_6;
  37.     JLabel label_7;
  38.     JLabel label_8;
  39.     int MesAnterior;
  40.     int MesSiguiente;
  41.     int AnoAnterior;
  42.     int AnoSiguiente;
  43.     int AnoAnteriorAno;
  44.     int AnoSiguienteAno;
  45.     int a;
  46.     static int mes;
  47.  
  48.         //botones de dia
  49.         private static JButton dia1;
  50.         private static JButton dia2;
  51.         private static JButton dia3;
  52.         private static JButton dia4;
  53.         private static JButton dia5;
  54.         private static JButton dia6;
  55.         private static JButton dia7;
  56.         private static JButton dia8;
  57.         private static JButton dia9;
  58.         private static JButton dia10;
  59.         private static JButton dia11;
  60.         private static JButton dia12;
  61.         private static JButton dia13;
  62.         private static JButton dia14;
  63.         private static JButton dia15;
  64.         private static JButton dia16;
  65.         private static JButton dia17;
  66.         private static JButton dia18;
  67.         private static JButton dia19;
  68.         private static JButton dia20;
  69.         private static JButton dia21;
  70.         private static JButton dia22;
  71.         private static JButton dia23;
  72.         private static JButton dia24;
  73.         private static JButton dia25;
  74.         private static JButton dia26;
  75.         private static JButton dia27;
  76.         private static JButton dia28;
  77.         private static JButton dia29;
  78.         private static JButton dia30;
  79.         private static JButton dia31;
  80.  
  81.  
  82.     public calendario(String separador_aux) {
  83.  
  84.          cerrar=false;
  85.          separador = separador_aux;
  86.          //botones
  87.          dia1 = new JButton("01");
  88.          dia2 = new JButton("02");
  89.          dia3 = new JButton("03");
  90.          dia4 = new JButton("04");
  91.          dia5 = new JButton("05");
  92.          dia6 = new JButton("06");
  93.          dia7 = new JButton("07");
  94.          dia8 = new JButton("08");
  95.          dia9 = new JButton("09");
  96.          dia10 = new JButton("10");
  97.          dia11 = new JButton("11");
  98.          dia12 = new JButton("12");
  99.          dia13 = new JButton("13");
  100.          dia14 = new JButton("14");
  101.          dia15 = new JButton("15");
  102.          dia16 = new JButton("16");
  103.          dia17 = new JButton("17");
  104.          dia18 = new JButton("18");
  105.          dia19 = new JButton("19");
  106.          dia20 = new JButton("20");
  107.          dia21 = new JButton("21");
  108.          dia22 = new JButton("22");
  109.          dia23 = new JButton("23");
  110.          dia24 = new JButton("24");
  111.          dia25 = new JButton("25");
  112.          dia26 = new JButton("26");
  113.          dia27 = new JButton("27");
  114.          dia28 = new JButton("28");
  115.          dia29 = new JButton("29");
  116.          dia30 = new JButton("30");
  117.          dia31 = new JButton("31");
  118.          //eventos de los botones
  119.          dia1.addActionListener(new ActionListener() {
  120.             public void actionPerformed(ActionEvent e) {
  121.                 elijeDia("01");
  122.             }
  123.          });
  124.          dia2.addActionListener(new ActionListener() {
  125.             public void actionPerformed(ActionEvent e) {
  126.                 elijeDia("02");
  127.             }
  128.          });
  129.          dia3.addActionListener(new ActionListener() {
  130.             public void actionPerformed(ActionEvent e) {
  131.                 elijeDia("03");
  132.             }
  133.          });
  134.          dia4.addActionListener(new ActionListener() {
  135.             public void actionPerformed(ActionEvent e) {
  136.                 elijeDia("04");
  137.             }
  138.          });
  139.          dia5.addActionListener(new ActionListener() {
  140.             public void actionPerformed(ActionEvent e) {
  141.                 elijeDia("05");
  142.             }
  143.          });
  144.          dia6.addActionListener(new ActionListener() {
  145.             public void actionPerformed(ActionEvent e) {
  146.                 elijeDia("06");
  147.             }
  148.          });
  149.          dia7.addActionListener(new ActionListener() {
  150.             public void actionPerformed(ActionEvent e) {
  151.                 elijeDia("07");
  152.             }
  153.          });
  154.          dia8.addActionListener(new ActionListener() {
  155.             public void actionPerformed(ActionEvent e) {
  156.                 elijeDia("08");
  157.             }
  158.          });
  159.          dia9.addActionListener(new ActionListener() {
  160.             public void actionPerformed(ActionEvent e) {
  161.                 elijeDia("09");
  162.             }
  163.          });
  164.          dia10.addActionListener(new ActionListener() {
  165.             public void actionPerformed(ActionEvent e) {
  166.                 elijeDia("10");
  167.             }
  168.          });
  169.          dia11.addActionListener(new ActionListener() {
  170.             public void actionPerformed(ActionEvent e) {
  171.                 elijeDia("11");
  172.             }
  173.          });
  174.          dia12.addActionListener(new ActionListener() {
  175.             public void actionPerformed(ActionEvent e) {
  176.                 elijeDia("12");
  177.             }
  178.          });
  179.          dia13.addActionListener(new ActionListener() {
  180.             public void actionPerformed(ActionEvent e) {
  181.                 elijeDia("13");
  182.             }
  183.          });
  184.          dia14.addActionListener(new ActionListener() {
  185.             public void actionPerformed(ActionEvent e) {
  186.                 elijeDia("14");
  187.             }
  188.          });
  189.          dia15.addActionListener(new ActionListener() {
  190.             public void actionPerformed(ActionEvent e) {
  191.                 elijeDia("15");
  192.             }
  193.          });
  194.          dia16.addActionListener(new ActionListener() {
  195.             public void actionPerformed(ActionEvent e) {
  196.                 elijeDia("16");
  197.             }
  198.          });
  199.          dia17.addActionListener(new ActionListener() {
  200.             public void actionPerformed(ActionEvent e) {
  201.                 elijeDia("17");
  202.             }
  203.          });
  204.          dia18.addActionListener(new ActionListener() {
  205.             public void actionPerformed(ActionEvent e) {
  206.                 elijeDia("18");
  207.             }
  208.          });
  209.          dia19.addActionListener(new ActionListener() {
  210.             public void actionPerformed(ActionEvent e) {
  211.                 elijeDia("19");
  212.             }
  213.          });
  214.          dia20.addActionListener(new ActionListener() {
  215.             public void actionPerformed(ActionEvent e) {
  216.                 elijeDia("20");
  217.             }
  218.          });
  219.          dia21.addActionListener(new ActionListener() {
  220.             public void actionPerformed(ActionEvent e) {
  221.                 elijeDia("21");
  222.             }
  223.          });
  224.          dia22.addActionListener(new ActionListener() {
  225.             public void actionPerformed(ActionEvent e) {
  226.                 elijeDia("22");
  227.             }
  228.          });
  229.          dia23.addActionListener(new ActionListener() {
  230.             public void actionPerformed(ActionEvent e) {
  231.                 elijeDia("23");
  232.             }
  233.          });
  234.          dia24.addActionListener(new ActionListener() {
  235.             public void actionPerformed(ActionEvent e) {
  236.                 elijeDia("24");
  237.             }
  238.          });
  239.          dia25.addActionListener(new ActionListener() {
  240.             public void actionPerformed(ActionEvent e) {
  241.                 elijeDia("25");
  242.             }
  243.          });
  244.          dia26.addActionListener(new ActionListener() {
  245.             public void actionPerformed(ActionEvent e) {
  246.                 elijeDia("26");
  247.             }
  248.          });
  249.          dia27.addActionListener(new ActionListener() {
  250.             public void actionPerformed(ActionEvent e) {
  251.                 elijeDia("27");
  252.             }
  253.          });
  254.          dia28.addActionListener(new ActionListener() {
  255.             public void actionPerformed(ActionEvent e) {
  256.                 elijeDia("28");
  257.             }
  258.          });
  259.          dia29.addActionListener(new ActionListener() {
  260.             public void actionPerformed(ActionEvent e) {
  261.                 elijeDia("29");
  262.             }
  263.          });
  264.          dia30.addActionListener(new ActionListener() {
  265.             public void actionPerformed(ActionEvent e) {
  266.                 elijeDia("30");
  267.             }
  268.          });
  269.          dia31.addActionListener(new ActionListener() {
  270.             public void actionPerformed(ActionEvent e) {
  271.                 elijeDia("31");
  272.             }
  273.          });
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #76 (permalink)  
Antiguo 23/09/2009, 10:17
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 9 años, 2 meses
Puntos: 75
Respuesta: FAQ's de Java

Segunda parte:

Código java:
Ver original
  1. //calendario
  2.        
  3.         calendarioLayout customLayout = new calendarioLayout();
  4.         currentDate = Calendar.getInstance();
  5.         setFont(new Font("Helvetica", Font.PLAIN, 12));
  6.         setLayout(customLayout);
  7.  
  8.         anomenos = new JButton("<<");
  9.         add(anomenos);
  10.         anomenos.addActionListener(this);
  11.  
  12.         mesmenos = new JButton("<");
  13.         add(mesmenos);
  14.         mesmenos.addActionListener(this);
  15.  
  16.         meslabel = new JLabel("");
  17.         meslabel.setFont(new Font("Dialog", 1, 10));
  18.         add(meslabel);
  19.  
  20.         mesmas = new JButton(">");
  21.         add(mesmas);
  22.         mesmas.addActionListener(this);
  23.  
  24.         anomas = new JButton(">>");
  25.         add(anomas);
  26.         anomas.addActionListener(this);
  27.  
  28.         label_2 = new JLabel("Lun");
  29.         add(label_2);
  30.  
  31.         label_3 = new JLabel("Mar");
  32.         add(label_3);
  33.  
  34.         label_4 = new JLabel("Mie");
  35.         add(label_4);
  36.  
  37.         label_5 = new JLabel("Jue");
  38.         add(label_5);
  39.  
  40.         label_6 = new JLabel("Vie");
  41.         add(label_6);
  42.  
  43.         label_7 = new JLabel("Dom");
  44.         add(label_7);
  45.  
  46.         label_8 = new JLabel("Sab");
  47.         add(label_8);
  48.  
  49.         //entra a la clase maldita
  50.         mostrar_calendario();
  51.  
  52.         addWindowListener(new WindowAdapter() {
  53.             public void windowClosing(WindowEvent e) {
  54.  
  55.                // System.exit(0);
  56.             }
  57.         });
  58.     }
  59.  
  60.     //metodo que ejecuta el cambiar de fecha
  61.     private void elijeDia(String dia){
  62.         diax=dia;
  63.         mesx = String.valueOf(currentDate.get(currentDate.MONTH));
  64.         anox = String.valueOf(currentDate.get(currentDate.YEAR));
  65.         int aux_mes = Integer.parseInt(mesx);
  66.         aux_mes += 1;
  67.         mesx = String.valueOf(aux_mes);
  68.         if(aux_mes<10){
  69.             mesx = "0"+mesx;
  70.         }
  71.         fecha_elegida=anox+separador+mesx+separador+diax;
  72.         //Aca hubica la fecha seleccionada en el cuadro de texto.
  73.         Frame1.jTextField2.setText(fecha_elegida);
  74.         //cerramos esta clase
  75.         cerrarMetodo();
  76.     }
  77.  
  78.     public static void calendar(){
  79.  
  80.     }
  81.  
  82.     public void mostrar_calendario()
  83.     {
  84.             String aux_dia = "";
  85.         int b=0;
  86.         int c=1;
  87.         int tmp;
  88.         int x = 50;
  89.         int y = 130;
  90.         int dia = currentDate.get(currentDate.DATE);
  91.         mes = currentDate.get(currentDate.MONTH);
  92.         mes++;
  93.         int ano = currentDate.get(currentDate.YEAR);
  94.         int TotalDiasMes = currentDate.getActualMaximum(currentDate.DAY_OF_MONTH);
  95.         if (dia>currentDate.get(currentDate.DAY_OF_WEEK))
  96.                     tmp = dia-currentDate.get(currentDate.DAY_OF_WEEK);
  97.         else
  98.                     tmp = currentDate.get(currentDate.DAY_OF_WEEK)-dia;
  99.  
  100.         while (tmp>7){
  101.                     tmp=tmp-7;
  102.         }
  103.  
  104.         tmp=8-tmp;
  105.         int DiaSemanaEmpiezaMes = tmp;
  106.  
  107.         tmp = dia-currentDate.get(currentDate.DAY_OF_WEEK);
  108.  
  109.         while((tmp+7)<TotalDiasMes){
  110.             tmp=tmp+7;
  111.         }
  112.         tmp=TotalDiasMes-tmp;
  113.  
  114.         int DiaSemanaTerminaMes = tmp;
  115.  
  116.         mes = currentDate.get(currentDate.MONTH);
  117.         meslabel.setText(" "+ARRMES[mes]+" del "+currentDate.get(currentDate.YEAR));
  118.         int j=1;
  119.         int aux=0;
  120.         for(int i=0; i<TotalDiasMes+DiaSemanaEmpiezaMes-1 ; i++){
  121.                     aux++;
  122.                     if (aux==8){
  123.                         aux=1;
  124.                         x = 50;
  125.                         y = y + 25;
  126.                     }
  127.                     if (i<DiaSemanaEmpiezaMes-1){
  128.                         x = x + 56;
  129.                     }
  130.                     else{
  131.                         auxiliad_dia = String.valueOf(j);
  132.                         dia_entero = Integer.parseInt(auxiliad_dia);
  133.                         ponerDia(dia_entero,x,y);
  134.                         x = x + 56;
  135.                         j++;
  136.                     }
  137.         }
  138.  
  139.     }
  140.  
  141.     public void actionPerformed(ActionEvent ae) {
  142.         int dia;
  143.         int mes;
  144.         int ano;
  145.         if (ae.getSource() == anomenos){
  146.                     reiniciarBotones();
  147.                     mes = currentDate.get(currentDate.MONTH);
  148.                     dia = currentDate.get(currentDate.DATE);
  149.                     ano = currentDate.get(currentDate.YEAR);
  150.                     ano = ano - 1;
  151.                     currentDate.set(ano,mes,dia);
  152.                     anox = String.valueOf(ano);
  153.                     mostrar_calendario();
  154.         }
  155.         if (ae.getSource() == anomas){
  156.                     reiniciarBotones();
  157.                     mes = currentDate.get(currentDate.MONTH);
  158.                     dia = currentDate.get(currentDate.DATE);
  159.                     ano = currentDate.get(currentDate.YEAR);
  160.                     ano = ano + 1;
  161.                     currentDate.set(ano,mes,dia);
  162.                     anox = String.valueOf(ano);
  163.                     mostrar_calendario();
  164.         }
  165.         if (ae.getSource() == mesmenos){
  166.                     reiniciarBotones();
  167.                     mes = currentDate.get(currentDate.MONTH);
  168.                     dia = currentDate.get(currentDate.DATE);
  169.                     ano = currentDate.get(currentDate.YEAR);
  170.                     mes = mes - 1;
  171.                     currentDate.set(ano,mes,dia);
  172.                     mesx = String.valueOf(mes);
  173.                     mostrar_calendario();
  174.         }
  175.         if (ae.getSource() == mesmas){
  176.                     reiniciarBotones();
  177.                     mes = currentDate.get(currentDate.MONTH);
  178.                     dia = currentDate.get(currentDate.DATE);
  179.                     ano = currentDate.get(currentDate.YEAR);
  180.                     mes = mes + 1;
  181.                     currentDate.set(ano,mes,dia);
  182.                     mesx = String.valueOf(mes);
  183.                     mostrar_calendario();
  184.         }
  185.     }
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #77 (permalink)  
Antiguo 23/09/2009, 10:18
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 9 años, 2 meses
Puntos: 75
Respuesta: FAQ's de Java

Tercera parte: (recuerda unir las tres partes.

Código java:
Ver original
  1. private void ponerDia(int dia_entero, int x, int y) {
  2.         x=x-32;
  3.         y=y-30;
  4.         switch(dia_entero){
  5.             case 1:
  6.                 add(dia1);
  7.                 dia1.setBounds(x-10, y-30, 30, 25);
  8.                 dia1.setVisible(true);
  9.                 break;
  10.             case 2:
  11.                 add(dia2);
  12.                 dia2.setBounds(x-10, y-30, 30, 25);
  13.                 dia2.setVisible(true);
  14.                 break;
  15.             case 3:
  16.                 add(dia3);
  17.                 dia3.setBounds(x-10, y-30, 30, 25);
  18.                 dia3.setVisible(true);
  19.                 break;
  20.             case 4:
  21.                 add(dia4);
  22.                 dia4.setBounds(x-10, y-30, 30, 25);
  23.                 dia4.setVisible(true);
  24.                 break;
  25.             case 5:
  26.                 add(dia5);
  27.                 dia5.setBounds(x-10, y-30, 30, 25);
  28.                 dia5.setVisible(true);
  29.                 break;
  30.             case 6:
  31.                 add(dia6);
  32.                 dia6.setBounds(x-10, y-30, 30, 25);
  33.                 dia6.setVisible(true);
  34.                 break;
  35.             case 7:
  36.                 add(dia7);
  37.                 dia7.setBounds(x-10, y-30, 30, 25);
  38.                 dia7.setVisible(true);
  39.                 break;
  40.             case 8:
  41.                 add(dia8);
  42.                 dia8.setBounds(x-10, y-30, 30, 25);
  43.                 dia8.setVisible(true);
  44.                 break;
  45.             case 9:
  46.                 add(dia9);
  47.                 dia9.setBounds(x-10, y-30, 30, 25);
  48.                 dia9.setVisible(true);
  49.                 break;
  50.             case 10:
  51.                 add(dia10);
  52.                 dia10.setBounds(x-10, y-30, 30, 25);
  53.                 dia10.setVisible(true);
  54.                 break;
  55.             case 11:
  56.                 add(dia11);
  57.                 dia11.setBounds(x-10, y-30, 30, 25);
  58.                 dia11.setVisible(true);
  59.                 break;
  60.             case 12:
  61.                 add(dia12);
  62.                 dia12.setBounds(x-10, y-30, 30, 25);
  63.                 dia12.setVisible(true);
  64.             case 13:
  65.                 add(dia13);
  66.                 dia13.setBounds(x-10, y-30, 30, 25);
  67.                 dia13.setVisible(true);
  68.                 break;
  69.             case 14:
  70.                 add(dia14);
  71.                 dia14.setBounds(x-10, y-30, 30, 25);
  72.                 dia14.setVisible(true);
  73.                 break;
  74.             case 15:
  75.                 add(dia15);
  76.                 dia15.setBounds(x-10, y-30, 30, 25);
  77.                 dia15.setVisible(true);
  78.                 break;
  79.             case 16:
  80.                 add(dia16);
  81.                 dia16.setBounds(x-10, y-30, 30, 25);
  82.                 dia16.setVisible(true);
  83.                 break;
  84.             case 17:
  85.                 add(dia17);
  86.                 dia17.setBounds(x-10, y-30, 30, 25);
  87.                 dia17.setVisible(true);
  88.                 break;
  89.             case 18:
  90.                 add(dia18);
  91.                 dia18.setBounds(x-10, y-30, 30, 25);
  92.                 dia18.setVisible(true);
  93.                 break;
  94.             case 19:
  95.                 add(dia19);
  96.                 dia19.setBounds(x-10, y-30, 30, 25);
  97.                 dia19.setVisible(true);
  98.                 break;
  99.             case 20:
  100.                 add(dia20);
  101.                 dia20.setBounds(x-10, y-30, 30, 25);
  102.                 dia20.setVisible(true);
  103.                 break;
  104.             case 21:
  105.                 add(dia21);
  106.                 dia21.setBounds(x-10, y-30, 30, 25);
  107.                 dia21.setVisible(true);
  108.                 break;
  109.             case 22:
  110.                 add(dia22);
  111.                 dia22.setBounds(x-10, y-30, 30, 25);
  112.                 dia22.setVisible(true);
  113.                 break;
  114.             case 23:
  115.                 add(dia23);
  116.                 dia23.setBounds(x-10, y-30, 30, 25);
  117.                 dia23.setVisible(true);
  118.                 break;
  119.             case 24:
  120.                 add(dia24);
  121.                 dia24.setBounds(x-10, y-30, 30, 25);
  122.                 dia24.setVisible(true);
  123.                 break;
  124.             case 25:
  125.                 add(dia25);
  126.                 dia25.setBounds(x-10, y-30, 30, 25);
  127.                 dia25.setVisible(true);
  128.                 break;
  129.             case 26:
  130.                 add(dia26);
  131.                 dia26.setBounds(x-10, y-30, 30, 25);
  132.                 dia26.setVisible(true);
  133.                 break;
  134.             case 27:
  135.                 add(dia27);
  136.                 dia27.setBounds(x-10, y-30, 30, 25);
  137.                 dia27.setVisible(true);
  138.                 break;
  139.             case 28:
  140.                 add(dia28);
  141.                 dia28.setBounds(x-10, y-30, 30, 25);
  142.                 dia28.setVisible(true);
  143.                 break;
  144.             case 29:
  145.                 add(dia29);
  146.                 dia29.setBounds(x-10, y-30, 30, 25);
  147.                 dia29.setVisible(true);
  148.                 break;
  149.             case 30:
  150.                 add(dia30);
  151.                 dia30.setBounds(x-10, y-30, 30, 25);
  152.                 dia30.setVisible(true);
  153.                 break;
  154.             case 31:
  155.                 add(dia31);
  156.                 dia31.setBounds(x-10, y-30, 30, 25);
  157.                 dia31.setVisible(true);
  158.                 break;
  159.         }
  160.     }
  161.  
  162.     private void reiniciarBotones() {
  163.         dia1.setVisible(false);
  164.         dia2.setVisible(false);
  165.         dia3.setVisible(false);
  166.         dia4.setVisible(false);
  167.         dia5.setVisible(false);
  168.         dia6.setVisible(false);
  169.         dia7.setVisible(false);
  170.         dia8.setVisible(false);
  171.         dia9.setVisible(false);
  172.         dia10.setVisible(false);
  173.         dia11.setVisible(false);
  174.         dia12.setVisible(false);
  175.         dia13.setVisible(false);
  176.         dia14.setVisible(false);
  177.         dia15.setVisible(false);
  178.         dia16.setVisible(false);
  179.         dia17.setVisible(false);
  180.         dia18.setVisible(false);
  181.         dia19.setVisible(false);
  182.         dia20.setVisible(false);
  183.         dia21.setVisible(false);
  184.         dia22.setVisible(false);
  185.         dia23.setVisible(false);
  186.         dia24.setVisible(false);
  187.         dia25.setVisible(false);
  188.         dia26.setVisible(false);
  189.         dia27.setVisible(false);
  190.         dia28.setVisible(false);
  191.         dia29.setVisible(false);
  192.         dia30.setVisible(false);
  193.         dia31.setVisible(false);
  194.     }
  195. }
  196. class calendarioLayout implements LayoutManager {
  197.  
  198.     public calendarioLayout() {
  199.     }
  200.  
  201.     public void addLayoutComponent(String name, Component comp) {
  202.     }
  203.  
  204.     public void removeLayoutComponent(Component comp) {
  205.     }
  206.  
  207.     public Dimension preferredLayoutSize(Container parent) {
  208.         Dimension dim = new Dimension(0, 0);
  209.  
  210.         Insets insets = parent.getInsets();
  211.         dim.width = 405 + insets.left + insets.right;
  212.         dim.height = 205 + insets.top + insets.bottom;
  213.  
  214.         return dim;
  215.     }
  216.  
  217.     public Dimension minimumLayoutSize(Container parent) {
  218.         Dimension dim = new Dimension(0, 0);
  219.         return dim;
  220.     }
  221.  
  222.     public void layoutContainer(Container parent) {
  223.         Insets insets = parent.getInsets();
  224.        
  225.         Component c;
  226.         c = parent.getComponent(0);
  227.         if (c.isVisible()) {c.setBounds(insets.left+10,insets.top+4,56,32);}
  228.         c = parent.getComponent(1);
  229.         if (c.isVisible()) {c.setBounds(insets.left+74,insets.top+4,56,32);}
  230.         c = parent.getComponent(2);
  231.         if (c.isVisible()) {c.setBounds(insets.left+138,insets.top+4,128,32);}
  232.         c = parent.getComponent(3);
  233.         if (c.isVisible()) {c.setBounds(insets.left+274,insets.top+4,56,32);}
  234.         c = parent.getComponent(4);
  235.         if (c.isVisible()) {c.setBounds(insets.left+338,insets.top+4,56,32);}
  236.         c = parent.getComponent(5);
  237.         if (c.isVisible()) {c.setBounds(insets.left+66,insets.top+44,48,24);}
  238.         c = parent.getComponent(6);
  239.         if (c.isVisible()) {c.setBounds(insets.left+122,insets.top+44,48,24);}
  240.         c = parent.getComponent(7);
  241.         if (c.isVisible()) {c.setBounds(insets.left+178,insets.top+44,48,24);}
  242.         c = parent.getComponent(8);
  243.         if (c.isVisible()) {c.setBounds(insets.left+234,insets.top+44,48,24);}
  244.         c = parent.getComponent(9);
  245.         if (c.isVisible()) {c.setBounds(insets.left+290,insets.top+44,48,24);}
  246.         c = parent.getComponent(10);
  247.         if (c.isVisible()) {c.setBounds(insets.left+10,insets.top+44,48,24);}
  248.         c = parent.getComponent(11);
  249.         if (c.isVisible()) {c.setBounds(insets.left+346,insets.top+44,48,24);}
  250.     }
  251. }
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #78 (permalink)  
Antiguo 26/12/2009, 17:34
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 13 años, 3 meses
Puntos: 51
Respuesta: FAQ's de Java

Si se me permite un comentario, en estos últimos trozos de código hay mucho trozo repetido innecesario. Ya que, por ejemplo, bastaria usar una variable generica diaX, asignarle el dia que toca (diaX = dia1 o dia2 y luego hacer una unica vez las oepraciones de add, setBounds, setVisible etc.).

Como norma general, si lo escribes dos veces exactamente igual cambiando solo una variable o así, no lo estás haciendo como toca y es más propenso a errores y difícil de mantener.

Como crítica constructiva.
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #79 (permalink)  
Antiguo 24/01/2010, 14:57
 
Fecha de Ingreso: julio-2009
Mensajes: 2
Antigüedad: 7 años, 6 meses
Puntos: 0
Respuesta: FAQ's de Java

Tema: java principiante
Pregunta: cuales serian los metodos o pasos para la consepcion de un simulador en java??
grasias...
  #80 (permalink)  
Antiguo 26/01/2010, 07:01
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 9 años, 2 meses
Puntos: 75
Respuesta: FAQ's de Java

Cita:
Iniciado por bless Ver Mensaje
Tema: java principiante
Pregunta: cuales serian los metodos o pasos para la consepcion de un simulador en java??
grasias...

Y la respuesta?
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #81 (permalink)  
Antiguo 24/02/2010, 10:01
 
Fecha de Ingreso: febrero-2010
Mensajes: 3
Antigüedad: 6 años, 10 meses
Puntos: 0
Ayuda: FAQ's de Java

Luego de bajar el J2RE e instalarlo ¿debo de hacer algo mas?
Gracias por su ayuda.

Acuariana2010
  #82 (permalink)  
Antiguo 26/03/2010, 08:06
 
Fecha de Ingreso: marzo-2010
Mensajes: 3
Antigüedad: 6 años, 9 meses
Puntos: 0
Respuesta: FAQ's de Java

Cita:
Iniciado por stock Ver Mensaje
Tema: Base de datos MySQL
Pregunta Como puedo conectarme a MySQL
Respuesta Necesitas tener el driver JDBC que es el que se utiliza para hacer conecciones y query's a nuestra base de datos MySQL , puedes bajarlo desde aqui: [url]http://www.mysql.com/products/connector/j/[/url]

Necesitas actualizar tu classpath, en el editor que estes usando o directamente desde la consola, una vez instalado correctamente, puedes usar este codigo para darte una idea.
Código:
import java.sql.*;

public class coneccionMySql
{
	static String bd = "myDataBase";
	static String login = "user";
	static String password = "mymegapassword";
	static String url = "jdbc:mysql://localhost/" + bd;
	
	
	public static void main(String[] args)throws Exception
	{
		Connection conn = null;
		try
		{
			//ESTABLECEMOS LA CONECCION
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			conn = DriverManager.getConnection(url,login,password);
			
			if (conn != null)
			{
				System.out.println("Conexión a base de datos " + url + " ... Ok");
				
				//HACEMOS UNA CONSULTA
				Statement stmt = conn.createStatement();
				ResultSet res  = stmt.executeQuery("SELECT * FROM carreras");
				
				while(res.next())
				{
					String Id  = res.getString("Id");
					String Carrera   = res.getString("Carrera");
					String Facultad= res.getString("Facultad");
					
					System.out.println(Id +" \t "+Carrera+" \t "+Facultad);
				}
				
				res.close();
				stmt.close();
				conn.close(); 
			}
		}
		catch(SQLException ex)
		{
			System.out.println("\n\nHubo un error : "+ex);
		}
		catch(ClassNotFoundException ex)
		{
			System.out.println("\n\nHubo otro error!!, no se encontro el driver, revisa tu ClassPath :(\n");
			System.out.println(ex);
		}
		
	}
}
  #83 (permalink)  
Antiguo 26/03/2010, 08:11
 
Fecha de Ingreso: marzo-2010
Mensajes: 3
Antigüedad: 6 años, 9 meses
Puntos: 0
Respuesta: FAQ's de Java

Hola! mas que una respuesta es una pregunta. Recién estoy incursionando en la programción con java y estoy tratando de hacer un programita que al menos abra una base de datos y me muestre su contenido, pero no logro que conecte ni siquiera. Estoy trabajano con netbeans 6.8 y la conexión a la base de datos la realice con jdbc según el netbeans la conexión esta realizado veo las tablas y su contenido, pero cuando ejecuto el programa dice que no puedo acceder a la base de datos!! el programita es similar al de tu ejemplo, pero sin mysql!! Ayuda!!!
gracias!
  #84 (permalink)  
Antiguo 27/04/2010, 12:47
Avatar de juamd  
Fecha de Ingreso: marzo-2009
Ubicación: Bogotá
Mensajes: 285
Antigüedad: 7 años, 10 meses
Puntos: 8
Respuesta: FAQ's de Java

Tema : JTable y DefaultTableModel
Pregunta : Como llenar un jtable con un modelo propio.
Respuesta :

Gracias a varios compañeros foristas pude resolver un problema que me molestó unas dos semanas, no encontré la solución aca y por eso queria regresar algo de la inmensa ayuda que este foro me ha brindado. El codigo es una mezcla de los ejemplos de sun y de chuidiang.

En este ejemplo voy a crear una tabla con 5 columnas de las cuales las 4 primeras tendran datos y la ultima tendra un checkbox que permita seleccionar una de las filas.

Para crear el modelo personalizado se crea una clase que extienda de la clase DefaultTableModel y se sobreescriben algunos metodos de esta:


Código PHP:
class MyTableModel extends DefaultTableModel {
        private 
String[] columnNames = {"Id",
                                        
"Nombre",
                                        
"Valor",
                                        
"Fecha solicitud",
                                        
" "}; //la ultima columna la dejo en blanco porque no quiero que tenga un encabezado.

        
private Object[] data//data almacenara los datos que tendra la tabla.
       
        
@Override
        
public int getColumnCount() {
            return 
columnNames.length;
        }

        @
Override
        
public String getColumnName(int col) {
            return 
columnNames[col];
        }

        
/*Este metodo me dice que si la columna es la numero 4 (van de 0 a 4) me 
           retorne un objeto boolean, el jtable este tipo de datos los pinta como   
           checkbox, de lo contrario me retorne un object */
        
public Class getColumnClass(int columna) {
            if (
columna == 4) return Boolean.class;
            return 
Object.class;
        }
 
        
/* Le indico que solo la columna 4 se puede editar */
        
@Override
        
public boolean isCellEditable(int rowint col) {
            if (
col 4) {
                return 
false;
            } else {
                return 
true;
            }
        }
    
    } 
En la clase anterior se han sobreescrito los metodos basicos para ingresar datos en el modelo.

Luego debo instanciar esa clase para ingresar los datos al jtable, lo cual hago de la siguiente manera:


Código PHP:
public class TableDemo extends JPanel {

    public 
TableDemo() {
        
        
/* creo una instancia de la clase que hereda de DefaultTableModel para    
        definir mi modelo*/
        
MyTableModel modelo = new MyTableModel();

        
/*Creo una tabla y le paso en el constructor el modelo de datos */ 
        
JTable table = new JTable(modelo);

        
/* Este es manejo propio de mi aplicacion. Donde esta esta definida en tres 
           capas y cada capa retorna mensaje a las superiores, estos datos se 
           retornar en arraylist */
        
Prestamo prestamo = new Prestamo();
        
ArrayList<StringcolPrestamos = new ArrayList<String>();
        
ArrayList<Stringtemporal = new ArrayList<String>();
        
colPrestamos prestamo.getOperacionesEmpleado(cedula);
        
int i;

        for(
i=0;i<colPrestamos.size();i++){
             if(!
colPrestamos.get(i).equals("-")){
                 
temporal.add(colPrestamos.get(i));
             }else{
                
/* Cada que voy a ingresar datos en mi modelo declaro  un objeto fila a 
                    este objeto le indico que debe tener en cada una de sus posicion y 
                    por ultimo lo agrego con modelo.addRow(fila) */
                 
Object [] fila = new Object[5];
                 
fila[0] = temporal.get(0);
                 
fila[1] = temporal.get(1);
                 
fila[2] = temporal.get(2);
                 
fila[3] = temporal.get(3);
                 
fila[4] = new Boolean(false);
                 
modelo.addRow(fila);
                 
temporal.clear();
             }
        }
        
        
table.setPreferredScrollableViewportSize(new Dimension(50070));
        
table.setFillsViewportHeight(true);

        
//Create the scroll pane and add the table to it.
        
JScrollPane scrollPane = new JScrollPane(table);

        
//Add the scroll pane to this panel.
        
add(scrollPane);
    }

Tal y como esta en el ejemplo de sun la aplicación se puede mostrar asi:


Código PHP:
private static void createAndShowGUI() {
        
//Create and set up the window.
        
JFrame frame = new JFrame("TableDemo");
        
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        
//Create and set up the content pane.
        
TableDemo newContentPane = new TableDemo();
        
newContentPane.setOpaque(true); //content panes must be opaque
        
frame.setContentPane(newContentPane);

        
//Display the window.
        
frame.pack();
        
frame.setVisible(true);
    } 

Este metodo se ejecuta desde donde queremos cargar el listado.

Espero que sea de ayuda, cualquier critica constructiva o sugerencia sera muy bien aceptada, pues apenas inicio mi camino en java y me gusta mucho aprender de quienes ya llevan tiempo en el.

Saludos.
  #85 (permalink)  
Antiguo 11/05/2010, 13:53
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 339
Antigüedad: 13 años, 4 meses
Puntos: 4
RMI / Router o Firewall

Tema: RMI
Pregunta: ¿ Cómo hago para que mi aplicación basada en RMI funcione a través del firewall ó router wire ó router wireless?

Respuesta:

1. Definir redirección del puerto en tu router y apuntarlo a la maquina servidor especificando su IP privada. (Puerto predeterminado RMI = 1099).

Si usas RMISecurityManager en tu aplicación servidor, debes asegurarte que en tu archivo java.policy concedas los permisos necesarios para aceptar conexiones en el puerto definido para exportar tus objetos.

2. Se debe declarar la siguiente propiedad en tu aplicación servidor antes de crear el Registry:

Ejemplo:
Código PHP:
System.setProperty("java.rmi.server.hostname""midominio.com"); 

EL segundo parametro debe ser la IP ó hostname PUBLICA, de tu aplicación servidor.
De otra forma NO FUNCIONARA así tengas el java.policy configurado para aceptar cualquier conexion.


Más info:

http://www.chuidiang.com/java/rmi/rmi_sin_security.php

http://java.sun.com/j2se/1.4.2/docs/guide/rmi/

PD: Pase más de 1 semana investigando y probando mil lineas de código, con esto se elimina la implementación de crear un Proxy HTTP (No es necesario).

Espero les sea de ayuda.

Saludos...
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.

Última edición por dackiller; 11/05/2010 a las 13:58 Razón: Horror ortográfico
  #86 (permalink)  
Antiguo 29/08/2010, 18:53
Avatar de fewar  
Fecha de Ingreso: octubre-2006
Mensajes: 22
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Re: FAQ's de Java

Cita:
Iniciado por superPojo Ver Mensaje
Tema: Mails.
Pregunta: Como hago para enviar un Mail a GMAIL o Yahoo con JavaMail?
Respuesta: no se puede.
Para estas alturas supongo que ya te diste cuenta de tu error. Es posible enviar correo a cualquier mail utilizando el API JavaMail. Ademas de poder enviar correo tambien puedes leer tu correo. Resumen JavaMail tiene la la capacidad de conexion a SMTP/POP3/IMAP entre otras cosas

Saludos
  #87 (permalink)  
Antiguo 24/11/2010, 18:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 38
Antigüedad: 6 años, 4 meses
Puntos: 0
De acuerdo Respuesta: FAQ's de Java

Eh gracias amigo...yo recien estoy comenzand con java...y fue una buena introduccion!..
  #88 (permalink)  
Antiguo 21/01/2011, 22:18
 
Fecha de Ingreso: septiembre-2008
Mensajes: 8
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: FAQ's de Java

estuvo muy bueno en verdad el codigo esta perfecto y si funciona. felicitaciones




Cita:
Iniciado por stock Ver Mensaje
Tema: Java 2D
Pregunta: Como puedo generar Thumbnails en java??
Respuesta: Bueno, primero te explico que un Thumbnail es una pequeña imagen generada de una de mayor tamaño, son para visualizar muchas imagenes en tamaño pequeño.

Con JAVA esto es posible porsupuesto , acontinuacion voy a poner una clase que es la encargada de hacer el trabajo, despues pondre la implementacion de dicha clase.

he puesto comentarios a las partes de codigo mas importante
Código PHP:
import java.awt.Container;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

/*
 * Created on Jan 23, 2006
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author Crysfel Villa
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class Imagen {
    private 
String imgOriginal;
    private 
String imgResult;
    private 
int calidad;
    private 
int width;
    private 
int height;
    
    
    public 
void resize()throws Exception{
        
//Cargamos la imagen y la preparamos para manipularla
        
Image image Toolkit.getDefaultToolkit().getImage(imgOriginal);
        
MediaTracker mediaTracker = new MediaTracker(new Container());
        
mediaTracker.addImage(image0);
        
mediaTracker.waitForID(0);
        
//Sacamos la proporcion de las nuevas medidas
        
double tnsPro = (double)width/(double)height;
        
//Calculamos la proporcion de la imagen original
        
int imgWidth image.getWidth(null);
        
int imgHeight image.getHeight(null);
        
double imgPro = (double)imgWidth / (double)imgHeight;
        
//comprobamos cual de las dos medidas introducidas esta desproporcionada
        //para asi corregirla
        
if (tnsPro imgPro) {
            
//asignamos una nueva height a la imagen generada
            //para mantener la proporcion con respecto a la original
            
height = (int)(width imgPro);
        } else {
            
//lo mismo pero con el width
            
width = (int)(height imgPro);
        }
        
        
//Creamos la imagen a generar, con los atributos requeridos, ancho, algo, y
        //el ultimo parametro especifica que vamos a guardar la imagen en formato "8-bit RGB"
        //que es un formato compatible con sistemas basados en Solaris o Windows
        //hay mas formatos, ver http://java.sun.com/j2se/1.4.2/docs/api/java/awt/image/BufferedImage.html
        
BufferedImage tnsImg = new BufferedImage(width,heightBufferedImage.TYPE_INT_RGB);
        
Graphics2D graphics2D tnsImg.createGraphics();
        
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        
graphics2D.drawImage(image00widthheightnull);
        
        
//Preparamos para escribir la imagen generada en el disco
        
BufferedOutputStream out = new BufferedOutputStream(new    FileOutputStream(imgResult));
        
//creamos el "parseador" para guardar la imagen en formato JPG
        
JPEGImageEncoder encoder JPEGCodec.createJPEGEncoder(out);
        
JPEGEncodeParam param encoder.getDefaultJPEGEncodeParam(tnsImg);

        
//Asignamos la calidad con la que se va a guardar la imagen de 0-100
        
calidad Math.max(0Math.min(calidad100));
        
param.setQuality((float)calidad 100.0ffalse);
        
encoder.setJPEGEncodeParam(param);
        
encoder.encode(tnsImg);
        
out.close(); 
        
//there you go =D
    
}
    
    
    
/**
     * @return Returns the calidad.
     */
    
public int getCalidad() {
        return 
calidad;
    }
    
/**
     * @param calidad The calidad to set.
     */
    
public void setCalidad(int calidad) {
        
this.calidad calidad;
    }
    
/**
     * @return Returns the height.
     */
    
public int getHeight() {
        return 
height;
    }
    
/**
     * @param height The height to set.
     */
    
public void setHeight(int height) {
        
this.height height;
    }
    
/**
     * @return Returns the imgOriginal.
     */
    
public String getImgOriginal() {
        return 
imgOriginal;
    }
    
/**
     * @param imgOriginal The imgOriginal to set.
     */
    
public void setImgOriginal(String imgOriginal) {
        
this.imgOriginal imgOriginal;
    }
    
/**
     * @return Returns the imgResult.
     */
    
public String getImgResult() {
        return 
imgResult;
    }
    
/**
     * @param imgResult The imgResult to set.
     */
    
public void setImgResult(String imgResult) {
        
this.imgResult imgResult;
    }
    
/**
     * @return Returns the width.
     */
    
public int getWidth() {
        return 
width;
    }
    
/**
     * @param width The width to set.
     */
    
public void setWidth(int width) {
        
this.width width;
    }

Ok, pues como veraz, esta clase tiene las propiedades con las que quieres que se genere el TNS, y el metodo para generarlos se llama resize().

ahora pongo la forma de uso.

Código PHP:
/*
 * Created on Jan 23, 2006
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author Crysfel Villa
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

public class Thumbnail {
    public static 
void main(String[] argsthrows Exception {
        
Imagen img = new Imagen();
        
//seleccionamos la imagen a modificar
        
img.setImgOriginal("09.jpg");
        
//el nombre con el cual se generara el TNS
        
img.setImgResult("tns.jpg");
        
//la calidad
        
img.setCalidad(100);
        
//las nuevas medidas, deben ser proporcionales
        //aunque si alguna no lo es, la clase lo corrige
        
img.setWidth(90);
        
img.setHeight(60);
        
        
//there u go ;)
        
img.resize();
    }

Ok, cabe aclarar que la clase tambien se puede usar en algun servlet o en un JSP, en fin, la puedes usar donde quieras

have funnnnnnnnnn
  #89 (permalink)  
Antiguo 17/05/2011, 19:49
 
Fecha de Ingreso: mayo-2011
Mensajes: 11
Antigüedad: 5 años, 8 meses
Puntos: 1
De acuerdo Respuesta: FAQ's de Java

Muchas gracias amigo, esta my bien explicado
Gracias de nuevo.

pd: me he registrado, solo para agradecerte.
  #90 (permalink)  
Antiguo 21/08/2011, 20:23
 
Fecha de Ingreso: julio-2011
Mensajes: 3
Antigüedad: 5 años, 5 meses
Puntos: 0
Busqueda Respuesta: FAQ's de Java

Cita:
Iniciado por stock Ver Mensaje
Tema: Sistema de Archivos
Pregunta: Como leer el contenido de una carpeta?
Respuesta: En JAVA, las carpetas son tratadas como ficheros, por lo tanto la clase FILE nos resolvera el problema.

Código PHP:

import java
.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Crysfel Villa
 * Created on Jan 15, 2006
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

public class Directorio {

    public List 
getFiles(String srcthrows Exception{
        
//Creamos el Objeto File con la URL que queremos desplegar
        
File dir = new File(src);
        List 
lista = new ArrayList();
        if (
dir.isDirectory()) {
            if (!
dir.exists()) {
                throw new 
Exception("Error: El directorio no existe");
            }

            
//tomamos los ficheros contenidos en la URL dada
            
String[] archivos dir.list();
            
//agregamos cada fichero en una lista
            
for(int i=0;i<archivos.length;i++)
                
lista.add(archivos[i]);
        }
        return 
lista;
    }
    
    public static 
void main(String arg[]){
        
//instanciamos nuestro objeto
        
Directorio directorio = new Directorio();
        
//tomamos el contenido del la carpeta en la lista
        
List ficheros directorio.getFiles("/home/crysfel/workspace");
        
//desplegamos cada uno
        
System.out.println("Ficheros contenidos");
        for(
int i=0;i<directorio.size();i++)
            
System.out.println("-> "+directorio.get(i));
    }    

Hola, una consulta:en esta parte:

//desplegamos cada uno
System.out.println("Ficheros contenidos");
for(int i=0;i<directorio.size();i++)
System.out.println("-> "+directorio.get(i));
}

se debe cambiar directorio.size y directorio.get(i) por
ficheros.size() y ficheros.get(i)?

luego pide que lo pongamos en un try catch...y ficheros en null....

con directorio solo, me daba error.

Bueno...De mas esta decir que Las FAQs son EXCELENTES y se agradecen mucho!!

Etiquetas: faq
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 33 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 19:40.