Valores STRUTS para JSP - DUVIDA

11 respostas
Paulinha_NEXT

eu nao consigo pegar valores do meu DAO/DTO para JSP, sou novata mesmo… preciso de uma ajuda do que deve ser feito para conseguir :oops:

aqui o link do meu codigo…
http://rapidshare.com/files/17930772/paulinha.rar.html

plz! me ajudem!
acho que isso pode ajudar muitos como eu…

11 Respostas

marcos.junqueira

posta o codigo ai usando a tag CODE que eu vou ver se posso ajudar…

ramilani12

Vc tem uma Action?

Nesse Action vc consegue invocar seu DAO e recuperar os objetos

Paulinha_NEXT

sim sim eu tenho Action sim, ta OK , esses tao sendo usado para um monte de coisa, soh a JSP eh nova…

os codigos ai:
DAO

/*
 * @(#)EstacaoDAO.java	1.0 2006/2/13
 *
 * Este código-fonte é propriedade da GENTEC Management, Training and IT tools.
 * Não é permitida a distribuição, cópia, modificação ou licenciamento
 * sem permissão desta empresa.
 */
package br.inf.gentec.mtva.inventario;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Properties;
import java.text.SimpleDateFormat;

import br.inf.gentec.mtva.core.DAO;
import br.inf.gentec.mtva.core.DAOException;


/**
 * Camada de negócio responsavel por obeter uma estação
 * específica ou listar todas as estações cadastradas.  
 * 
 * @author Hugo Weber
 * @version 1.0 13/2/2006
 */
public class EstacaoDAO{
	
	//Busca conexões com o banco de dados no pool de conexões
	private DAO dao;
	
	public static final int ID_INVALIDO = 0;
	public static final String NOME_INVALIDO = "";
	public static final short ESTACAO_ATIVA = 1;
	public static final short ESTACAO_INATIVA = 2;
	public static final short ESTACAO_ATIVA_E_INATIVA = 3;
	
	public static final short TIPO_COMPARTILHAMENTO_DISCO = 0;
	public static final short TIPO_COMPARTILHAMENTO_IMPRESSORA = 1;
	public static final short TIPO_COMPARTILHAMENTO_INVALIDO = -1;
	
	/**
	 * Cria um objeto EstacaoDAO
	 */
	public EstacaoDAO(){
		dao = DAO.getInstance();
	}
	
	/**
	 * Retorna a lista das estações por ordem inversa de data de inventario
	 * e ordem direta de nome. <b>Somente sao listadas as estacoes que tem
	 * sistema operacional</b>, se o sistema operacional nao conseguir ser 
	 * cadastrado, a estacao nao vai aparecer.
	 * 
	 * @param tipo {@link EstacaoDAO#ESTACAO_ATIVA}, {@link EstacaoDAO#ESTACAO_INATIVA}, {@link EstacaoDAO#ESTACAO_ATIVA_E_INATIVA}
	 * @param id Filtro, 0 (zero) para listar todas ou o ID da estacao que deseja 
	 * 
	 * @return - Lista de todas as estações cadastradas.
	 * @throws DAOException - Caso ocorra algum erro ao buscar conexão
	 *                        ou pesquisar a lista de estações.
	 */
	public Collection<EstacaoDTO> getEstacoes(short tipo, int id) throws DAOException{
		Connection conexao = dao.getConnection();
		Collection<EstacaoDTO> listagem = null;
			
		try {
			/*
			 * SQL para listar as estações por ordem inversa de
			 * data de inventario e ordem direta de nome.
			 * 
			 * OBS: Somente sao listadas as estacoes que tem
			 * sistema operacional, se o sistema operacional nao
			 * conseguir ser cadastrado, a estacao nao vai aparecer.
			 */
			StringBuilder sql = new StringBuilder();
			PreparedStatement ps = null;
			ResultSet resultado = null;			
			
			sql.append("SELECT est.id_estacao, ");
			sql.append("est.nome AS estacao, ");
			sql.append("est.agente_versao, ");
			sql.append("est.dt_ultimo_inv, ");
			sql.append("est.usuario, ");
			sql.append("est.net_shares, ");
			sql.append("est.ativa, ");
			sql.append("sw.nome AS so, ");
			sql.append("sw.versao, ");
			sql.append("aux.dt_instalacao, ");
			sql.append("aux.patch ");
			sql.append("FROM estacao est INNER JOIN aux_estacao_sw aux ON est.id_estacao=aux.id_estacao ");
			sql.append("INNER JOIN invsw sw ON sw.id_invsw=aux.id_invsw ");
			sql.append("WHERE sw.id_sw_grupo=2 ");
			switch(tipo){
				case ESTACAO_INATIVA:
					sql.append("AND est.ativa='N' ");
				break;
			
				case ESTACAO_ATIVA:
					sql.append("AND est.ativa='S' ");
				break;
			
			}

			if(id > 0){
				sql.append("AND est.id_estacao = ");
				sql.append(id);
			}
			sql.append(" ORDER BY est.dt_ultimo_inv DESC, est.nome ASC");
			
			//Busca as estações na base de dados.
			ps = conexao.prepareStatement(sql.toString());
			resultado = ps.executeQuery();
			
			
			/*
			 * A regra abaixo foi alterada. Cada estacao possui
			 * apenas 1 sistema operacional. Esse processo é mais
			 * simples de implementar, mas o código ainda continua
			 * o mesmo porque no futuro será implementado conforme 
			 * descrito abaixo.
			 * 
			 * Como cada estação pode conter mais de 1 sistema
			 * operacional instalado, a SQL acima pode retornar
			 * nomes de estações repetidos.
			 * 
			 * A cada registro que o laço abaixo passa, é verificado
			 * se o nome da estação é repetido, se for, é adicionado
			 * somente os dados do sistema operacional a uma coleção,
			 * se o nome da estação for diferente, a coleção com os
			 * sistemas operacionais da estação é adicionada, junto
			 * com os dados da estação, a listagem de estações. 
			 * 
			 */
			
			//Listagem de estações que será retornada.
			listagem = new ArrayList<EstacaoDTO>();
			
			/*
			 * Os IDs abaixo são inicializados com valores
			 * diferentes para forçar a primeira entrada
			 * e listar a primeira estação.
			 */
			
			//Ajustado quando a mudança no nome da estação
			int idEstacaoAnterior = ID_INVALIDO;
			
			//Ajustado a cada registro que o laço busca
			int idEstacaoAtual = -1;
			
			//Ultima estação a ser adicionada, fora do laço while
			EstacaoDTO e = null;
			
			while(resultado.next()){
				//busca o ID da estação atual
				idEstacaoAtual = resultado.getInt("id_estacao");
				
				/*
				 * Se a estação atual for nova, ou seja, diferente
				 * da estação anterior, então sera criado um novo
				 * EstacaoItemDTO com os dados da estação anterior,
				 * e nele adicionado seus sistemas operacionais.
				 * 
				 * A estação será adicionada na lista de estações.
				 * 
				 * Entao uma nova listagem de sistemas operacionais
				 * sera criada para a proxima estação.
				 */
				if(idEstacaoAnterior != idEstacaoAtual){
					
					/*
					 * Se NÃO é a primeira vez que entra no loop
					 * então adicione a estação anterior
					 */
					if(idEstacaoAnterior != ID_INVALIDO){
						listagem.add(e);
					}
					
					/*
					 * Preenche os dados da nova estação e gera
					 * uma nova lista de sistemas operacionais
					 */
					e = new EstacaoDTO();
					e.setIdEstacao(resultado.getInt("id_estacao"));
					e.setNome(resultado.getString("estacao"));
					e.setVersaoAgente(resultado.getString("agente_versao"));
					e.setDtUltimoInv(resultado.getDate("dt_ultimo_inv"));
					e.setUsuario(resultado.getString("usuario"));
					if(resultado.getString("ativa").charAt(0) == 'S'){
						e.setAtiva(true);
					}else{
						e.setAtiva(false);
					}
					e.setSistemasOperacionais(new ArrayList<InvSwDTO>());
					
					montarCompartilhamentos(e, resultado.getString("net_shares"));
					
					idEstacaoAnterior = idEstacaoAtual;
				}
				
				/*
				 * adiciona o sistema operacional a estação atual.
				 */
				InvSwDTO so = new InvSwDTO();
				so.setNome(resultado.getString("so"));
				so.setVersao(resultado.getString("versao"));
				so.setPatch(resultado.getString("patch"));
				so.setDataInstalacao(resultado.getDate("dt_instalacao"));
							
				e.getSistemasOperacionais().add(so);		
			}//fim do while
			
			if (e != null){
				listagem.add(e);
			}
			resultado.close();
		}catch(SQLException e){
			e.printStackTrace(System.err);
			throw new DAOException(e.getMessage());
		}finally{
			/*
			 * Libera a conexão de volta para o Pool.
			 */
			try {
				conexao.close();
			}catch(SQLException e1){
				throw new DAOException(e1.getMessage());				
			}
		}
			
		return listagem;
	}
	
