servlet-respostas

33 %
67 %
Information about servlet-respostas

Published on January 8, 2008

Author: kyrios

Source: slideshare.net

Description

Servlet (respostas)

Como retornar informações para o browser ? Fábio Nogueira de Lucena Instituto de Informática (UFG)

Retornando informações para o browser ServletResponse (interface) Para enviar informações binárias (figuras, ...) getOutputStream() Para enviar textos (essencialmente HTML) getWriter() Para enviar textos e binários getOutputStream() Para indicar o tipo de conteúdo retornado public void setContentType(String) public void setCharacterEncoding(String) Para obter os valores padrão public String getCharacterEncoding() public String getContentType()

ServletResponse (interface)

Para enviar informações binárias (figuras, ...)

getOutputStream()

Para enviar textos (essencialmente HTML)

getWriter()

Para enviar textos e binários

getOutputStream()

Para indicar o tipo de conteúdo retornado

public void setContentType(String)

public void setCharacterEncoding(String)

Para obter os valores padrão

public String getCharacterEncoding()

public String getContentType()

Onde obter detalhes? Character encodings http://www.iana.org/assignments/character-sets Contenty type (MIME Types) http://www.iana.org/ MIME Types foram escritos para email Atualmente são empregados por HTTP, ... Exemplo (header): Content-type: text/plain

Character encodings

http://www.iana.org/assignments/character-sets

Contenty type (MIME Types)

http://www.iana.org/

MIME Types foram escritos para email

Atualmente são empregados por HTTP, ...

Exemplo (header): Content-type: text/plain

Enviando arquivo binário [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa07/ ]

doGet() res. setContentType ("image/jpeg"); ServletContext context = getServletContext (); URL url = context. getResource ("/kyrios-logo.jpg"); OutputStream os = res. getOutputStream (); InputStream is = url.openStream(); byte[] byteArray = new byte[1024]; int bytesLidos = 0; while ((bytesLidos = is.read(byteArray)) != -1) { os.write(byteArray,0,bytesLidos); } os.flush(); is.close();

res. setContentType ("image/jpeg");

ServletContext context = getServletContext ();

URL url = context. getResource ("/kyrios-logo.jpg");

OutputStream os = res. getOutputStream ();

InputStream is = url.openStream();

byte[] byteArray = new byte[1024];

int bytesLidos = 0;

while ((bytesLidos = is.read(byteArray)) != -1) {

os.write(byteArray,0,bytesLidos);

}

os.flush();

is.close();

Artefatos deste exemplo Crie o diretório pa07 index.html (página inicial) kyrios-logo.jpg (arquivo binário a ser retornado) WEB-INF (diretório) web.xml (arquivo) classes (diretório) SendBinary.java (servlet) SendBinary.class (servlet compilado)

Crie o diretório pa07

index.html (página inicial)

kyrios-logo.jpg (arquivo binário a ser retornado)

WEB-INF (diretório)

web.xml (arquivo)

classes (diretório)

SendBinary.java (servlet)

SendBinary.class (servlet compilado)

Questão O que ocorre quando o método POST é empregado? Por que?

O que ocorre quando o método POST é empregado?

Por que?

Problemas com UTF-8, ISO-8859-1, ... [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa26/ ]

Alerta sobre a codificação empregada Defina o formato empregado setContentType(“text/html;charset=UTF8”) ou setContentType(“text/html;charset=ISO-8859-1”) Use a opção -encoding UTF-8 para compilar arquivos escritos no formato UTF-8 ou Use a opção -encoding ISO-8859-1 para compilar arquivos escritos em ISO-8859-1

Defina o formato empregado

setContentType(“text/html;charset=UTF8”) ou

setContentType(“text/html;charset=ISO-8859-1”)

Use a opção -encoding UTF-8 para compilar arquivos escritos no formato UTF-8 ou

Use a opção -encoding ISO-8859-1 para compilar arquivos escritos em ISO-8859-1

Browser exibe incorretamente!!!??? Provavelmente está configurado para usar um padrão diferente do fornecido Neste caso, altere o padrão Para o browser Firefox faça... Exibir (menu) Codificação (menu) UTF-8 (opção)

Provavelmente está configurado para usar um padrão diferente do fornecido

Neste caso, altere o padrão

Para o browser Firefox faça...

Exibir (menu)

Codificação (menu)

UTF-8 (opção)

Ciclo de Vida de um Servlet [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa25/ ]

Modelo de ciclo de vida

Servlet contêiner (seqüência de ações) Para cada aplicação em $CATALINA_HOME/webapps o contêiner Lê descritores de implantação ( web.xml ) Para cada servlet definido em web.xml Cria uma instância do servlet Class.forName(classe).newInstance() (usa construtor sem argumentos) Envia mensagem init(ServletConfig) para a instância Aguarda requisições Recebe requisição, identifica servlet destino Invoca a correspondente mensagem service()

Para cada aplicação em $CATALINA_HOME/webapps o contêiner

Lê descritores de implantação ( web.xml )

Para cada servlet definido em web.xml

Cria uma instância do servlet

Class.forName(classe).newInstance() (usa construtor sem argumentos)

Envia mensagem init(ServletConfig) para a instância

Aguarda requisições

Recebe requisição, identifica servlet destino

Invoca a correspondente mensagem service()

