Embora todos saibam da necessidade da regulamentação da profissão de ti como um todo, a qual venho esforçando-me na medida do impossível, chega uma hora que todos nós precisamos trabalhar “de verdade” ou empregar mão-de-obra, e a questão que surge é, qual a melhor forma de contratar alguém.
O freelance cresce absurdamente na área de Ti. Algo que era para ser uma modalidade de contratação para uma rápida empreitada, de não mais de três meses passa a ser a regra nas contratações de tecnologia. Conheço pessoas que são “freelancers” há anos em empresas, cumprindo horários, recebendo ordens, e remunerados para isso…
Mas porque o “freela” é a onda da vez?
Inicialmente não se deve confundir freela com empresa/firma individual ou informal. O empresário individual é pessoa jurídica com CNPJ, mas que não pode adotar uma denominação como “XPTO Sistemas”, tendo que usar firma, ou seja, o nome da pessoa física do empresário, como “José da Silva – firma individual” Já o informal é aquele que presta o serviço, enfia o dinheiro no bolso e dane-se, sem impostos, sem previdência, sem recolhimentos, sem encargos, ou seja, o que pensa só no “hoje”, assumindo correr riscos legais de ser ilegal. Um dia a casa cai com 100% de multa. Ou, como você explica seu carro importado e apartamento na praia sendo um desempregado ou sem contratos?!
Existe também o “informal quebrantado”, aquele que empresta nota de outras empresas, e que sempre vai ser contratado para o “servicinhos”, deixando os grandes para os que tem coragem de se constituir legalmente.
Emprestar nota é crime contra a ordem tributária.
O freelance se enquadra na legislação brasileira na modalidade de trabalho autônomo. Segundo a Lei 8212/1991, trabalhador autônomo é a pessoa física que exerce por conta própria atividade econômica de natureza urbana, com fins lucrativos ou não.
Isso mesmo, sem patrão, sem horário, sem salário, mas obedecendo preceitos e recebendo uma remuneração pela atividade. Você também não se vincula ao local de trabalho, podendo trabalhar, em casa, na praia, no shopping, enfim, o freela é independente e a princípio não tem exclusividade com um cliente. A aparente maravilha não é bem assim…
Não deve ser novidade aos leitores, mas o custo e o risco de um freela legal em uma empresa é maior. Este profissional pode emitir nota fiscal ou recibo de profissional autônomo (Famosas RPAs) cujos encargos são maiores do que o de uma pessoa jurídica prestadora de serviços (pj).
O contratante (seu cliente) tem que arcar com o Imposto de Renda do freela, na fonte, igualmente deve recolher 11% de INSS (a época da elaboração deste artigo). Já o freela deve ter um PIS e um Cadastro na Prefeitura, arcando com o ISS (Imposto sobre Serviços), por nota ou presumidamente. Moral da história, você é chamado para um serviço, a empresa pergunta se tem nota, e você diz que sim! Na hora de apresentar, dá uma de “João-sem-braço” e boom! A empresa recebe uma pancada para pagar. E se não recolher? Pode ser multada futuramente. E se recolher os encargos a menos achando que o freela era um PJ? Se o leão pegar, vai ter que realizar retificação de Imposto de renda na fonte e ainda pagar uma multinha.
Moral da história dois: A empresa vai pagar por seu serviço, mas “é o primeiro e último serviço que presta a ela”.
Para o empregado, acontece das empresas contratarem freela e simplesmente “esquecerem-se” ou assumirem os riscos da multa pelo não recolhimento do INSS (“esperticies brasileiras”), e então, naquela hora crítica da vida em que você mais precisar receber seu benefício previdenciário….Como diria o padre e sábio filósofo Quevedo: “Isto non ecziste!”
Assim como você é independente agora, deverá ser independente no futuro, sabendo que não terá direito a férias, 13º, FGTS, vale transporte, vale refeição, plano de saúde, e demais benéficos trabalhistas de um trabalhador vinculado. Por outro lado, é livre e pode contratar o número de clientes que sua capacidade física, temporal e mental suportar.
E por falar em benefícios trabalhistas. O Freela é mais caro que um PJ, para um serviço, mas para algumas empresas, não é mais caro que um empregado registrado e vinculado a ela, e que a qualquer momento pode ingressar com uma reclamação trabalhista parruda…
Pensando assim, advinhe o que alguns clarividentes fazem ?
Simples, vamos mandar todos os caras da ti embora, e fazemos uma proposta indescente do tipo: “A empresa passa por problemas, quem quiser continuar e suar a camisa terá que aceitar ser freela, ou seja, desligamos todos e contratamos de novo. Tudo fica praticamente como antes…” Revoltante?
É, você não é obrigado a saber de leis. Mas o espertalhão agora tem uma equipe que praticamente são trabalhadores vinculados, mas legalmente são freelancers, a um custo e risco mais baixos.
Existem empresas e “empresas”, e para o contratante honesto, é preciso dizer também que existem freelas e “freelas”. Cuidados são necessários. O primeiro deles é atentar para que da relação não se crie um vínculo de natureza trabalhista. Se o freela prova que fazia horário pontualmente, era insubstituível, tinha superior hierárquico, e recebia para isso, pronto, é o suficiente para a justiça declarar que de freela ele não tinha nada: ele era é empregado!
O Contratante deve sempre respeitar o objeto do contrato do freela, não solicitando ou permitindo que o freela faça nada além disso. (E como tem freela que faz mais do que deve só pra depois ingressar com uma reclamação trabalhista!) É interessante também formalizar um contrato, com cláusula expressa de ausência de vínculo, e exigindo a inscrição no Cadastro de Contribuintes do freela, bem como comprovação de regularidade tributária (de que está pagando os impostos).
Enfim, o freela deve ser entendido como um “meio-termo” entre o “empregado” que não tem condições de estruturar uma atividade empreendedora e o “empresário”, pessoa jurídica, que pode arcar com o ônus de um negócio próprio. Lembre-se, freela não é Pj, mas sim uma modalidade legal de se trabalhar profissionalmente e dentro da Lei. Embora mais oneroso às empresas, pode ser uma alternativa a uma grande parcela de pessoas da área de TI. No entanto, como toda a modalidade de trabalho, tem seus prós e contras, que devem ser analisados e sopesados com cautela em cada caso, tanto por parte do profissional, como por parte do tomador dos serviços.
Ao trabalho, fique esperto e, faça um seguro de vida!
A base para se utilizar esse tipo de serviço seria a facilidade e agilidade de ser implementado, sem maiores problemas na hora de executar a aplicação ou comunicação sem esquecer do fator e característica primordial do HTTPS: a segurança.
Apache com SSL, sua aplicação é conhecida como um servidor web capaz de fornecer por padrão criptografia baseada no protocolo SSL, utilizando o OpenSSL e SSLeay. A licença é BSD-Style e pode ser utilizada para fins comerciais e não comerciais.
Esse sistema foi criado pelo desenvolvedor Ben Laury, participante direto dos projetos Apache e OpenSSL.
SSL
Esse protocolo suporta uma variedade de diferentes algoritmos criptográficos, ou ciphers, para uso em operações de autenticação e do cliente, transmissão de certificados e estabelecimento de conexões.
Apache2
Como já sabemos, o Apache2 é um servidor web que quando combinado com o protocolo SSL se torna mais confiável pela questão da segurança de criptografia utilizada pelo protocolo.
HTTPS
É um protocolo ou conjunto de regras e códigos com uma camada de segurança que torna a navegação na internet mais segura, diferente do HTTP, que não dispõe do mesmo nível de segurança a navegação.
O HTTPS serve para que se estabeleça um dialogo entre os navegadores e os servidores da seguinte forma: os navegadores mandam mensagens para os servidores e as mesmas são encriptografadas, ou seja, embaralhadas de forma que somente os destinatários decifrem o seu conteúdo, com isso se agrega mais segurança entre a comunicação cliente servidor.
Pré-requisitos:
- Conexão com internet;
- Distribuição Ubuntu Linux (este tutorial foi validado no Ubuntu Desktop 7.10);
- Editor de texto (neste tutorial foi utilizado pico).
1° Passo:
É necessário que o usuário efetue o logon com o login de administrador, o “root”. Para configurar o uso do proxy, é preciso acrescentar as linhas no arquivo /etc/profile, usando o pico ficaria o seguinte comando:
# pico /etc/profile
Acrescentando as seguintes linhas com as devidas alterações do endereço ip e porta da rede:
http_proxy=”http://ip.do.servidor.proxy:porta”
ftp_proxy=”http://ip.do.servidor.proxy:porta” export http_proxy ftp_proxy
2° Passo:
É necessário fazer a atualização dos pacotes de instalações de serviços, o comando é o seguinte:
# apt-get update
3° Passo:
Feita essa atualização, será iniciada a instalação OpenSSL. O OpenSSL é uma implementação de código aberto dos protocolos SSL e TLS. A biblioteca implementa as funções básicas de criptografia e disponibiliza várias funções utilitárias. Para a instalação usamos o seguinte comando:
# apt-get install openssl
4° Passo:
Agora será instalado o Apache2 mais o complemento necessário para a ativação do SSL, o comando será o seguinte:
# apt-get install apache2 apache2.2-common
Se houver pedidos de confirmação durante este procedimento, o usuário deve confirmar com “s”. Em seguida será feita a habilitação do módulo SSL no Apache com o seguinte comando:
# a2enmod ssl
5° Passo:
O Apache2 com SSL funciona através de um certificado reconhecido na web. Para gerar o certificado (CSR) será necessário a criação de uma chave, essa chave deverá conter no mínimo 08 caracteres, a criptografia usada nessa chave é a DES3, essa chave ficará no arquivo server.key. De dentro do diretório onde ela ficará armazenada, o “/etc/ssl/private”, o usuário deve digitar o comando abaixo para criação da chave:
# openssl genrsa -des3 -out server.key 1024
6° Passo:
Com a chave criada é importante acrescentar informações. Após digitar o comando abaixo, ele pedirá a chave e para preencher alguns dados, são os dados que serão visualizados referentes ao criador do certificado:
# openssl req -new -key server.key -out server.csr
Toda vez que o usuário reiniciar o Apache2 ele pedirá a chave. Isso faz com que caso haja um restart por algum motivo, o serviço não suba pois dependerá da presença humana para a digitação. Os comandos abaixo fazem com que o Apache2 não peça a chave em caso de restart do serviço, ou seja, ele faz a autenticação automaticamente. O usuário deve entrar no diretório “/etc/ssl/private” e executar o comando abaixo:
# openssl rsa -in server.key -out server.key.insecure
Executado o comando acima, deverá feita a substituição do arquivo atual pelo criado. Antes desse passo o usuário deve fazer uma cópia de segurança do arquivo atual ou renomear o arquivo “server.key”. Com o comando abaixo será feita a renomeação e o arquivo permanecerá na mesma pasta:
# mv server.key server.bak
Após a renomeação do arquivo, será feita a renomeação do arquivo criado, que fará com que não seja mais pedida a chave quando houver restart do serviço. O comando será o seguinte:
# mv server.key.insecure server.key
7° Passo:
O certificado será criado com o comando abaixo:
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
8° Passo:
Será necessário efetuar a instalação da chave e do certificado anteriormente criados com os seguintes comandos:
# cp server.crt /etc/ssl/certs
# cp server.key /etc/ssl/privateNo comando para instalação do server.key vai dar uma mensagem, isso porque foi criado no próprio diretório onde ele seria instalado, se tivesse sido criado em outro diretório não haveria a mensagem.
9° Passo:
Agora serão efetuadas algumas alterações de configuração no Apache editando o arquivo /etc/apache2/sites-available/default. Usando o pico o comando será o seguinte:
# pico etc/apache2/sites-available/default
Dentro do arquivo, abaixo da linha “DocumentRoot /var/www/”, é necessário acrescentar as seguintes linhas:
SSLEngine on
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
10° Passo:
O HTTPS escuta sobre a porta de número 443. É necessário adicionar a linha abaixo ao /etc/apache2/ports.conf, se já não houver:
<IfModule mod_ssl.c>
Listen 443
</IfModule>
11° Passo:
Depois de instalado o certificado será feito o reinício do Apache2. Se o usuário optou pela instalação com o pedido da chave criada no início do tutorial, a chave será pedida toda vez que houver reiniciar o serviço, mas se o usuário efetuou os passos para a autenticação automática, o Apache2 não pedirá a chave, o comando será o seguinte:
# /etc/init.d/apache2 restart
12° Passo:
Feitos todos os passos do tutorial será feito um teste prático, o usuário deve criar uma pasta chamada “teste” dentro do “/var/www/”, o comando para criar é:
# mkdir /var/www/nome_pasta
Em seguida deve-se editar o arquivo /etc/apache2/sites-available/default com um editor de texto, usando o pico ficará:
# pico /etc/apache2/sites-available/default
Dentro do arquivo o usuário deve alterar as linhas que possuam “/var/www/” para “/var/www/teste/” (só serão duas linhas), assim estará sendo indicando o caminho para a pasta da página inicial.
Dentro da pasta “/var/www/teste/” deve-se criar o arquivo “index.html”. Para criar o arquivo dentro da pasta teste o usuário deve digitar:
# pico index.html
Inserir os códigos abaixo, depois salvar e sair:
<HTML>
<HEAD> <TITLE> Teste do Apache2 com SSL</TITLE></HEAD>
<BODY> teste efetuado com sucesso...</BODY>
</HTML>
Em seguida, no browser, para testar o endereço será o seguinte:
https://localhost/teste/
Será pedido para aceitar o certificado, pois o certificado criado no tutorial não será reconhecido automaticamente pelo browser como seguro. Para haver esse reconhecimento o criador da chave deve contratar uma autoridade certificadora para gerar o certificado a partir da chave gerada. Eessa autoridade de certificação é uma empresa autorizada a emitir, renovar e cancelar certificados digitais após verificar a identidade e a legitimidade da parte solicitante através de uma autoridade de registro. A principal autoridade de certificação é a VeriSign.
Referências
HTTPD – Apache2 Web Server, disponível em:https://help.ubuntu.com/7.10/server/C/httpd.html#https-configuration
Acessado em 10/11/08Certificados Digitais, disponível em:
http://www.speedhost.com.br/certificado-digital-ssl/faqs/index.phpAcessado em 10/11/08
Artigo escrito por Roberto Santos, Marcelo Gordiano e Elpidio Neri.
IExplorer RC1 – Acabado de sair oficialmente e para as mais recentes versões do Windows. O Internet Explorer 8 vem rechear a navegação na Internet de mais segurança e flexibilidade, agora também em português.

