segunda-feira, 10 de janeiro de 2011

Cinco motivos para lançar logo o seu projeto

Recomendação de leitura:

Vários projetos web ficam muito tempo em desenvolvimento para serem lançados, o que pode ser uma falha. Veja alguns argumentos a favor de não esperar demais.

Por Thiago Nunes
Vários projetos web passam uma eternidade sendo desenvolvidos antes de serem lançados. Esta demora pode ser uma falha. Portanto, lance o seu o quanto antes.
Quando me refiro a projetos quero dizer projetos web que envolvem uma grande interação e novas experiências com os usuários. Pode ser um CMS, um e-learning, um portal, uma loja virtual etc.
Os projetos de sucesso, pelo menos a maioria deles, começam aos poucos e são aprimorados com o tempo, sobretudo acompanhando a necessidade real do usuário (quem, de fato, usa o sistema).
Para defender melhor esta ideia, listo abaixo alguns argumentos e dicas para você e seu o projeto web.
Por que lançar seu projeto o quanto antes?

Continue lendo no WebInsider...

http://webinsider.uol.com.br/2011/01/02/cinco-motivos-para-lancar-o-seu-projeto-o-quanto-antes/.


quarta-feira, 20 de janeiro de 2010

Upload de arquivos em Java Struts

Cá estou eu novamente... ansioso pelo treinamento da semana que vem (ESRI - ArcObjects com Java e Aplicações com ArcGIS Server JAVA) e Também esperançoso pelos belos horizontes que estão por vir.


Vamos ao que importa, hoje estava escrevendo uma classe simples para um amigo de upload de arquivos no framework Struts.




Aqui temos a classe Action:

package br.cbenato.upload;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileUpload;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.upload.FormFile;

public class UploadAction extends Action {

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        boolean isMultipart = FileUpload.isMultipartContent(request);
        boolean uploadDone = false;
        ActionErrors errors = new ActionErrors();
        ActionForward forward = new ActionForward();
        //Verificando se é uma requisição multipart
        if (isMultipart) {
            // Pegando o formulário
            UploadForm uploadForm = (UploadForm) form;
            //Pegando o File do formulário
            FormFile formFile = uploadForm.getMyFile();
            //Pegando o nome do arquivo
            String strFileName = formFile.getFileName();
            //Pegando os dados contidos dentro do arquivo que foi feito o upload
            byte dataFile[] = formFile.getFileData();
            //Realizando a criação do arquivo
            File file = new File("C:\\" + strFileName);
            //Criando um output stream... é como se fosse ligado uma mangueira no arquivo e você vá bombear os dados através dessa mangueira
            OutputStream out = new FileOutputStream(file);
            //Aqui os dados são bombeados para o arquivo
            out.write(dataFile);
            //Aqui é espremido a mangueira para enviar todos os dados e uma chacoalhada no balde para acomodar os dados
            out.flush();
            //Retirado a mangueira do balde(Arquivo)
            out.close();
            //Variável para confirmar que o upload foi concluido
            uploadDone = true;
        } else {
            //Adicionando o erro
            errors.add(
                    ActionMessages.GLOBAL_MESSAGE,
                    new ActionMessage("erro-upload"));
        }
        if (uploadDone == false) {
            errors.add(
                    //Adicionando mais erros caso não consiga concluir o upload
                    ActionMessages.GLOBAL_MESSAGE,
                    new ActionMessage("erro-upload"));
        }
        if (errors.isEmpty() == false) {
            //Caso haja falhar salvar os erros e definir forward como FAIL
            saveErrors(request, errors);
            forward = mapping.findForward("FAIL");
        } else {
            //Caso o upload tenha concluido sem problemas define forward como SUCCESS
            forward = mapping.findForward("SUCCESS");
        }
        //RETORNA FAIL OU FORWARD
        return (forward);
    }
}




E Aqui a classe Form:

package br.cbenato.upload;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

/**
 *
 * @author Cristiano Benato
 */
public class UploadForm extends ActionForm {
    private FormFile myFile = null;
    public FormFile getMyFile() {
        return myFile;
    }
    public void setMyFile(FormFile file) {
        myFile = file;
    }
    @Override
    public void reset(ActionMapping mapping, HttpServletRequest request) {
        myFile = null;
    }
    @Override
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors = new ActionErrors();
        return errors;
    }
}



E agora o Action e o bean que devem ser colocados no struts-config:

<form-bean name="uploadForm" type="br.cbenato.upload.UploadForm"/>
        
       <action path="/upload" type="br.cbenato.upload.UploadAction" name="uploadForm" validate="true">
            <forward name="SUCCESS" path="/upload2.jsp"/>
            <forward name="FAIL" path="/erro.jsp"/>
        </action>



Enfim as páginas:



upload.JSP

<%--
    Document   : Upload
    Created on : 20/01/2010, 17:43:50
    Author     : Cristiano Benato
--%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
    <HEAD>
        <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
        <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
        <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

        <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>

        <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <META http-equiv="Content-Style-Type" content="text/css">
        <TITLE>Upload - Cristiano Benato</TITLE>
    </HEAD>
    <BODY>
        <html:form action="/upload.do" enctype="multipart/form-data">
            Escolha o arquivo:<html:file property="myFile"/><br>
            <html:submit value="Upload File"/>
        </html:form>
    </BODY>
</HTML>











-upload2.JSP
<%--
    Document   : upload2
    Created on : 20/01/2010, 17:30:10
    Author     : Cristiano Benato
--%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
    <HEAD>
        <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <META name="GENERATOR" content="IBM WebSphere Studio">
        <META http-equiv="Content-Style-Type" content="text/css">
        <TITLE>Upload de Arquivos</TITLE>
    </HEAD>
    <BODY>
        <h1>Upload realizado com sucesso.</h1:>
    </BODY
</HTML>







-erro.JSP
<%--
    Document   : Erro
    Created on : 05/01/2010, 18:52:52
    Author     : Cristiano Benato
--%>

<%@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>ERRO UPLOAD - Cristiano Benato</title>
    </head>
    <body>
        <h1>Erro no upload!!!!!!!!!!!!!</h1>
    </body>
</html>

sexta-feira, 11 de dezembro de 2009

O inicio.

Boa noite fellas, primeiro post do blog, do qual não vou possuir muito tempo para postar, mas espero sempre poder estar aprimorando e ajudando meus companheiros e colegas de trabalho/estudos.


Começarei com um texto adaptado por Shamus Brown, e que é uma ótima dica para como as pessoas devem agir quanto a tudo.

"O que você vende? Quero dizer, o que você realmente vende? Você vende coisas, produtos, serviços? Você fala muito sobre os detalhes das coisas que você vende?

As pessoas não compram os detalhes. Na verdade as pessoas não estão comprando o que vendemos, quando compram de nós. As pessoas compram esperança!

Esperança de que podemos melhorar o seu engócio e tornar a sua vida melhor. Esperança de que podemos resolver um problema. Esperança que você irá tratar uma grande dor. Esperança e medo são uma grande parte da venda.

As pessoas irão comprar na esperança de que o seu produto ou serviço seja o pacote correto para a sua necessidade.

O medo é também uma parte necessária da venda. Sem medo, Não há necessidade para esperança. Medo é o que faz com que as pessoas sintam esperança que você as resgate.


Medo e Esperança caminham juntos.


Para vender esperança as pessoas precisam ter seus medos descobertos e ativados.

Vender é uma questão de medo e esperança. Todo o resto é apenas detalhe."