	public Collection<EstacaoDTO> getEstacoes(short tipo) throws DAOException{
		return getEstacoes(tipo, 0);
	}
	
	private void montarCompartilhamentos(EstacaoDTO e, String ns){
		if(ns != null && !ns.trim().equals("")){
			String[] shares = ns.split(";");
			ArrayList<CompartilhamentoDTO> l = new ArrayList<CompartilhamentoDTO>(); 
			for(int k = 0; k < shares.length; k+=4){
				try{
					CompartilhamentoDTO c = new CompartilhamentoDTO();
					c.setTipo(Short.parseShort(shares[k]));
					c.setNome(shares[k+1]);
					c.setCaminho(shares[k+2]);
					c.setComentario(shares[k+3]);
					
					l.add(c);
				}catch(Exception x){
//Isso deveria estar num log, fazer isso urgente Hugo 1-2-2007
					System.out.print("erro ao ler o campo de compartilhamento [" + x.getMessage() +"]");
				}
			}
			
			e.setCompartilhamentos(l);
		}		
	}
	
	EstacaoDTO getEstacao(String serial) throws DAOException{
		Connection conexao = dao.getConnection();
		EstacaoDTO e = null;
		
		try {
			StringBuilder sql = new StringBuilder();
			PreparedStatement ps = null;
			ResultSet resultado = null;
			
			sql.append("SELECT id_estacao, ");
			sql.append("nome AS estacao, ");
			sql.append("agente_versao, ");
			sql.append("dt_ultimo_inv, ");
			sql.append("usuario, ");
			sql.append("net_shares, ");
			sql.append("ativa ");
			sql.append("FROM estacao WHERE agente_serial = ?");
			
			ps = conexao.prepareStatement(sql.toString());
			ps.setString(1, serial);
			resultado = ps.executeQuery();
			
			if(resultado.next()){
				e = new EstacaoDTO();
				
				e.setIdEstacao(resultado.getInt("id_estacao"));
				e.setNome(resultado.getString("estacao"));
				e.setVersaoAgente(resultado.getString("agente_versao"));
				e.setDtUltimoInv(resultado.getDate("dt_ultimo_inv"));
				e.setUsuario(resultado.getString("usuario"));
				if(resultado.getString("ativa").charAt(0) == 'S'){
					e.setAtiva(true);
				}else{
					e.setAtiva(false);
				}
				
				montarCompartilhamentos(e, resultado.getString("net_shares"));						
			}
			
			resultado.close();
			
		}catch(SQLException ex){
			ex.printStackTrace(System.err);
			throw new DAOException(ex.getMessage());
		}finally{
			/*
			 * Libera a conexão de volta para o Pool.
			 */
			try {
				conexao.close();
			}catch(SQLException e1){
				throw new DAOException(e1.getMessage());				
			}
		}
			
		return e;
	}
	
	
	/**
	 * Extrai, do inventário enviado pelo agente MTVA, os
	 * dados da estação e do sistema operacional. Aqui não
	 * são extraídos todos os sistemas operacionais, somente
	 * um, pois o agente MTVA não vai estar rodando ao mesmo
	 * tempo em 2 sistemas operacionais na mesma estação.
	 * 
	 * @param p Inventario enviado pelo agente MTVA
	 * @return EstacaoItemDTO contendo os dados da estaçãoo e o sistema operacinal instalado
	 */
	EstacaoDTO extrairEstacao(Properties p){
		EstacaoDTO estacao = new EstacaoDTO();
		InvSwDTO so = new InvSwDTO();
		ArrayList<InvSwDTO> sos = new ArrayList<InvSwDTO>();
		Collection<CompartilhamentoDTO> comps = new ArrayList<CompartilhamentoDTO>();
		int k = 0;//contador
		SimpleDateFormat dt = new SimpleDateFormat("dd/MM/yyyy");

		//dados da estação
		estacao.setNome(p.getProperty("estacao.nome"));
		estacao.setVersaoAgente(p.getProperty("estacao.agente_versao"));
		estacao.setSerialAgente(p.getProperty("agente.serial"));
		estacao.setUsuario(p.getProperty("invlogico.usuario.login"));
		
		//dados do sistema operacional
		so.setPlataforma(p.getProperty("estacao.sistema_operacional.plataforma"));		
		so.setNome(p.getProperty("estacao.sistema_operacional.nome"));
		so.setVersao(p.getProperty("estacao.sistema_operacional.versao"));
		so.setPatch(p.getProperty("estacao.sistema_operacional.patch"));
		so.setFabricante(p.getProperty("estacao.sistema_operacional.fabricante"));
		so.setSerial(p.getProperty("estacao.sistema_operacional.serial"));
		
		//Obtem a data se o SO for portugues do brasil
		try {
			so.setDataInstalacao(dt.parse(p.getProperty("estacao.sistema_operacional.dt_instalacao")));
		}catch(Exception e){
			so.setDataInstalacao(null);					
		}				
		
		sos.add(so);
		estacao.setSistemasOperacionais(sos);

		/*
		 * Dados dos compartilhamentos.
		 */
		k = 1;
		while(p.getProperty("invlogico.compartilhamento." + k + ".tipo") != null){
			CompartilhamentoDTO comp = new CompartilhamentoDTO();
			comp.setTipo(Short.parseShort(p.getProperty("invlogico.compartilhamento." + k + ".tipo")));
			comp.setNome(p.getProperty("invlogico.compartilhamento." + k + ".nome"));
			comp.setCaminho(p.getProperty("invlogico.compartilhamento." + k + ".caminho"));
			comp.setComentario(p.getProperty("invlogico.compartilhamento." + k + ".comentario"));
			
			comps.add(comp);			
			k++;
		}
		estacao.setCompartilhamentos(comps);		
		
		return estacao;
	}

	
	/**
	 * Cadastra uma nova estação na base de dados.
	 * 
	 * @param estacao - Dados da estação que se será cadastrada.
	 * @return - ID da estação cadastrado.
	 * @throws DAOException - Caso ocorra algum erro ao buscar conexão
	 *                        ou cadastrar a nova estação.
	 */		
	Integer inserir(EstacaoDTO estacao)throws DAOException{
		Connection conexao = dao.getConnection();

		try{
			Date dtAgora = new Date(System.currentTimeMillis());
			StringBuilder sql = new StringBuilder();
			StringBuilder shares = new StringBuilder();

			/*
			 * Os compartilhamentos sao gravados em um campo TXT
			 * separados por ; porque uma tabela de compartilhamentos
			 * que tem registros deletados e inseridos toda hora
			 * esgota rapidamente o campo ID.
			 */
			for(CompartilhamentoDTO c : estacao.getCompartilhamentos()){
				shares.append(c.getTipo());
				shares.append(';');
				shares.append(c.getNome());
				shares.append(';');
				shares.append(c.getCaminho());
				shares.append(';');
				shares.append(c.getComentario());
				shares.append(';');				
			}
			
			sql.append("INSERT INTO estacao (");
			sql.append("nome, ");
			sql.append("agente_versao, ");
			sql.append("agente_serial, ");
			sql.append("dt_primeiro_inv, ");			
			sql.append("dt_ultimo_inv, ");
			sql.append("usuario, ");
			sql.append("net_shares) ");
			
			sql.append("VALUES (?, ?, ?, ?, ?, ?, ?)");

			PreparedStatement ps = conexao.prepareStatement(sql.toString());
			ps.setString(1, estacao.getNome());
			ps.setString(2, estacao.getVersaoAgente());
			ps.setString(3, estacao.getSerialAgente());
			ps.setDate(4, dtAgora);
			ps.setDate(5, dtAgora);
			ps.setString(6, estacao.getUsuario());
			ps.setString(7, shares.toString());
			
			ps.execute();
			ps.close();

			// Recupera o ID da estacao inserida 
			ps = conexao.prepareStatement("SELECT MAX(id_estacao) FROM estacao");
			ResultSet rs = ps.executeQuery();

			if(rs.next()){
				estacao.setIdEstacao(rs.getInt(1));
				rs.close();	//Fecha o resultSet para liberar recursos alocados
			}else{
				throw new DAOException("Erro ao buscar o ID da estacao inserida");
			}

			sql.delete(0,sql.length());

			//Já cadastra o patrimonio da estacao, para uma empresa ainda inexistente (1) 
			sql.append("INSERT INTO patrimonio (");
			sql.append("id_estacao, id_empresa, ");
			sql.append("id_localidade, id_departamento, id_grupo) ");
			sql.append("VALUES (?, 1, 1, 1, 1)");
			ps = conexao.prepareStatement(sql.toString());
			ps.setInt(1, estacao.getIdEstacao());
			ps.execute();
			ps.close();

			conexao.commit();//A conexão tem autocommit false

		}catch(SQLException e){
			try{
				//Cancela a transação
				conexao.rollback();	//A conexão tem autocommit false
			
				throw new DAOException("Erro ao inserir a estacao: [" + e.getMessage() + "]");
			}catch(SQLException e1){
				throw new DAOException("Erro ao cancelar a transacao: [" + e1.getMessage() + "]"); 
			}
		}finally{
			/*
			 * Libera a conexão de volta para o Pool.
			 */
			try {
				conexao.close();
			}catch(SQLException e1){
				e1.printStackTrace(System.err);
				throw new DAOException(e1.getMessage());				
			}
		}
		
		return estacao.getIdEstacao();
	}
	