Com o Internet Explorer 7 a não ter o sucesso esperado por parte de empresa de Redmond e perdendo uma larga fatia de mercado no quesito de web browsers, este IE 8 será a derradeira aposta na tentativa de recuperar os utilizadores “migrados” para a concorrência (firefox, opera…).
De entre as inúmeras novidades, a maior parte delas já presentes nesta versão beta, destacam-se:
Barra de endereços melhorada: URL mais destacada (ex: www.pplware.com) de forma a evitar erros acidentais de endereçamento;

Gestão de separadores inteligente: a introdução de cores nos separadores tornam a navegação bastante mais intuitiva e organizada. Diferentes temas associam-se a diferentes cores;

Navegação InPrivate: permite ao utilizador uma navegação completamente anónima, não deixando dados como cookies, endereços, histórico, senhas…

Barra de pesquisa optimizada: com a introdução da tecnologia visual search é possível ao utilizador inserir uma pesquisa e obter dados aderentes automaticamente. Por exemplo, ao introduzir o nome de um cantor,música ou livro visualiza instantaneamente um conjunto de imagens(capas, albúns, fotos…);

Novo sistema Webslice: ferramenta semelhante ao RSS que permite ao utilizador subscrever um item específico de um determinado site, sendo actualizado automaticamente. Por exemplo, acompanhar um leilão no ebay, acções de uma determinada empresa, notícias de desporto…