Exercício Crie um Servlet que registre os principais eventos do ciclo de vida de um servlet, ou seja, o início (init()), o tratamento de uma requisição (get ou post) e o término (destroy()) Crie o arquivo log.txt, no contexto da aplicação para registrar cada um destes “momentos”

Crie um Servlet que registre os principais eventos do ciclo de vida de um servlet, ou seja, o início (init()), o tratamento de uma requisição (get ou post) e o término (destroy())

Crie o arquivo log.txt, no contexto da aplicação para registrar cada um destes “momentos”

HttpServletRequest e HttpServletResponse são interfaces Quem as implementa? [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa27/ ]

Organização de interfaces HttpServletRequest estende ServletRequest HttpServletResponse estende ServletResponse

HttpServletRequest estende ServletRequest

HttpServletResponse estende ServletResponse

Obtendo nome de classe (dado objeto) Quem implementa? HttpServletRequest HttpServletResponse doGet() PrintWriter pw = res.getWriter(); String n1 = req. getClass().getName() ; String n2 = res.getClass().getName(); pw.println(“<html><body>”); pw.println(n1 + “<br>” + n2); pw.println(“</body></html”); Resposta Depende do contêiner

Quem implementa?

HttpServletRequest

HttpServletResponse

doGet()

PrintWriter pw = res.getWriter();

String n1 = req. getClass().getName() ;

String n2 = res.getClass().getName();

pw.println(“<html><body>”);

pw.println(n1 + “<br>” + n2);

pw.println(“</body></html”);

Resposta

Depende do contêiner

Benefício do emprego de interfaces

ServletConfig Iniciando um Servlet [ http://exemplos.googlecode.com/svn/trunk/scwcd/pa08/ ]

Cenário típico da vida de um servlet Após a instância de um servlet ser criada o contêiner envia a mensagem init() Servlet pode fazer uso do init() para recuperar argumentos, iniciar SGBD, ... Argumentos são passados em web.xml (servlet) <init-param> <param-name> Nome </param-name> <param-value> Curso de Servlet </param-value> </init-param> Argumentos são recuperados via ServletConfig

Após a instância de um servlet ser criada o contêiner envia a mensagem init()

Servlet pode fazer uso do init() para recuperar argumentos, iniciar SGBD, ...

Argumentos são passados em web.xml (servlet)

<init-param> <param-name> Nome </param-name> <param-value> Curso de Servlet </param-value> </init-param>

Argumentos são recuperados via

ServletConfig

Problema (e dicas) Servlet que retorna mensagem fornecida em web.xml por meio do parâmetro identificado por msg Acrescentar em web.xml ( <servlet> ) <init-param> <param-name>msg</param-name> <param-value>A terra é azul!</param-value> </init-param> Usar métodos em init() ServletConfig getServletConfig() String getInitParameter(String)

Servlet que retorna mensagem fornecida em web.xml por meio do parâmetro identificado por msg

Acrescentar em web.xml ( <servlet> )

<init-param> <param-name>msg</param-name> <param-value>A terra é azul!</param-value> </init-param>

Usar métodos em init()

ServletConfig getServletConfig()

String getInitParameter(String)

web.xml <?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?> <web-app xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot; version=&quot;2.4&quot;> <servlet> <servlet-name>Init</servlet-name> <servlet-class>Init</servlet-class> < init-param > < param-name >msg</ param-name > < param-value >A terra é azul!</ param-value > </ init-param > </servlet> <servlet-mapping> <servlet-name>Init</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>

<?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?>

<web-app xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot;

xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;

xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot; version=&quot;2.4&quot;>

<servlet>

<servlet-name>Init</servlet-name>

<servlet-class>Init</servlet-class>

< init-param > < param-name >msg</ param-name > < param-value >A terra é azul!</ param-value >

</ init-param >

</servlet>

<servlet-mapping>

<servlet-name>Init</servlet-name>

<url-pattern>/*</url-pattern>

</servlet-mapping>

</web-app>

Revisão Estrutura do código pa08 (diretório) WEB-INF (diretório) web.xml (arquivo descritor da aplicação) (contém elemento init-param ) classes (diretório contendo servlet) Init.java (código fonte do servlet) Init.class (código compilado do servlet)

Estrutura do código

pa08 (diretório)

WEB-INF (diretório)

web.xml (arquivo descritor da aplicação) (contém elemento init-param )

classes (diretório contendo servlet)

Init.java (código fonte do servlet)

Init.class (código compilado do servlet)

Add a comment

Related presentations

Related pages

servlet-respostas - Technology - docslide.com.br

1. Como retornar informações para obrowser ? Fábio Nogueira de Lucena Instituto de Informática (UFG) 2. Retornando informações para obrowser
Read more

Problemas com Glassfish - Front-end - GUJ

ant -f "/Users/edenklynsmann/Desktop/FACULDADE Matérias/6 PERIODO/ Perido 6 Prof Thiago HTML/TRABALHO 2 PROVA SERVLET/RESPOSTAS/CalculoHotel" "-Djsp ...
Read more

Use a Cabeça - Jsp & Servlets - scribd.com

"Sôci'êdade de Ensino Sunerior da PamffJa. Elogios antecipados para o Use a Cabeça! Servlets & JSpTM "Este livro, Use a Cabeça! Servlets & JSP, é tão ...
Read more