	/**
	 * Atualiza uma estação na base de dados.
	 * 
	 * @param estacao - Dados da estação que se será atualizada.
	 * @throws DAOException - Caso ocorra algum erro ao buscar conexão
	 *                        ou atualizar a estação.
	 */
	void atualizar(EstacaoDTO estacao) throws DAOException {
		Connection conexao = dao.getConnection();
		boolean fixo = isUsuarioFixo(estacao.getIdEstacao());
		
		try{
			//Gravando dados da estacao
			StringBuilder sql = new StringBuilder();
			StringBuilder shares = new StringBuilder();

			/*
			 * Os compartilhamentos sao gravados em um campo TXT
			 * separados por ; porque uma tabela de compartilhamentos
			 * que tem registros deletados e inseridos toda hora
			 * esgota rapidamente o campo ID.
			 */
			for(CompartilhamentoDTO c : estacao.getCompartilhamentos()){
				shares.append(c.getTipo());
				shares.append(';');
				shares.append(c.getNome());
				shares.append(';');
				shares.append(c.getCaminho());
				shares.append(';');
				shares.append(c.getComentario());
				shares.append(';');				
			}			
			
			sql.append("UPDATE estacao SET ");
			sql.append("nome = ?, ");
			sql.append("agente_versao = ?, ");
			sql.append("agente_serial = ?, ");
			sql.append("dt_ultimo_inv = ?, ");
			if(!fixo){
				sql.append("net_shares = ?, ");//olha a virgula
				sql.append("usuario = ? ");
			}else{
				sql.append("net_shares = ? ");//esse não tem virgula apos o sinal de interrogacao
			}
			sql.append("WHERE id_estacao = ?");

			PreparedStatement ps = conexao.prepareStatement(sql.toString());
			ps.setString(1, estacao.getNome());
			ps.setString(2, estacao.getVersaoAgente());
			ps.setString(3, estacao.getSerialAgente());
			ps.setDate(4, new Date(System.currentTimeMillis()));
			ps.setString(5, shares.toString());
			if(!fixo){
				ps.setString(6, estacao.getUsuario());
				ps.setInt(7, estacao.getIdEstacao());
			}else{
				ps.setInt(6, estacao.getIdEstacao());
			}
			
			ps.execute();
			ps.close();
			
			conexao.commit();//A conexão tem autocommit false
			
		}catch(SQLException e){
			throw new DAOException("Erro ao atualizar a estacao: [" + e.getMessage() + "]");			
		}finally{
			/*
			 * Libera a conexão de volta para o Pool.
			 */
			try {
				conexao.close();
			}catch(SQLException e1){
				e1.printStackTrace(System.err);
				throw new DAOException(e1.getMessage());				
			}
		}
	}	
	