Barra de pesquisa por correspondência: semelhante à função CTRL+F do Firefox, permite uma pesquisa por palavras de forma a encontrar correspondência dentro de um determinado site;

Sistema de sugestão de sites: aconselhamento personalizado de sites sugeridos ao utilizador, de acordo com os seus hábitos de navegação;

A nível de segurança, esta versão do IE8 apresenta um sistema anti-phishing mais aprimorado, assim como diversas melhorias a nível de estabilidade (comparativamente com a versão beta 1).
Referência também a um melhor sistema de backup. É agora possível reabrir separadores fechados anteriormente. Em caso de crash, o separador com problemas é fechado individualmente mantendo as restantes páginas intactas.
Saiba aqui mais sobre as novidades na RC1.
Observação:
Para instalar esta versão, terá de remover a versão anterior, para isso poderá ver este artigo.
Sistemas Operativos: Windows 2k/XP/Vista
Download [32bits]: IE 8 RC1 pt-pt | pt-br | en-us [14.15MB] Win Vista e server 2008
Download [64bits]: IE 8 RC1 pt-pt | pt-br | en-us [13.12MB] Win Vista e server 2008
Download [32bits]: IE 8 RC1 pt-pt | pt-br | en-us [16.18MB] Win 2003 e XP
Download [64bits]: IE 8 RC1 pt-pt | pt-br | en-us [13.12MB] Win 2003 e XP 64-bit
Homepage: Internet Explorer 8 Beta
Fonte: Peopleware
Todos os novos utilizadores de Linux, que possuam um modem ADSL via porta USB, têm geralmente dificuldades em configurar estes dispositivos. E quando o conseguem as “receitas” de sucesso que por vezes implicam a utilização do terminal, tornam-se penosas.

