| Autor |
Mensagem |
|
|
Infelizmente você realmente errou as duas questões.
Na primeira questão, o ArrayList realmente implementa um array dinâmico para que o programador não precise se preocupar em pré-alocar o tamanho real do array. No código-fonte, ele usa um array normal de Java para guardar os dados na mesma ordem em que foram inseridos, logo é uma estrutura linear com contiguidade.
Na segunda questão, é uma típica pegadinha de concurso público. Uma classe Java nessas provas de concurso sempre são associadas a tipos estruturados, numa clara alusão aos structs de C e records de Pascal. String é uma classe dentro da linguagem Java e portanto, é um tipo de dados estruturado.
Não fique triste, també já cai um monte nessas questões de concurso até aprender a como lidar com elas.
|
 |
|
|
Até onde eu saiba, o JBoss usa o Tomcat internamente para gerenciar os serviços web.
No site do JBoss tem assim: "JBoss AS is the #1 Java application server on the market. What makes it even better is the fact that it integrates Hibernate, Apache Tomcat, EJB 3.0, and JBoss Cache into its microkernel foundation so you don't have to."
Se ele usa o Tomcat como gerenciador de web então o problema deve ser impressão de vocês ao usar os produtos. Ou não... Sei lá...
|
 |
|
|
Reizin,
Nosso colega falou para colocar um alias para cada tabela. Logo, ficaria assim:
Agora é só fazer rs.getInt("P.cd_pessoa") que vai funcionar.
|
 |
|
|
Na página principal do site do Struts 2 tem assim:
Apache Struts 2 was originally known as WebWork 2.
O Struts 2 é o WebWork 2. A mudança do nome foi apenas apelo comercial segundo eu li numa mensagem da lista de usuários postada pelo líder do projeto. O Webwork originalmente já era um fork do projeto Struts. O que aconteceu agora é que eles pararam com as briguinhas e resolveram unir-se novamente.
Com relação a se vai pegar ou não, ninguém aqui tem bola de cristal para saber. Mas eu pessoalmente, já estou migrando minhas aplicações lá na empresa (sempre que uma manutenção mais pesada acontece) para a nova versão. Eu sempre gostei de Struts. Já tentei usar o JSF e achei muito complicado.
Isso é uma opinião pessoal minha. Não estou aqui falando pra ninguém deixar de usar JSF e passar a usar Struts (como eu vejo algumas pessoas aqui no GUJ fazendo com ocontrário) porque eu acho que somos analistas de sistemas e temos que usar o que é mais adequado ao contexto (incluindo aí não só o sistema como o ambiente organizacional).
|
 |
|
|
A melhor fonte de documentação até o momento é o próprio site do Struts 2:
http://struts.apache.org/2.x/
No menu lateral esquerdo, vc tem uma seção chamada Documentation. Na opção Guides você será levado a todos os guias de ajuda sobre o Struts 2. acho que o que você quer é a Tag Developers Guide.
|
 |
|
|
|
Eis um exemplo para a situação que você colocou.
|
 |
|
|
Uma vez eu tentei usar o JSF num projeto pequeno aqui na empresa e me prendi nesta questão e acabei não conseguindo solucionar.
Urubatan, você poderia colocar um exemplo de como fazer isso?
Obrigado.
|
 |
|
|
Salvador - BA
Bairro: Brotas
Características: Bairros de fácil acesso a todos os pontos da cidade com ônibus. Padrão classe média. Pertinho da maior zona comercial de Salvador, a região do Iguatemi.
AP com 2 quartos: aluguel variando de 350 a 500 reais, iptu +/- 60 reais e condominio variando de 50 a 100.
Preço da passagem de onibus: R$ 1,70
Refeição: PF por 4,00, buffet por 9,90 e peso do quilo variando de 17 a 22 reais.
|
 |
|
|
Ou você pode usar o Struts 2!
http://struts.apache.org/2.x/
Struts 2 é a soma do Struts + WebWork + Spring.
|
 |
|
|
Este assunto já foi tema de uma edição da revista MundoJava.
Sempre que formos trabalhar com valores monetários em Java devemos usar a classe java.math.BigDecimal. Os métodos desta classe manipulam os valores como o bom e velho Cobol, usando lógica decimal (lógica humana). A classe java.lang.Double e seu primitivo manipula os valores usando lógica de ponto flutuante e assim gera erros de precisão durante os cálculos decimais.
|
 |
|
|
Eu uso o Eclipse 3.1.2 com o plugin WTP 1.0.2 e com o plugin Tomcat Launcher da Sysdeo. Fazemos todos os sistemas somente com esse ambiente.
Estou aprendendo o Struts 2 somente com a documentação do website da Apache e pesquisando nos fóruns usando o Google.
|
 |