	/**
	 * Marca a estação como ativa.
	 * 
	 * @author Angelo J. R. Pereira
	 * 
	 * @param nome - nome da estacao
	 * @throws DAOException - Caso ocorra algum erro ao buscar conexão
	 *                        ou modificar a estacao.
	 */
	public void setAtiva(int id, boolean ativa) throws DAOException {
		Connection conexao = dao.getConnection();
		
		try{
			StringBuilder sql = new StringBuilder();
			
			sql.append("UPDATE estacao SET ativa = ");
			if(ativa){
				sql.append("'S'");
			}else{
				sql.append("'N'");
			}
			
			sql.append("WHERE id_estacao = ?");
			
			PreparedStatement ps = conexao.prepareStatement(sql.toString());
			ps.setInt(1, id);
			
			ps.execute();
			ps.close();
			
			conexao.commit();//A conexão tem autocommit false
			
		}catch(SQLException e){
			throw new DAOException("setAtiva retornou: [" + e.getMessage() + "]");
		}finally{
			/*
			 * Libera a conexão de volta para o Pool.
			 */
			try {
				conexao.close();
			}catch(SQLException e1){
				throw new DAOException(e1.getMessage());				
			}
		}
	}


	/**
	 * Retorna se a estacao esta ativa.
	 * 
	 * @author Angelo J. R. Pereira
	 * @param estacao - EstacaoMTVA que deseja descobrir se esta ativa
	 * @return boolean informado se a estação é ativa ou não.
	 * @throws DAOException
	 */
	public boolean isAtiva(int id) throws DAOException{
		Connection conexao = dao.getConnection();
		boolean ativa = false;
		PreparedStatement ps = null;
		
		try{			
			ps = conexao.prepareStatement("SELECT id_estacao FROM estacao WHERE id_estacao = ? AND ativa='S'");
			ps.setInt(1, id);
			ResultSet rs = ps.executeQuery();

			if(rs.next()){
				ativa = true;
			}
			rs.close();
		}catch(Exception e){
			throw new DAOException("isAtiva retornou: [" + e.getMessage() + "]");
		}finally{
			/*
			 * Libera a conexão de volta para o Pool.
			 */
			try {
				conexao.close();
			}catch(SQLException e1){
				throw new DAOException(e1.getMessage());				
			}
		}

		return ativa;
	}
	