O UbuDSL pretende resolver este problema, disponibilizando uma aplicação gráfica bastante fácil e intuitiva de usar, para configurar este tipo de modems em Linux, trazendo com esta aplicação todos os driver que por vezes o Ubuntu ou outras distribuições não possuem.
Para conforto do utilizador, os autores do UbuDSL, disponibilizam um ficheiro deb para a versão 8.04 e 8.10 do Ubuntu, bem como o correspondente ficheiro rpm para OpenSuse 11, e para PCLinux.
Assumindo a versão do Ubuntu 8.10 como base para este artigo, depois de fazer download do ficheiro apropriado à versão instalada no sistema, é necessário clicar duas vezes sobre o ficheiro de modo a lançar o gestor de pacotes do Ubuntu, de seguida clicando sobre “Instalar Pacote”, irá se dar início ao processo de instalação .

Depois da instalação, do UbuDSL, este encontra-se em Sistema > Administração > UbuDSL Connection Configuration

Depois de lançar a aplicação de configuração do UbuDSL, o utilizador deve se certificar que não tem o modem a detectar ligado, assim que a verificação for feita e de modo a continuar para o passo seguinte, deve-se carregar no canto inferior direito na opção “Next”
De seguida, o utilizador deve escolher o campo país para Portugal, e configurar a opção “Service” para o serviço ADSL que usufrui, para serviços não listados, o utilizador pode carregar na opção Custom Settings, e configurar opções específicas do provedor ADSL tal como, Protocolo VPI e VCI.
Assumindo que se selecciona um dos serviços já disponíveis o processo de introdução dos dados de acesso é bastante fácil e intuitivo

