Arquivos

Posts Tagged ‘Exemplo’

Criando um projeto WEB com Jetty

Segue um breve how to cujo objetivo é mostrar como embutir o Jetty no seu projeto e criar um Servlet exemplo.

1- Baixe o Jetty e o jar javax.servlet. Verifique pelas ultimas versões disponíveis, no momento que escrevia este How To, eram os abaixo:

http://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/8.1.9.v20130131/jetty-all-8.1.9.v20130131.jar

http://repo2.maven.org/maven2/org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar

2- Iniciei um projeto Java normal no eclipse e adicione as duas libs como dependencia.

3- Crie uma classe para ser a classe principal que iniciará o Jetty:

package br.com.infoserver.exemplo;

import java.io.IOException;

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

import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AbstractHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;

import br.com.infoserver.servlets.DummyServlet;
import br.com.infoserver.servlets.DummyServlet2;

public class ExemploJetty extends AbstractHandler{

public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println("<h1>Hello World</h1>");
}

public static void main(String[] args) throws Exception
{
Server server = new Server(8080);

ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
server.setHandler(context);

context.addServlet(new ServletHolder(new DummyServlet()),"/*");
context.addServlet(new ServletHolder(new DummyServlet("Servlet 1")),"/servlet1/*");

server.start();
server.join();
}

}

4- Crie o Servlet:

package br.com.infoserver.servlets;

import java.io.IOException;

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

public class DummyServlet extends HttpServlet
{
private static final long serialVersionUID = -7433379500358268888L;

public DummyServlet(){}
public DummyServlet(String greeting)
{
this.greeting=greeting;
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("session=" + request.getSession(true).getId());
}
}

5- Execute a classe principal, e no seu navegador aponte para localhost:8080/servlet1

Voa lá!

CategoriasJAVA Tags:, , ,

Criando uma aplicação Java conversando com Filas MQ

Galera, achei uma fonte muito legal sobre o tema Java e WebSphere MQ, segue ai:

http://www.angusyoung.org/2011/10/23/tutorial-sobre-websphere-mq/

Fazendo submit de um form com Ajax

Para quem quer fazer um submit de um form, sem reload de página, eis um link interessante:

http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/

Enjoy!

CategoriasJAVA Tags:, ,

Fazendo um forward para um JSP de um Servlet

Eu sempre esqueço isso!!! Como efetuar um forward, ou seja, invocar uma página, a partir de um Servlet. Segue o código:


RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/meetingsearch.jsp");
dispatcher.forward(request, response);

Enjoy!

CategoriasJAVA Tags:, , , ,

Removendo acentuação com Java

Segue código exemplo para referência utilizando replaceAll:


public static String removerAcentos(String s) {
s = s.replaceAll("[èéêëÈÉÊË]","E");
s = s.replaceAll("[ûùúÛÙÚ]","U");
s = s.replaceAll("[ïîíìÏÎÍÌ]","I");
s = s.replaceAll("[àâáãÀÂÁÃ]","A");
s = s.replaceAll("[óòÒÓôÔõÕ]","A");
s = s.replaceAll("[ç,Ç]","C");

return s;
}

A tempo, no Java 6 dá pra se utilizar o Normalizer, mais eficiente e simples. Segue Exemplo abaixo:

 


package br.com.infoserver.tests;

import java.text.Normalizer;

public class TestString {

public static void main(String[] args) {
System.out.println(removerAcentos("REALIZÁVEL LONGO PRAZO"));
System.out.println(removerAcentos("ATIVO NÃO CIRCULANTE"));
System.out.println(removerAcentos("AC -Aplicações interf de liquidez"));
System.out.println(removerAcentos("Títulos e vals mobs"));
System.out.println(removerAcentos("RL -Aplicações interf de liquidez"));
System.out.println(removerAcentos("RL - Títulos e vals mobs"));
System.out.println(removerAcentos("PASSIVO NÃO CIRCULANTE"));
System.out.println(removerAcentos("EXIGÍVEL LONGO PRAZO"));
System.out.println(removerAcentos("RES.EXERC.FUTURO"));
System.out.println(removerAcentos("PARTICIP.MINORITÁRIOS"));
System.out.println(removerAcentos("PATRIMÔNIO LÍQUIDO"));
System.out.println(removerAcentos("PC - Total de depósitos"));
System.out.println(removerAcentos("PC - Captações no mercado"));
System.out.println(removerAcentos("EXIGÍVEL A LONGO PRAZO"));
System.out.println(removerAcentos("EX.LP - Total de depósitos"));
System.out.println(removerAcentos("EX.LP - Captações no mercado"));
System.out.println(removerAcentos("EX.LP - Empréstimos e repasses"));
System.out.println(removerAcentos("DEMONSTRATIVO DE RESULTADOS"));
}

public static String removerAcentos(String str) {
str = Normalizer.normalize(str, Normalizer.Form.NFD);
str = str.replaceAll("[^\\p{ASCII}]", "");
return str;
}
}