	public void setUsuarioFixo(int id, boolean fixo) throws DAOException {
		Connection conexao = dao.getConnection();
		
		try{
			StringBuilder sql = new StringBuilder();
			
			sql.append("UPDATE estacao SET usuario_fixo = ");
			if(fixo){
				sql.append("'S'");
			}else{
				sql.append("'N'");
			}
			
			sql.append("WHERE id_estacao = ?");
			
			PreparedStatement ps = conexao.prepareStatement(sql.toString());
			ps.setInt(1, id);
			
			ps.execute();
			ps.close();
			
			conexao.commit();//A conexão tem autocommit false
			
		}catch(SQLException e){
			throw new DAOException("setUsuarioFixo retornou: [" + e.getMessage() + "]");
		}finally{
			/*
			 * Libera a conexão de volta para o Pool.
			 */
			try {
				conexao.close();
			}catch(SQLException e1){
				throw new DAOException(e1.getMessage());				
			}
		}
	}
	
	public boolean isUsuarioFixo(int id) throws DAOException{
		Connection conexao = dao.getConnection();
		boolean r = false;
		PreparedStatement ps = null;
		
		try{
			ps = conexao.prepareStatement("SELECT id_estacao FROM estacao WHERE id_estacao = ? AND usuario_fixo='S'");
			ps.setInt(1, id);
			ResultSet rs = ps.executeQuery();

			if(rs.next()){
				r = true;
			}
			rs.close();
		}catch(Exception e){
			throw new DAOException("isUsuarioFixo retornou: [" + e.getMessage() + "]");
		}finally{
			/*
			 * Libera a conexão de volta para o Pool.
			 */
			try {
				conexao.close();
			}catch(SQLException e1){
				throw new DAOException(e1.getMessage());				
			}
		}

		return r;		
	}
	
}

DTO