Seleccionando Next, é altura de ligar o modem respectivo, e esperar que tudo seja devidamente detectado e configurado.

Caso seja esse o caso, será apresentado um ecrã de conclusão do processo. Depois deste passo final é aconselhável reiniciar a máquina, de modo a que alguns drivers de modem instalado sejam recarregados e o deamon (“serviço”) do UbuDSL seja carregado.
Depois de reiniciado o computador, é fácil o utilizador ter controlo do seu modem, o UbuDSL disponibiliza para esse efeito um Applet, acessível em Aplicações > Internet > UbuDSL Applet.
Através desse applet pode-se desligar, ligar, e re-estabelecer a ligação do modem ao provedor ADSL. O applet pode ainda ter as suas funcionalidades estendidas através so sistema de plugins que inclui.

Como nota pessoal, penso que nos casos em que seja difícil de instalar um modem adsl, o melhor é adquirir um router ADSL, que hoje em dia é um tipo de dispositivo fácil de adquirir a um preço acessível. Para todos os utilizadores que não se querem dar ao trabalho de o fazer, por questões financeiras, ou de não terem paciência para andar a tentar seguir instruções à base de “hacks” em consola, esta é sem dúvida a melhor opção.
Licença: Freeware.
Sistema Operativo: GNU/Linux
Download: UbuDSL 1.0 [13.07MB]
Homepage: UbuDSL
Face ao crescente número de computadores infectados pelo vírus Downadup ou Conficker, a Microsoft tem uma sugestão para os utilizadores: formatem o computador e reinstalem o sistema operativo. A informação está disponível na página da INTECO que recolhe algumas informações fornecidas pela fabricante norte-americana.

