Monthly Archives: September 2007

Google fora do ar? Sim, isso aconteceu…

É isso mesmo que vocês estão lendo no título desse post, o Google estava fora do ar (e ainda estava quando iniciei esse post). Hoje caí da cama e acordei por volta das 07:00 am. Como de costume acessei meu e-mail, que não é novidade ser Gmail, e dei de cara com um erro de conexão. Não acreditei, iniciei o GTalk e me conectei, mas também obtive uma resposta de erro.

Não acreditando ainda neste fato, acessei o link mais famoso da internet, www.google.com, e dei de cara com o mesmo erro de conexão. Mas como sou persistente ainda tentei um último link (www.google.com/analytics) sem sucesso.

Fato: não pude ver meus e-mails, possuo 3 contas no Gmail e tem muita coisa para ler.

Conclusão: estamos presos ao Google, há muito tempo eu dizia para meus amigos em mesa de bar que o Google está dominando calmamente a Internet. Eu me tornei dependente dele. 🙂

googleforadoar3.jpggoogleforadoar2.jpggoogleforadoar1.jpg

Struts2, o início

Como prometido, irei iniciar uma série de posts sobre o Struts2. E para começar, vamos aprender a configurar o básico para a sua utilização em projetos.

Primeiro, crie a estrutura de diretórios abaixo (como IDE utilizei o Eclipse) e baixe o arquivo struts-2.0.9-lib.zip, precisaremos das libs mostradas na imagem.

estruturadoprojeto.jpg

 

 

Web.xml

Edite o web.xml do seu projeto e adicione as linhas abaixo. A classe FilterDispatcher é o filtro do Struts2, ela é responsável por todas as requisições da aplicação.
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

struts.xml

Esse é o arquivo de configuração, onde ficam as informações como: actions, forwards, interceptors, plugins, etc. Por questão de visualização e organização, criei o arquivo helloworld.xml para manter o arquivo de configurações do Struts2 mais legível. Não era necessário criar esse arquivo (helloworld.xml), porém já imaginou o tamanho que seria esse arquivo em um projeto real?

<struts>

<constant name=”struts.enable.DynamicMethodInvocation” value=”false” />
<constant name=”struts.devMode” value=”true” />

<include file=”helloworld.xml”/>

</struts>

helloworld.xml

Principais atributos:

  • package name: nome do pacote;
  • namespace: nome no qual poderá ser utilizado nos formulários e nas URLs ;
  • action name: atributo que define o nome da action
  • class: caminho completo da action
  • result name: nome para o forward ou resultado. Informa para qual JSP a página será direcionada.

<struts>
<package name=”helloworld” namespace=”/helloworld” extends=”struts-default”>

<action name=”HelloWorld” class=”org.carneirorafael.HelloWorld”>
<result name=”SUCCESS”>/helloworld/HelloWorld.jsp</result>
</action>

</package>
</struts>

HelloWorld.java

A classe HelloWorld é a action POJO (Plain Old Java Object) do Struts2. Ela estende a classe ActionSupport e sobrescreve o método execute. Possui o atributo mensagem que é uma String e tem seus métodos acessores. Ao chamar a URL http://seuHost:suaPorta/strutsbegin/helloworld/HelloWorld.action o método execute é chamado e este configura o atributo mensagem, através do método acessos setMessage.

//imports

public class HelloWorld extends ActionSupport {

private static final long serialVersionUID = 7407988331733714918L;

private String mensagem;

@Override
public String execute() throws Exception {
this.setMessage(“HelloWorld com o Struts2!”);
return “SUCCESS”;
}

public String getMensagem() {
return this.mensagem;
}

public void setMessage(final String message) {
this.mensagem = message;
}
}

HelloWorld.jsp

E por fim, a JSP na qual exibirá os dados na tela através da tag <s:property>. Essa tag pega o valor do atributo mensagem que se encontra na action.

<%@ page contentType=”text/html; charset=UTF-8″ %>
<%@ taglib prefix=”s” uri=”/struts-tags” %>
<html>
<head>
<title>HelloWorld com Struts2</title>
</head>

<body>

<s:property value=”mensagem”/>

</body>
</html>

Conclusão

Está muito fácil configurar um projeto e fazer um helloworld no Struts2. E é porque eu não utilizei as anotações (annotations). Irei continuar escrevendo mais posts sobre esse framework, tentando expor suas novas funcionalidades e características. Espero que esse post possa ajudá-lo a conhecer um dos frameworks MVC mais conhecidos do mercado.

Download

Struts2Begin

Comparações entre frameworks web

Hoje estava lendo notícias no javalobby e vi uma pesquisa feita nos E.U.A sobre os frameworks web mais utilizados entre 2005 e 2007. E como todos já sabem (ou pelo menos deveriam saber), o framework web mais utilizado (que por sinal deixou os concorrentes comendo poeira) é o JSF, mais conhecido como JavaServer Faces. Há um bom tempo venho observando a quantidade de empresas que estão adotando essa tecnologia para o desenvolvimento de seus projetos, bem como o aumento de desenvolvedores que utilizam esse framework, seja em suas empresas ou em projetos pessoais.

Venho observando também o excelente leque de opções de bibliotecas feitas em cima do JSF que facilitam a vida dos desenvolvedores, entre elas: ajax4jsf e myfaces.

É interessante também observar a briga entre o Spring MVC e o Ruby on Rails.

Pesquisa nos E.U.A sobre os frameworks web

Por que será que o Struts2 está perdendo a pouca popularidade que teve quando foi lançado? Essa pergunta será respondida em breve.