Agora minha JSP

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

	<head>
		<title><bean:message key="mtva.titulo"/></title>
		<style type="text/css">@import url("css/padrao.css");</style>
	</head>
	
	<body leftmargin="0px" rightmargin="0px" topmargin="0px" bottommargin="0px">
	
		<!-- Tabela que monta a pagina com cabeçalho, menu, área visivel e rodape -->
		<table width=100% height="100%" border="0" align="center" cellpadding="0" cellspacing="0">
			<!-- Primeira linha, cabeçalho -->
			<tr>
    			<td height="134" colspan="2" background="imagens/topo_bg.gif"><%@ include file="topo.jsp" %></td>
			</tr>
			
			<!-- Segunda linha, menu e área visível -->
			<tr>
				<!-- Coluna que monta o menu -->
			    <td width=212 valign="top" background="imagens/menu_bg.gif">
			    	<table width="100%"  border="0" cellspacing="0" cellpadding="0">
				        <tr>
					        <td>
					        	<img src="imagens/menu_titulo.gif" width="212" height="39">
					        </td>
				        </tr>
				        <tr>
					        <td style="padding-left:15px; padding-right:15px">
					        	<%@ include file="menu.jsp" %>
					        </td>
				        </tr>
      				</table>
			    </td><!-- fim da coluna que monta o menu-->
			    
			    <!-- Coluna que monta a área visível -->
			    <td width="100%" valign="top" background="imagens/conteudo_bg.gif" style="padding-left:10px; padding-top:7px ">
			    	<!-- Tabela que monta a barra de título -->
			    	<table width="100%"  border="0" cellspacing="0" cellpadding="0">
				        <tr>
        					<td width="70"><img src="imagens/tl_inventario.gif" width="70" height="68"></td>
					        <td background="imagens/tl_bg_barra.gif">
								&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="TituloBanner"><bean:message key="invlog.invlogico"/></span>
							</td>
          					<td width="15"><img src="imagens/tl_ponta_barra.gif" border="0" width="15" height="68"></td>
				        </tr>
				    </table><!-- fim da tabela que monta a barra de título -->
				    
				    <!-- Coloca uma imagem, nome da estação e usuário centralizados -->
			        <center>
			            <br>
			            <img style="width: 67px; height: 57px;" alt="" src="imagens/estacaolog.gif">
			            <br>
			            <span class="TitulosListas">
			            	<c:out value="${nomeEstacao}"/>
			            </span>
			            <br>
			            <br>
		            </center><!-- fim da imagem, noma da estação e versao SMBIOS centralizados -->
		            
					<!-- tabela que monta o inventário lógico -->
          			<table width="100%" border="0" cellspacing="0" class="TextoCorpo">

             <tr>
   	          <td><div align="center"><img style="width: 67px; height: 57px;" alt="" src="imagens/userlog.gif"><br>
   		              <span class="Titulo"><b><bean:message key="invlog.usuario"/></b></span></div></td>

   	          <td>
       	        <table width="99%" border="0" align="right" cellpadding="0" cellspacing="0">
           	      <tr>
               	  	<td width="25%"><strong><bean:message key="invlog.login"/></strong></td>
               		<td width="75%">[color=blue]<c:out value="${exemploqueeutenteicolocando usuario}"/>[/color]</td>
                  </tr>
               	</table>
              </td>
   	        </tr>
            
           	<!-- Linha separadora -->
		    <tr>
            	<td colspan="2">
            		<hr color="#FF6600">
            	</td>
		    </tr>

            <tr>
   	          <td><div align="center"><img style="width: 67px; height: 57px;" alt="" src="imagens/monitorlog.gif"><br>
   		              <span class="Titulo"><b><bean:message key="invlog.monitores"/></b></span></div></td>

   	          <td>
       	        <table width="99%" border="0" align="right" cellpadding="0" cellspacing="0">
           	      <tr>
               	  	<td width="25%"><strong><bean:message key="invlog.cores"/></strong></td>
               		<td width="75%">[color=darkred]inventario.monitorcor[/color]</td>
                  </tr>
   	              <tr>
       	            <td width="25%"><strong><bean:message key="invlog.resolucao"/></strong></td>
           	        <td width="75%">[color=red]inventario.resolucao_horizontal X inventario.resolucao_vertical[/color]</td>
               	  </tr>
               	</table>
              </td>
   	        </tr>
            
           	<!-- Linha separadora -->
		    <tr>
            	<td colspan="2">
            		<hr color="#FF6600">
            	</td>
		    </tr>

            <tr>
   	          <td><div align="center"><img style="width: 67px; height: 57px;" alt="" src="imagens/tecladolog.gif"><br>
   		              <span class="Titulo"><b><bean:message key="invlog.teclado"/></b></span></div></td>

   	          <td>
       	        <table width="99%" border="0" align="right" cellpadding="0" cellspacing="0">
           	      <tr>
               	  	<td width="25%"><strong><bean:message key="invlog.idioma"/></strong></td>
               		<td width="75%">[color=darkred]teclado.idioma[/color]</td>
                  </tr>
   	              <tr>
       	            <td width="25%"><strong><bean:message key="invlog.layout"/></strong></td>
           	        <td width="75%">[color=red]teclado.layout[/color]</td>
               	  </tr>
               	</table>
              </td>
   	        </tr>
            
           	<!-- Linha separadora -->
		    <tr>
            	<td colspan="2">
            		<hr color="#FF6600">
            	</td>
		    </tr>

			            
			<!-- Linha que informa dados de compartilhamentos -->
            <tr>
                <td>
            		<div align="center">
            			<img style="width: 67px; height: 57px;" alt="" src="imagens/compartslog.gif">
	            		<br>
                      	<span class="Titulo">
                      		<b><bean:message key="invlog.compartilhamentos"/></b>
                      	</span>
                    </div>
                </td>
	            <td><table width="99%" border="0" align="right" cellpadding="0" cellspacing="0">
                    	<tr>
                    		<td width="25%">
                    			<strong><bean:message key="invlog.caminholoc"/></strong>
                    		</td>
                    		<td width="75%">[color=darkred]compartilha.caminho[/color]</td>
	                    </tr>
	                  	<tr>
    	                	<td width="25%"><strong><bean:message key="invlog.comentario"/></strong></td>
        	            	<td width="75%">[color=red]compartilha.comentario[/color]</td>
            	      	</tr>
                       	<tr>
    	                	<td width="25%"><strong><bean:message key="invlog.tipo"/></strong></td>
        	            	<td width="75%">[color=darkred]compartilha.tipo[/color]</td>
            	      	</tr>
                       	<tr>
    	                	<td width="25%"><strong><bean:message key="invlog.nomerede"/></strong></td>
        	            	<td width="75%">[color=red]compartilha.nome[/color]</td>
            	      	</tr>

              </table> </td>
            </tr><!-- Fim da linha que informa dados de compartilhamentos -->
            
            
            			<!-- Linha separadora -->
			            <tr>
	            			<td colspan="2">
	            				<hr color="#FF6600">
	            			</td>
			            </tr>
			            
            <tr>
              <td><div align="center"><img style="width: 67px; height: 57px;" alt="" src="imagens/rede.gif"><br>
                      <span class="Titulo"><b><bean:message key="invlog.interfacerede"/></b></span></div></td>
              <td>
                <table width="99%" border="0" align="right" cellpadding="0" cellspacing="0">
                  <tr>
                    <td width="25%"><strong><bean:message key="invlog.ipestacao"/></strong></td>
                    <td width="75%"><div align="left">[color=darkred]rede.ip[/color]</div></td>
                  </tr>
                  <tr>
                    <td width="25%"><strong><bean:message key="invlog.mascara"/></strong></td>
                    <td width="75%"><div align="left">[color=red]rede.mask[/color]</div></td>
                  </tr>
                  <tr>
                    <td width="25%"><strong><bean:message key="invlog.gateway"/></strong></td>
                    <td width="75%"><div align="left">[color=darkred]rede.gateway[/color]</div></td>
                  </tr>
                  <tr>
                    <td width="25%"><strong><bean:message key="invlog.1dns"/></strong></td>
                    <td width="75%"><div align="left">[color=red]rede.dns1[/color]</div></td>
                  </tr>
                  <tr>
                    <td width="25%"><strong><bean:message key="invlog.2dns"/></strong></td>
                    <td width="75%"><div align="left">[color=darkred]rede.dns2[/color]</div></td>
                  </tr>
                  <tr>
                    <td width="25%"><strong><bean:message key="invlog.usadhcp"/></strong></td>
                    <td width="75%"><div align="left">[color=red]rede.dhcpAtivo[/color]</div></td>
                  </tr>
                  <tr><td>&nbsp;</td><td>&nbsp;</td></tr>
              </table>
              </td>
            </tr>
   			<!-- Linha separadora -->
            <tr>
       			<td colspan="2">
       				<hr color="#FF6600">
       			</td>
           </tr>
			            
            <tr>
              <td><div align="center"><img style="width: 67px; height: 57px;" alt="" src="imagens/disco.gif"><br>
                      <span class="Titulo"><b><bean:message key="invlog.discos"/></b></span></div></td>

              <td>
                <table width="99%" border="0" align="right" cellpadding="0" cellspacing="0">         
                  <tr>
                    <td width="25%"><strong><bean:message key="invlog.fabricante"/></strong></td>
                    <td width="75%"><div align="left">[color=red]drive.drive.fabricante[/color]</div></td>
                  </tr>
                  <tr>
                    <td width="25%"><strong><bean:message key="invlog.modelo"/></strong></td>
                    <td width="75%"><div align="left">[color=red]drive.drive.modelo[/color]</div></td>
                  </tr>
                  <tr>
                    <td width="25%"><strong><bean:message key="invlog.capacidade"/></strong></td>
                    <td width="75%"><div align="left">[color=red]drive.drive.tamanho_total[/color]</div></td>
                  </tr>
                  <tr>
                    <td width="25%"><strong><bean:message key="invlog.smart"/></strong></td>
                    <td width="75%"><div align="left">[color=red]drive.tamanho_livre[/color]</div></td>
                  </tr>
				  <tr>
               	  <td colspan="2"><hr color="#FF9955"></td>
                  </tr>

                </table>              
              </td>

            </tr>
          </table>
          <h3>&nbsp;</h3>
      </td>
  </tr>
  <tr>
    <td height="25"><img src="imagens/rodape_01.gif" width="212" height="25"></td>
    <td width="100%" background="imagens/conteudo_bg.gif">&nbsp;</td>
  </tr>
  <tr>
    <td height="22" colspan="2"><%@ include file="rodape.jsp" %></td>
  </tr>