O centro adverte que um grande número de utilizadores ainda não instalou a actualização critica publicada pela Microsoft a 23 de Outubro do ano passado, o que facilita a propagação mundial do vírus.
Alguns especialistas avançam até que apenas uma terça parte dos utilizadores Windows descarregaram a actualização e tentaram solucionar o bug que afectava o Internet Explorer e que agora é explorado pelo Conficker.
A companhia sugere que todos os utilizadores accionem a função de actualização automática do Windows Update para que, desta forma, seja assegurada a instalação de novas correcções lançadas pela Microsoft.
O vírus em questão tem feito várias vítimas nos últimos meses. Actualmente estima-se que entre 10 a 20 milhões de PCs em todo o mundo estejam infectados pelo código malicioso. TeK
Tenho visto que muitas vezes, para pessoas que nunca trabalharam com PHP e Oracle, é um tanto quanto difícil. Embora seja simples, conexão PHP com Oracle exige um conhecimento a mais do que com os outros bancos.
Tudo começa nas configurações do PHP. Precisamos descomentar as bibliotecas responsáveis pelo conexão com Oracle.
Configurando o PHP
No Windows, vá até o diretório de instalação do Apache.
1 – Edite o arquivo \apache\php.ini
2 – Busque pela linha ;extension=php_oci8.dll descomente-a tirando o ponto e vírgula de seu início.
2 – Busque pela linha ;extension=php_oracle.dll descomente-a tirando o ponto e vírgula de seu início.
3 – Salve o arquivo editado e reinicie o apache.
No Linux, vá até o diretório /etc/phpX*/apache (onde o “X” de phpX é a versão do PHP)
1 – Edite o arquivo /etc/phpX*/apache/php.ini
2 – Busque pela linha ;extension=oci8.so descomente-a tirando o ponto e vírgula de seu início.
3 – Caso ela não exista no arquivo, deverá ser inserida. Pode inseri-la no fim do arquivo mesmo sem problemas.
Criando a conexão com o Oracle via PHP:
<?php
//Nome de usuário do banco de dados, nesse exemplo usei um usuário
//padrão do oracle,
//caso não dê certo é por que ele deve ter sido deletado ou a senha
// alterada após
//a instalação do oracle.
ora_user = "scott";
//Senha do usuário no banco de dados.
ora_senha = "tiger";
//Nesse bloco do código, especificamos as definições do banco de dados,
//como o protocolo
//de comunicação o protocolo utilizado foi o TCP, o ip do servidor onde
//se encontra o banco de dados
//e a porta de conexão , geralmente por padrão a porta utilizada pelo
//Oracle é a porta 1521,
//caso não dê certo com a porta 1521, alguém pode ter alterado-a no
//durante a instalação,
//e por último a instância do banco que aqui utilizamos a instância ORCL.
//Caso não dê certo nessa instância é por que no momento da instalação ela
//foi criada com um nome diferente.
ora_bd = "(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)
(HOST=192.168.0.2)(PORT=1521)
)
)
(CONNECT_DATA=(SERVICE_NAME=ORCL))
)";
//Nesta linha fazemos a conexão com o banco usando os variáveis preenchidas
//anterior mente, logo em seguida fazemos uma verificação, se a conexão ocorreu
//com sucesso, será impresso na tela uma mensagem avisando nos de tal,
//caso não, ele imprimirá na tela uma mensagem avisando que houve um erro
if (ora_conexao = OCILogon(ora_user,ora_senha,ora_bd) )
echo "Conexão bem sucedida. Usuário conectado: ora_user";
else
echo "Erro na conexão com o Oracle.";
?>
Agora é só começar a programar mais!
Todos sabem que a validação de formulários é algo primordial para a manutenção da “saúde” de qualquer aplicação. Neste caso, em especial, uma aplicação web. Sem qualquer tipo de validação, você poderá ter inconsistências em seu banco de dados com informações inseridas de forma incorreta pelos usuários.
O Struts implementa o padrão MVC (Model-View-Controller) fazendo com que sua regra de negócio fique separada da parte visual de sua aplicação. Se quiser saber um pouco mais sobre Struts antes de prosseguir, leia esta matéria publicada aqui no iMasters.
Então, vamos ao que interessa: o exemplo! Para quem é iniciante em Java e/ou não conhece o NetBeans, vou prosseguir com o artigo passo a passo com as telas apresentadas pela IDE.
Primeira Etapa – Criando uma aplicação web no NetBeans
- Abra o seu NetBeans;
- Vá em File > New Project;
A tela exibida será a seguinte:

- Selecione em Categories a categoria Web e em Projetcs, Web Application.
Na tela seguinte você irá inserir um nome para o seu Projeto e a pasta em que ele será salvo. Vou chamar o meu de ProjetoStruts.
Acompanhe os passos até chegar ao quarto passo de criação conforme tela abaixo:

Nesta tela você selecionará os Frameworks que serão utilizados na aplicação:
- Selecione o Framework Struts.
- Altere em Application Resource o nome do package inserindo o nome de seu Projeto no lugar de myapp. No meu caso ficou: com.projetostruts.struts.ApplicationResource
- Finalize a criação.
Segunda Etapa – Criação do formulário
Antes de qualquer coisa, você deve ter percebido que foram criados dois arquivos em seu Projeto, dentro da pasta WEB-INF: index.jsp e welcomeStruts.jsp.
Se você rodar o seu Projeto pressionando a tecla F6, você observará no browser o funcionamento do Framework Struts.
Vamos então criar nosso formulário:
- Abra o arquivo index.jsp
- Edite o index.jsp para deixá-lo com o seguinte código:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<html:html>
<head>
<title>Trabalhando com Struts</title>
<style>
.visualInputErro {
border: 1px solid #b22222;
font-family: Arial, Helvetica, sans-serif;
color: #666666;
background-color: #ffe4e1;
}
</style>
</head>
<body>
<html:form action="login">
<table border="0">
<thead>
<tr>
<th colspan="2"><html:errors property="status"/></th>
</tr>
</thead>
<tbody>
<tr>
<td><bean:message key="login.usuario" /></td>
<td><html:text property="usuario" errorStyleClass="visualInputErro"/></td>
</tr>
<tr>
<td><bean:message key="login.senha" /></td>
<td><html:password property="senha" errorStyleClass="visualInputErro"/></td>
</tr>
<tr>
<td colspan="2"><html:submit value="Login"/></td>
</tr>
</tbody>
</table>
</html:form>
</body>
</html:html>
Terceira Etapa – Criação das Ações
Vamos então criar as ações que validarão nosso formulário.
- Clique com o botão direito sobre o seu projeto, selecione New > Struts ActionForm Bean:

- Em Class Name digite: AcaoFormLogin
- Ajuste o Package para com.projetostruts.struts
- Neste arquivo você realizará a validação dos campos que virão do formulário. Edite o arquivo AcaoFormLogin.java conforme abaixo:
package com.projetostruts.struts;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
/**
*
* @author Gustavo
*/
public class AcaoFormLogin extends org.apache.struts.action.ActionForm {
private String usuario;
private String senha;
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public AcaoFormLogin() {
super();
// TODO Auto-generated constructor stub
}
@Override
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
boolean flag = false;
if (getUsuario() == null || getUsuario().length() < 1) {
errors.add("usuario", new ActionMessage("error.usuario.required"));
if (flag == false) {
errors.add("status", new ActionMessage("error.status"));
flag = true;
}
}
if (getSenha() == null || getSenha().length() < 1) {
errors.add("senha", new ActionMessage("error.senha.required"));
if (flag == false) {
errors.add("status", new ActionMessage("error.status"));
flag = true;
}
}
return errors;
}
}
Vale ressaltar que neste arquivo a única validação que estou fazendo é se o campo é nulo ou se há algum texto digitado nele. Outras validações poderão ser implementadas de acordo com a necessidade.
Vá ao arquivo ApplicationResource.properties no package com.projetostruts.struts. No final do arquivo, insira o seguinte código:
login.usuario=Usuário
login.senha=Senha
error.usuario.required=O campo 'Usuário' deve ser preenchido
error.senha.required=O campos 'Senha' deve ser preenchido
error.status=Os campos destacados são de preenchimento obrigatório
Observe que este código descreve o retorno que será dado caso um dos erros tratados no arquivo AcaoFormLogin.java apareça. Neste exemplo, apesar de declarar as mensagens de erro para usuário e senha, eu destacarei o input que apresentou erro através do estilo .visualInputErro declarado no arquivo index.jsp.
Vamos então criar outro arquivo:
Clique com o botão direito sobre o pakage com.projetostruts.struts, selecione New > Struts Action.
- Em Class Name digite: AcaoLogin
- Ajuste o Package para com.projetostruts.struts
- Em Action Path, digite: /login
- Pressione next
- Em Input Resource, localize o arquivo index.jsp
- Em Scope, selecione request e finalize.
Neste arquivo que foi criado, AcaoLogin.java, você notará a palavra success. Eu costumo alterá-la para descrever melhor o tipo de sucesso que foi obtido. Então, altere para: successLogin
- Encontre a pasta Configuration Files e abra o arquivo struts-config.xml
- Encontre a seguinte linha de código:
<action input="/index.jsp" name="AcaoFormLogin" path="/login" scope="request" type="com.projetostruts.struts.AcaoLogin"/>
Altere-a e deixe conforme segue:
<action input="/index.jsp" name="AcaoFormLogin" path="/login" scope="request" type="com.projetostruts.struts.AcaoLogin">
<forward name="sucessLogin" path="/login"/>
</action>
Quarta Etapa – Criação do Servlet
Nesta etapa vamos criar o Servlet que será responsável por tratar os dados. Como o objetivo deste artigo é apenas demonstrar o funcionamento do Struts, o Servlet criado não executará nenhuma ação, apenas irá encaminhar para a página login.jsp a ser criada.
- Crie um novo package denominado com.projetostruts.conexao
- Crie nesse package um Selvlet chamado Login.java
- Na tela de configuração do Servlet, ajuste a URL Pattern para: /login