Enjoy!

CategoriasJAVA Tags:, , ,

Quartz + Tomcat ou Qualquer Servidor de App

Este é um passo a passo de como criar uma aplicação Web que tem uma tarefa agendada. Por exemplo, vamos supor que você tem uma aplicação Web, que eventualmente deve efetuar uma limpeza de dados em uma base. Você pode utilizar o quartz para isso (outra alternativa seria Ejb timer). Vamos la:

1- Baixe o Quartz (http://www.quartz-scheduler.org/)
2- Crie um projeto Web Dinâmico no Eclipse e nas dependencias do mesmo, coloque todas as bibliotecas do Quartz baixadas no passo anterior.
3- Crie as classes abaixo:
3.1- Tarefa

package com.br.infoserver.quartz;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

/**
 * Esta classe demonstra uma tarefa que ira ser invocada pelo Quartz
 * Tem que implementar a interface Job do Quartz
 * @author julianom
 */
public class TarefaExemplo implements Job{
	/**
	 * Metodo que é executado quando a tarefa é invocada
	 */
	public void execute(JobExecutionContext context)
	throws JobExecutionException {
		// aqui vai a lógica da tarefa a ser chamada,
		// por exemplo, fazer um select no banco e enviar algum dado para uma fila MQ
		// Neste exemplo, vai somente imprimir no console a data de hoje no intervalo de 5 segundos
		SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy – hh:mm:ss");
		System.err.println("Rodou: " + dateFormat.format( new Date() ));
	}
}

3.2- Agendador, esta classe será invocada por um servlet na inicialização da aplicação WEB

package com.br.infoserver.quartz;

import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

/**
 * Esta é a classe que deve ser invocada e irá disparar a tarefa nos momentos
 * determinados
 *
 * @author julianom
 *
 */
public class Agendador {

	public static void inicia() throws Exception {
		// Detalhes da tarefa
		JobDetail job = JobBuilder.newJob(TarefaExemplo.class).withIdentity(
				"tarefaAloMundo", "group1").build();
		// Gatilho - ou seja, quando irá chamar, neste caso, a cada 5 segundos
		Trigger trigger = TriggerBuilder.newTrigger().withIdentity(
				"gatilhoAloMundo", "group1").withSchedule(
				CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();

		// Agenda e voa lá!
		Scheduler scheduler = new StdSchedulerFactory().getScheduler();
		scheduler.start();
		scheduler.scheduleJob(job, trigger);

	}

}

4- Crie um servlet, este Servlet deverá ser configurado para ser carregado na inicialização da aplicação, eu fiz isso utilizando annotation, dependendo de sua versão de Java, Apache, WebSphere, etc… vai ter que tirar do Servlet e colocar no arquivo web.xml

package com.br.infoserver.quartz.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.br.infoserver.quartz.Agendador;

/**
 * Servlet implementation class QuartzServlet
 */
@WebServlet(
		urlPatterns = { "/QuartzServlet" },
		initParams = {
				@WebInitParam(name = "load-on-startup", value = "2")
		})
public class QuartzServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public QuartzServlet() {
        super();
		try {
			Agendador.inicia();
		} catch (Exception e) {
			e.printStackTrace();
		}
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}

Pronto, simples e fácil. Basta efetuar o deploy de sua aplicação em seu servidor, e verá que neste exemplo ele ficará escrevendo a data no SystemOut do mesmo!

Enjoy!

Criar Stored Procedure dinâmica no DB2

Eu tive a necessidade de escrever uma Stored Procedure dinâmica no DB2 que receberia uma instrução SQL, a executaria e me retornaria um ResultSet.

A mesma seria utilizada em uma tela de busca “genérica” no sistema, para, em tempo de homologação, permitir ao analista efetuar queries, uma vez que o banco de homologação só aceita a chamada de procs, é impossivel efetuar selects diretamente no mesmo.

Enfim, segue o corpo da Procedure, observando que JULIANO é o meu schema:

CREATE PROCEDURE JULIANO1.PSELEMPRRTINGRES (
       IN PAR_CAMPO1        VARCHAR (10000) — este é o parametro que passo para a proc
)
        SPECIFIC JULIANO1.PSELEMPRRTINGRES
        DYNAMIC RESULT SETS 1

P1:BEGIN

     DECLARE strSqlDn                        varchar(10000);
     DECLARE stm_procedimento                     STATEMENT;
     DECLARE cursorDn CURSOR WITH RETURN FOR stm_procedimento;

     SET strSqlDn = PAR_CAMPO1;

     PREPARE stm_procedimento FROM strSqlDn;
     OPEN cursorDn;

END P1

Para invocar a proc, basta chamar:

call JULIANO1.PSELEMPRRTINGRES(‘select * from clientes’);

No Java, eu invoco a Proc normalmente, jogando o resultado para um result set, faço um parse para desenhar a tabela no JSP e voa-lá!

Enjoy!

Criando documentos docx com docx4j com Java

É comum a necessidade de que nossas aplicações Java exportem relatórios para diversos formatos, dentre eles, o docx.

A maneira mais simples e rápida que encontramos para criar um documento docx foi utilizando o docx4j.

Eis um simples código para suas “brincadeiras”:
Os imports necessários:

import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.exceptions.InvalidFormatException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import utils.ErrorManager;

O método em si, repare que está muito simples, ele cria um paragrafo inteiro com o que você passar como parâmetro:

public static void createDoc(String fileName, String sourceString) {
try {
WordprocessingMLPackage wordMLPackage;
wordMLPackage = WordprocessingMLPackage.createPackage();
wordMLPackage.getMainDocumentPart().addParagraphOfText(sourceString);
wordMLPackage.save(new java.io.File(fileName+ ".docx"));
} catch (InvalidFormatException e) {
ErrorManager.showErrorMessage("createDoc", e.toString());
} catch (Docx4JException e) {
ErrorManager.showErrorMessage("createDoc", e.toString());
}

}

Enjoy!

CategoriasJAVA Tags:, , ,

Gerando arquivos PDF e RTF com Java

Tive a necessidade de gerar arquivos RTF e PDF em uma aplicação JAVA, então sai em busca de um componente para simplificar minha vida, acabei encontrando o Itext, que faz exatamente o que eu quero. O site do mesmo é http://itextpdf.com/ e os arquivos “jar” podem ser baixados aqui.

Utilizei a versão 2.1.7 pois a versão mais recente (5) não suporta ainda a criação de arquivos rtf.

Os criados de itext pularam da versao 2 para a 5 somente para seguir o padrão adotado na nomeclatura do Java.

A seguir, estão os códigos para geração de PDF e RTF, bem simplificados. Para os utilizar, basta chamar o método createPDF e createRTF respectivamente, além é claro, de baixar os jars do iText e colocar no classpath de sua aplicação.

  • Geração de PDF
import java.io.FileOutputStream;
import java.io.IOException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
/**
 * Responsible for pdf creation
 *
 * @author julianom
 *
 */
public class PdfCreator {
    /**
     * Create a pdf file
     *
     * @param fileName the name of the output file
     * @param sourceString the string that will be written in the pdf file
     */
    public static void createPdf(String fileName, String sourceString) {
	Document document = new Document();
	try {
	    PdfWriter.getInstance(document, new FileOutputStream(fileName + ".pdf"));
	    document.open();
	    document.add(new Paragraph(sourceString));
	} catch (DocumentException de) {
	    System.err.println(de.getMessage());
	} catch (IOException ioe) {
	    System.err.println(ioe.getMessage());
	}
	document.close();
    }
}
  • Geração de RTF
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Paragraph;
import com.lowagie.text.rtf.RtfWriter2;

/**
 * This class is responsible for RTF creation
 *
 * @author julianom
 *
 */
public class RtfCreator {
    /**
     * Create a rtf file
     *
     * @param fileName the name of the output file
     * @param sourceString the string that will be written in the pdf file
     */
    public static void createRtf(String fileName, String sourceString) {
	try {
	    Document document = new Document();
	    RtfWriter2.getInstance(document, new FileOutputStream(fileName
		    + ".rtf"));
	    document.open();
	    document.add(new Paragraph(sourceString));
	    document.close();
	} catch (FileNotFoundException e) {
	    e.printStackTrace();
	    System.err.println("Problem at RtfCreator - createRtf");
	} catch (DocumentException e) {
	    e.printStackTrace();
	    System.err.println("Problem at RtfCreator - createRtf");
	}
    }
}

Enjoy!

CategoriasJAVA Tags:, , , ,

Criação de um arquivo no filesystem com Java

Muita gente acabe precisando criar arquivos no sistema de arquivos utilizando Java, então ai vai um exemplo bem simples:


01 import java.io.File;
02 import java.io.FileWriter;
03 import java.io.IOException;
04 public class TxtCreator {
05   public static void main(String[] args) {
06   try {
07     String sourceString = "Batatinha quando nasce...";
08     String fileName = "arquivo.txt";
09     File file = new File(fileName);
10     // Criar o arquivo se ele nao existir
11     boolean success = file.createNewFile();
12     if (success) {
13       FileWriter x = new FileWriter(file, true);
14       x.write(sourceString);
15       x.close();
16     else {
17       System.out.println("File " + fileName + " existe");
18       }
19     catch (IOException e) {
20   }
21   }
22 }

Enjoy!

CategoriasJAVA Tags:, ,
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 127 outros seguidores