</table>
</body>
</html>

se precisar da action soh pedir que eu posts, nao coloco pq fica muito grande…
Ta tudo funcionando soh nao consigo pegar os valores para JSP mesmo

Paulinha_NEXT

ignorem o color e /color eu tentei colocar para melhorar o entendimento de vcs

Paulinha_NEXT

?UP

furutani

Usando EL como vc fez abaixo não funciona?

<c:out value="${exemploqueeutenteicolocando usuario}"/>

Vc colocou o atributo na request direitinho?

Paulinha_NEXT

tudo que eu fiz ta ai…

Pelo que eu conheço (iniciante) sim coloquei…

furutani

Paulinha NEXT:
tudo que eu fiz ta ai…

Pelo que eu conheço (iniciante) sim coloquei…


Anexa aqui no forum mesmo, o arquivo com a action.

Paulinha_NEXT
/*
 * @(#)ListaEstacoes.java	1.0 2006/2/13
 *
 * Este código-fonte é propriedade da GENTEC Management, Training and IT tools.
 * Não é permitida a distribuição, cópia, modificação ou licenciamento
 * sem permissão desta empresa.
 */
package br.inf.gentec.mtva.inventario;

import java.util.Collection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import br.inf.gentec.mtva.core.DAOException;
import br.inf.gentec.mtva.patrimonio.DepartamentoDAO;
import br.inf.gentec.mtva.patrimonio.EmpresaDAO;
import br.inf.gentec.mtva.patrimonio.GrupoDAO;
import br.inf.gentec.mtva.patrimonio.LocalidadeDAO;
import br.inf.gentec.mtva.patrimonio.PatrimonioDAO;


/**
 * Lista as estações, permitindo ao usuário selecionar uma
 * para exibição de software ou hardware.
 * 
 * TODO - Paginar a lista ao invés de trazer todas as estações de uma só vez
 * @author Hugo Weber
 * @version 1.0 13/2/2006
 */
public class EstacoesAction extends DispatchAction {

	/** 
	 * Busca as estações na camada de negócio e as exibe em uma página JSP.
	 * 
	 * @param mapping - Mapping contendo as forwards cadastradas no struts-config para essa Action.
	 * @param form - Não usado nessa função.
	 * @param request - Objeto Request dessa servlet. 
	 * @param response - Objeto Response dessa servlet.
	 * 
	 * @return ActionForward - Retorna um forward para a pagina JSP com a lista de estações. 
	 */
	
	public ActionForward todos(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		
		EstacaoDAO estacaoDAO = new EstacaoDAO();
		Collection<EstacaoDTO> estacoes = null;
		ActionForward forward = null;
		
		/*
		 * Busca a lista de estações na camada de negócio
		 */
		try {
			estacoes = estacaoDAO.getEstacoes(EstacaoDAO.ESTACAO_ATIVA);
			
			//Repassa o atributo tipo para a JSP. tipo=[hardware][software]
			request.setAttribute("tipo", request.getParameter("tipo"));

			//Coloca a lista de estações como atributo para a JSP.
			request.setAttribute("estacoes", estacoes);
			
			//Seleciona qual tipo de listagem serão exibidas as estações
			request.setAttribute("lista", request.getParameter("lista"));
			
			//Retorna a pagina com a lista de estações
			forward = mapping.findForward("listaEstacoes");
		}catch(Exception e){
			//Retorna uma pagina com o erro ocorrido na camada de negócio
			request.setAttribute("err", e.getMessage());
			forward = mapping.findForward("ERRO");
		}

		//Retorna a lista de estações ou a descrição do erro
		return forward;
	}
	