No Servlet Login.java, localize o método processRequest e altere-o conforme abaixo:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
response.sendRedirect("login.jsp");
} finally {
out.close();
}
}
Mais uma vez lembrando que este Servlet apenas redireciona para a página login.jsp.
Quinta Etapa – Criação do Destino
Nesta última etapa, vamos criar o arquivo destino que mostrará o sucesso da validação:
- Clique com o botão direito na pasta Web Pages e crie um novo arquivo chamado login.jsp
- Edite o arquivo conforme abaixo:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login</title>
</head>
<body>
<h2>Todos os campos foram preenchidos!!!</h2>
</body>
</html>
Está pronto! Esse é o conceito básico do Struts e espero que tenha ajudado.
WiFi Hopper v1.2

WiFi Hopper WLAN é um utilitário que combina as características de uma rede Discovery e Site Survey com uma ferramenta Connection Manager.
Sporting um arsenal completo de informações de rede, filtros, gráficos e de RSSI built-in GPS apoio, WiFi Hopper é inestimável para a identificação e caracterização avançada de dispositivos sem fio vizinho.
Além disso, WiFi Hopper pode se conectar a quirografários, WEP, WPA-PSK e WPA2-PSK redes diretamente de dentro do aplicativo. Com editáveis e perfis de rede dedicada Gerenciador de conexão de modo de execução, WiFi Hopper pode ser usado como um substituto significativamente mais transparente para o Windows eo fabricante forneceu-clientes sem fio.
WiFi Hopper engloba um conjunto recurso destinado a uma ampla variedade de públicos, incluindo administradores de rede sem fio, Security Professionals, programadores, QA Engenheiros e Usuários avançados.
Download aqui
Nessa primeira parte, vamos criar uma página JSP. Abra o sua IDE (nosso caso Netbeans) e siga os passos abaixo:
- Clique em file -> new file
- Na tela que aparece, escolha, em categories WEB e em files types JSP.
- Clique em next e, na próxima tela, no campo JSP File name, dê um nome ao seu arquivo JSP (eu chamei de paginaform).

- Feito isso, clique em finish
- Feito isso, crie outra página em JSP, chamada contas.
Dentro de <body> </body> do arquivo paginaform.jsp, digite o código abaixo que é o nosso formulário:
<!--quando o cliente clicar em enviar vai para pagina de contas.jsp-->
<form action="contas.jsp" method="POST">
Usuario:<input type="text" name="usuario"/><br>/>
Senha:<input type="password" name=senha"/><br>
<input type="submit" value="logar/>
</form>
Na página de contas.jsp, dentro do <body>, digite o código abaixo:
<%
//recebe o valor digitado no campo usuario
String usuario = request.getParameter("usuario");
//recebe o valor digitado no campo senha
String senha = request.getParameter("senha");
if(usuario.equals("camilo")&& senha.equals("123")){
//Exibi o nome do usuario
out.println("Seja bem vindo " + usuario);
}
else{
out.println("Usuario ou senha invalidos");
}%>
Objeto Request
Esse objeto foi o responsável de pegar o resultado que vinha do formulário.
Salve e teste a página executando no browser a http://localhost/suaaplicacao/paginaform.jsp
Agora informe os dados no formulário e clique no botão enviar.
Simples pegar dados de um formulário em JSP não? Lembrando que o objetivo aqui era mostrar como obter dados de um formulário em JSP, que é através do request. Usei como exemplo uma pagina simples de login e senha.
Outra importância desse recurso é para sistema de busca. Imagine que você quer saber tudo que seu cliente digitou no campo de busca do seu site enquanto ele estava navegando? Importante isso não?

Opa! Pessoal! que tal começar o ano, mudando de emprego? Vindo para uma empresa sólida e com mais de 100 anos de história? Claro que estou falando da IBM. Apesar da crise financeira a IBM foi uma das multinacionais que não sofreu com a crise. Pelo contrário em algumas áreas houve crescimento devido a crise.
No blog do Juliano Martins (Arquiteto TI – IBM) vocês podem conferir as áreas disponíveis. Somente para adiantar temos vagas para SP, Hortolândia, homeoffice etc.
Quem tiver interesse favor me enviem o curriculo, caso encontre uma vaga de acordo com seu perfil, receberá um contato de imediato.
Um detalhe todas as vagas precisam de INGLES no minimo intermediário.
o que seria intermediario para IBM?
- Listening:capaz de participar das reuniões
- Speaking:capaz de dar uma resposta coerente
- Read/Write:capaz de ler e escrever
Os curriculos sem inglês serão descartados automaticamente.
Próxima Página »