|
|
Convertendo para o Struts 2, a aplicação manteve a mesma estrutura: JSP+Action -> Model (método estático) -> DAO e o Model (métodos get e set) transitando nas 3 camadas. Esta estrutura já havia sido pensada assim para poder trocar o framework no nível JSP+Action no futuro.
Reaproveitei todos os Models e DAO's, sem mexer em nenhuma linha de código destes. Reaproveitei também os JSP's mas estes tiveram que ser reajustados para as novas tags do Struts 2.
Meu struts.xml agora ficou assim:
Como falei antes, não consegui fazer o Tiles funcionar no Struts 2 apesar do que está escrito na documentação. Pode ser um bug que seja resolvido na próxima versão beta. Então resolvi voltar a fazer includes nos JSP's com a tag <s:include/> do novo framework.
Consegui também fazer o código de paginação ficar isolado e genérico num JSP separado e funcionar em todas as telas sem precisar reescrever nada.
Paginacao.jsp
TabelasAtividades.jsp
TabelasAtividadesCadastro.jsp
TabelasAtividadesDetalhes.jsp
Antes, para saber se um usuário estava logado no sistema, eu tinha que ter um if em cada método das Actions. Agora o Struts já vem com o conceito de interceptador e eu aproveitei ele para fazer isso.
AutenticacaoInterceptor.java
Minha GenericAction ficou assim:
Criei uma classe para auxiliar as Actions:
E finalmente, assim ficou minha AtividadeAction.java:
Também não consegui fazer a validação funcionar para os métodos separadamente, então optei por não usar a validação em XML e sim na action. Com isso ganhei debug mas tô tendo um pouco mais de copy-paste.
Qualquer dúvida, é só perguntar.
|
 |
|
|
Atendendo ao seu pedido, vou colocar aqui um exemplo de como se transformaram as minhas Actions.
Antes gostaria de explicar que na minha aplicação, o Model e o Façade são uma única peça. Os métodos get e set funcionam como todos já sabemos e os métodos estáticos funcionam como serviços para a aplicação relativos ao assunto daquele model. Portanto, a aplicação tem a seguinte estrutura: JSP+Action -> Model (método estático) -> DAO e o Model (métodos get e set) transitando nas 3 camadas.
Meu struts-config.xml (Struts 1) estava assim anteriormente:
Todos os meus DynaForms tem as propriedades pag* para realizar a paginação dos registros na tela (a nível de banco de dados). A propriedade act é para execução dinâmica de métodos nas Actions do tipo DispatchAction.
As Actions do tipo ForwardAction são para integração com o Tiles.
As demais Actions que são descendentes de DispatchAction agrupam funcionalidades semelhantes em dois grupos separados. *ConsultaAction são os métodos para visualizar a tela, processar pesquisa (filtragem) e ver detalhes de um registro. *CadastroAction são os métodos para iniciar a inclusão de um registro, processar a inclusão do registro, iniciar a edição do registro, processar a edição do registro e processar a exclusão do registro.
Meu validation.xml estava assim:
Meu tiles-defs.xml estava assim:
Agora vou começar a mostrar como estavam os JSP's da aplicação. As páginas são sempre em grupos de 3: uma para visualizar e pesquisar registros (exibindo uma grid), uma para visualizar os detalhes de um registro, e outra para visualizar o formulário de cadastro (inclusão e edição).
TabelasAtividades.jsp
TabelasAtividadesCadastro.jsp
TabelasAtividadesDetalhes.jsp
Como citei anteriormente, as minhas Actions combinam dois grupos de funcionalidades. Para este grupos eu tenho duas classes genéricas de Actions. E estas duas ainda extendem de uma mais genérica ainda.
GenericAction.java
GenericConsultaAction.java
TabelasAtividadesConsultaAction.java
GenericCadastroAction.java
TabelasAtividadesCadastroAction.java
Este é um exemplo para ter uma idéia de como estava o meu código com o Struts 1.
No próximo post eu vou colocar como ficou o código como Struts 2.
|
 |
|
|
Eu não somente tive a impressão de que agora está bem mais produtivo como senti isso ao migrar o projeto que estava em desenvolvimento aqui para o novo framework.
Não sinto falta nenhuma dos dynaforms que usava na aplicação. Agora o trabalho ficou muito melhor e mais fácil. Repetição de código praticamente não existe com o novo framework o que está tornando o código mais limpo e fácil de compreender.
Não pretendo integrá-lo com Spring porque nunca usei este framework. Aqui sempre utilizamos Actions (Struts) + Façade + Model + DAO (sem e com Hibernate). Mas com o Spring já integrado ao Struts 2 talvez eu passe a olhar mais para esse lado.
Nesta versão nova, tive dificuldades em fazer a validação apenas para alguns métodos das minhas actions e em usar o Tiles. Então acabei fazendo a validação dentro de um método específico da action (implementando uma interface do framework) e retirando o tiles para usar includes nos JSPs.
|
 |
|
|
Estamos iniciando um projeto aqui na empresa com o Struts 2.0.1 beta pois acreditamos na evolução dessa versão do framework. O projeto já havia começado com o Struts 1.2.9 e estamos migrando o que já havia sido desenvolvido para a versão 2.0.1. Até o momento só tivemos problemas na composição das telas com o Tiles (daí estamos migrando para Freemarker) e na validação dinâmica (então estamos construindo a validação dentro das actions mesmo).
|
 |
|
|
|
|