	public ActionForward empresa(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		
		PatrimonioDAO patrimonio = new PatrimonioDAO();
		EmpresaDAO empresaDAO = new EmpresaDAO();
		Collection empresas = null;
		Collection patrimonios = null;
		Collection estacoes = null;
		ActionForward forward = null;
		EstacaoDAO estacaoDAO = new EstacaoDAO();
		
		try {
			estacoes = estacaoDAO.getEstacoes(EstacaoDAO.ESTACAO_ATIVA);
			patrimonios = patrimonio.getEmpresaPorEstacao();
			empresas = empresaDAO.getEmpresas();
			forward = mapping.findForward("listaEstacoes");
		} catch (DAOException e) {
			request.setAttribute("err", e.getMessage());
			forward = mapping.findForward("ERRO");
		}
		request.setAttribute("tipo", request.getParameter("tipo"));
		request.setAttribute("lista", request.getParameter("lista"));
		request.setAttribute("empresas", empresas);
		request.setAttribute("patrimonios", patrimonios);
		request.setAttribute("estacoes", estacoes);
		
		return forward;
	}
	
	public ActionForward localidade(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		
		PatrimonioDAO patrimonio = new PatrimonioDAO();
		LocalidadeDAO localidadeDAO = new LocalidadeDAO();
		Collection localidades = null;
		Collection patrimonios = null;
		Collection estacoes = null;
		ActionForward forward = null;
		EstacaoDAO estacaoDAO = new EstacaoDAO();
		
		try {
			estacoes = estacaoDAO.getEstacoes(EstacaoDAO.ESTACAO_ATIVA);
			patrimonios = patrimonio.getLocalidadePorEstacao();
			localidades = localidadeDAO.getLocalidades();
			forward = mapping.findForward("listaEstacoes");
		} catch (DAOException e) {
			request.setAttribute("err", e.getMessage());
			forward = mapping.findForward("ERRO");
		}
		request.setAttribute("tipo", request.getParameter("tipo"));
		request.setAttribute("lista", request.getParameter("lista"));
		request.setAttribute("localidades", localidades);
		request.setAttribute("patrimonios", patrimonios);
		request.setAttribute("estacoes", estacoes);
		
		return forward;
	}
	
	public ActionForward grupo(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		
		PatrimonioDAO patrimonio = new PatrimonioDAO();
		GrupoDAO grupoDAO = new GrupoDAO();
		Collection grupos = null;
		Collection patrimonios = null;
		Collection estacoes = null;
		ActionForward forward = null;
		EstacaoDAO estacaoDAO = new EstacaoDAO();
		
		try {
			estacoes = estacaoDAO.getEstacoes(EstacaoDAO.ESTACAO_ATIVA);
			patrimonios = patrimonio.getGrupoPorEstacao();
			grupos = grupoDAO.getGrupos();
			forward = mapping.findForward("listaEstacoes");
		} catch (DAOException e) {
			request.setAttribute("err", e.getMessage());
			forward = mapping.findForward("ERRO");
		}
		request.setAttribute("tipo", request.getParameter("tipo"));
		request.setAttribute("lista", request.getParameter("lista"));
		request.setAttribute("grupos", grupos);
		request.setAttribute("patrimonios", patrimonios);
		request.setAttribute("estacoes", estacoes);
		
		return forward;
	}
	
	public ActionForward departamento(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		
		PatrimonioDAO patrimonio = new PatrimonioDAO();
		DepartamentoDAO departamentoDAO = new DepartamentoDAO();
		Collection departamentos = null;
		Collection patrimonios = null;
		Collection estacoes = null;
		ActionForward forward = null;
		EstacaoDAO estacaoDAO = new EstacaoDAO();
		
		try {
			estacoes = estacaoDAO.getEstacoes(EstacaoDAO.ESTACAO_ATIVA);
			patrimonios = patrimonio.getDepartamentoPorEstacao();
			departamentos = departamentoDAO.getDepartamentos();
			forward = mapping.findForward("listaEstacoes");
		} catch (DAOException e) {
			request.setAttribute("err", e.getMessage());
			forward = mapping.findForward("ERRO");
		}
		request.setAttribute("tipo", request.getParameter("tipo"));
		request.setAttribute("lista", request.getParameter("lista"));
		request.setAttribute("departamentos", departamentos);
		request.setAttribute("patrimonios", patrimonios);
		request.setAttribute("estacoes", estacoes);
		
		return forward;
	}
	
	public ActionForward inativas(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		
		EstacaoDAO estacaoDAO = new EstacaoDAO();
		Collection<EstacaoDTO> estacoes = null;
		ActionForward forward = null;
		
		/*
		 * Busca a lista de estações na camada de negócio
		 */
		try {
			estacoes = estacaoDAO.getEstacoes(EstacaoDAO.ESTACAO_INATIVA);
			
			//Repassa o atributo tipo para a JSP. tipo=[hardware][software]
			request.setAttribute("tipo", request.getParameter("tipo"));

			//Coloca a lista de estações como atributo para a JSP.
			request.setAttribute("estacoes", estacoes);
			
			//Seleciona qual tipo de listagem serão exibidas as estações
			request.setAttribute("lista", request.getParameter("lista"));
			
			//Retorna a pagina com a lista de estações
			forward = mapping.findForward("listaEstacoes");
		}catch(Exception e){
			//Retorna uma pagina com o erro ocorrido na camada de negócio
			request.setAttribute("err", e.getMessage());
			forward = mapping.findForward("ERRO");
		}

		//Retorna a lista de estações ou a descrição do erro
		return forward;
	}
}

o resto ta ai … plz help me!!!

Paulinha_NEXT

?UP

Pedrosa

Para obter os valores da sua action você pode usar o jstl:

Varrendo uma lista, em items vc coloca o nome informado no request.

<c:forEach var="estacao" items="${estacoes}">
${estacao.xpto}
</c:forEach>

Obtendo um outro tipo de objeto.

${tipo}

Obs: precisa de jstl.jar no projeto e a seguinte linha no inicio do seu JSP:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
Criado 23 de fevereiro de 2007
Ultima resposta 26 de fev. de 2007
Respostas 11
Participantes 5