Struts. Características Avançadas
|
|
- Ana Laura da Cunha Teixeira
- 8 Há anos
- Visualizações:
Transcrição
1 Struts Características Avançadas
2 Agenda Tags do Struts DispatchAction Multiplos arquivos de configuração Command Pattern DynaActionForm Array s Validation Framework JSP2.0 Expression Language
3 html html:submit html:cancel html:button html:hidden html:checkbox html:messages html:errors html:file html:form html:javascript html:image/img
4 html html:link html:messages html:multibox html:selection/option/options/optionscollection html:radio html:reset html:rewrite html:text html:textarea
5 bean bean:cookie bean:header bean:parameter bean:define bean:include bean:message bean:page bean:resource bean:size
6 bean bean:struts bean:write
7 logic logic:empty logic:present logic:iterate logic:{...}
8 Preparação do Ambiente Crie dois projetos (SistemaDeNoticias e SistemaDeNoticiasWeb) Configure o nome do contexto web para noticia Adicione a lib struts-extras.jar. Utilize, claro, a versão mais recente Crie as páginas Menu.jsp e index.jsp
9 Menu.jsp page language="java" contenttype="text/html; charset=utf-8"%> taglib uri="/tags/struts-html" prefix="html"%> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>.: Menu :.</title> <link rel="stylesheet" href="css/estilo.css" type="text/css" /> </head> <body> <table> <tr> <td><html:link page="/paginainicial.do">página Inicial </html:link></td> </tr> </table> </body> </html>
10 index.jsp <body onload="window.location='paginainicial.do';">
11 DispatchAction Subtipo de Action que implementa o padrão Command Ao invés de ter várias classes Action, você centraliza todas as ações num único DispatchAction e seleciona a uma ação específica através de um parâmetro (comando) na url Muito prático, economiza várias classes, pois uma mesma Action responde a várias solicitações
12 NoticiaAction package net.noticias.action; import java.util.*; import javax.servlet.http.*; import net.noticias.form.*; import net.noticias.persistencia.*; import org.apache.struts.action.*; import org.apache.struts.actions.*; public class NoticiaAction extends DispatchAction { public ActionForward listar(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { DAONoticia daonoticia = new DAONoticia(); request.setattribute("noticias", daonoticia.consultanoticias()); return mapping.findforward("mostrarpaginadeconsulta"); } }
13 Invocando um método do Dispatch Essa é uma subclasse de DispatchAction Todos os métodos devem ter a seguinte lista de parâmetros: ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response O nome do método (no nosso caso listar) será invocado pela url Noticia.do?comando=listar A url completa é
14 Parâmetros do dispath Noticia.do Chama a ação respectiva no strutsconfig.xml, acionando a classe NoticiaAction O método listar faz carrega uma coleção de notícias na variável noticias e chama o forward MostrarPaginaDeConsulta abrindo a página ConsultarNoticias.jsp comando=listar Parâmetro http utilizado para escolher o método
15 NoticiaForm package net.noticias.form; import org.apache.struts.action.*; public class NoticiaForm extends ActionForm { private String id; private String texto; private String titulo; private String data; private String tipodenoticia; private String[] noticiasselecionadas; {...} }
16 Detalhes Crie os métodos getter e setters Temos um atributo do tipo array Array s são utilizados para recuperar valores de componentes como listas de seleção múltipla e checkboxes Essa é uma característica do html, não do Struts
17 DAONoticia package net.noticias.persistencia; import java.util.*; import net.noticias.form.*; public class DAONoticia { public Collection<NoticiaForm> consultanoticias() { Collection<NoticiaForm> lista = new ArrayList<NoticiaForm>(); NoticiaForm n = new NoticiaForm(); n.setid("1"); n.setdata(" "); n.settexto("texto da notícia 1"); n.settitulo("título da notícia 1"); lista.add(n); n = new NoticiaForm(); n.setid("2"); n.setdata(" "); n.settexto("texto da notícia 2"); n.settitulo("título da notícia 2"); lista.add(n); n = new NoticiaForm(); n.setid("3"); n.setdata(" "); n.settexto("texto da notícia 3"); n.settitulo("título da notícia 3"); lista.add(n); return lista; }
18 DAONoticia public NoticiaForm consultanoticiapeloid(string id) { NoticiaForm n = new NoticiaForm(); n.setid(id); n.setdata(" "); n.settexto("texto da notícia " + id); n.settitulo("título da notícia " + id); n.settipodenoticia("3"); return n; } }
19 web.xml <?xml version="1.0" encoding="iso "?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " <web-app> <display-name>sistema de Notícias</display-name> <servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.actionservlet </servlet-class> <init-param> <param-name>config</param-name> <param-value> /WEB-INF/struts-config.xml,/WEB-INF/struts-config-form-beans.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
20 web.xml <!-- Standard Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <taglib> <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/web-inf/lib/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location>/web-inf/lib/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-logic</taglib-uri> <taglib-location>/web-inf/lib/struts-logic.tld</taglib-location> </taglib> </web-app>
21 Múltiplos arquivos de configuração Arquivos de configuração tendem a crescer bastante, dificultando sua visualização Nesse exemplo separamos os form-beans do resto da aplicação Para isso, adicione os arquivos de configuração no parâmetro config separados por vírgula
22 struts-config.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" " <struts-config> <global-forwards> <forward name="abrirpaginaprincipal" path="/paginainicial.do" /> </global-forwards> <action-mappings> <action path="/paginainicial" forward="/menu.jsp" /> <action path="/noticia" type="net.noticias.action.noticiaaction" name="noticiaform" parameter="comando"> <forward name="mostrarpaginadeedicao" path="/editarnoticia.jsp" /> <forward name="mostrarpaginadeconsulta" path="/consultarnoticias.jsp" /> </action> </action-mappings> <message-resources parameter="messageresources" /> </struts-config>
23 Command Pattern A ação Noticia deve ter um parâmetro O nome padrão é comando Esse parâmetro será usado para escolher o método a ser executado
24 Forwards globais São forwards que podem ser utilizados por todos os actions <global-forwards> <forward name="abrirpaginaprincipal" path="/paginainicial.do" /> </global-forwards>
25 struts-config-form-beans.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" " <struts-config> <form-beans> <form-bean name="noticiaform" type="net.noticias.form.noticiaform" /> <form-bean name="tipodenoticiaform" type="net.noticias.form.tipodenoticiaform" /> </form-beans> </struts-config>
26 ConsultarNoticias.jsp page language="java" contenttype="text/html; charset=utf-8"%> taglib uri="/tags/struts-html" prefix="html"%> taglib uri="/tags/struts-bean" prefix="bean"%> taglib uri="/tags/struts-logic" prefix="logic"%> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>.: Consulta Notícias :.</title> <link rel="stylesheet" href="css/estilo.css" type="text/css" /> </head> <body> <table width=90% border> <tr> <td colspan=4 align=center> <h2>consulta Notícias</h2> </td> </tr> <tr> <td align=center>data</td> <td>título</td> <td>texto</td> <td>editar</td>
27 ConsultarNoticias.jsp </tr> <logic:iterate id="noticia" name="noticias"> <tr> <td align=center><bean:write name="noticia" property="data" /></td> <td><bean:write name="noticia" property="titulo" /></td> <td><bean:write name="noticia" property="texto" /></td> <td><html:link page="/noticia.do?comando=editar" paramid="iddanoticia" paramname="noticia" paramproperty="id"> <html:image src="imagens/edit.gif" /> </html:link> </tr> </logic:iterate> <tr> <td colspan=4 align=center><html:button onclick="window.location='paginainicial.do'" property="btnvoltar" value="sair" /></td> </table> </body> </html>
28 html:link e html:button html:link <html:link page="/noticia.do?comando=editar" paramid="iddanoticia" paramname="noticia" paramproperty="id"> /Noticia.do?comando=editar chama a mesma action (NoticiaAction) executando dessa vez o comando editar paramid nome do parâmetro passado na url paramname nome do bean paramproperty valor da propriedade html:button <html:button onclick="window.location='paginainicial.do'" property="btnvoltar" value="sair" /> Botão com javascript para voltar à página inicial
29 Novo Menu.jsp page language="java" contenttype="text/html; charset=utf-8"%> taglib uri="/tags/struts-html" prefix="html"%> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>.: Menu :.</title> <link rel="stylesheet" href="css/estilo.css" type="text/css" /> </head> <body> <table> <tr> <td><html:link page="/paginainicial.do">página Inicial </html:link></td> <td><html:link page="/noticia.do?comando=listar">notícia </html:link></td> </tr> </table> </body> </html>
30 Tela de Consulta
31 Comando editar Esse novo comando consulta uma notícia pelo parâmetro iddanoticia Teremos um combobox com os tipos de notícia, para montá-lo precisamos da coleção de tipos Em seguida é só chamar o forward MostrarPaginaDeEdicao
32 NoticiaAction public ActionForward editar(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String id = request.getparameter("iddanoticia"); DAONoticia daonoticia = new DAONoticia(); DAOTipoDeNoticia daotipo = new DAOTipoDeNoticia(); Collection<TipoDeNoticiaForm> tipos = daotipo.consultatiposdenoticia(); NoticiaForm n = daonoticia.consultanoticiapeloid(id); request.setattribute("noticia", n); request.setattribute("tipos", tipos); return mapping.findforward("mostrarpaginadeedicao"); }
33 EditarNoticia.jsp page language="java" contenttype="text/html; charset=utf-8"%> taglib uri="/tags/struts-html" prefix="html"%> taglib uri="/tags/struts-bean" prefix="bean"%> taglib uri="/tags/struts-logic" prefix="logic"%> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>.: Editar Notícia :.</title> <link rel="stylesheet" href="css/estilo.css" type="text/css" /> </head> <body> <table width=90% border> <html:form action="/noticia?comando=confirmar"> <tr> <td colspan=3 align=center> <h2>editar Notícia</h2>
34 EditarNoticia.jsp </td> </tr> <tr> <td align=center>id</td> <td><html:text name="noticia" property="id" /></td> </tr> <tr> <td align=center>data</td> <td><html:text name="noticia" property="data" /></td> </tr> <tr> <td align=center>título</td> <td><html:text name="noticia" property="titulo" /></td> </tr> <tr> <td align=center>texto</td> <td><html:text name="noticia" property="texto" /></td> </tr> <tr> <td colspan=3> <tr>
35 EditarNoticia.jsp <td align=center>tipo de notícia: <td colspan=2> <html:select name="noticia" property="tipodenoticia"> <html:optionscollection name="tipos" value="id" label="descricao" /> </html:select></td> </tr> <tr> <td colspan=3 align=center> <html:submit value="confirmar" /> <html:button onclick="action='noticia.do?comando=listar';submit()" value="sair" property="btnsair" /></td> </tr> </html:form> </table> </body> </html>
36 html:form/select <html:form action="/noticia?comando=confirmar"> Os dados dessa página serão enviados para o método confirmar através da NoticiaForm <html:select name="noticia" property="tipodenoticia"> <html:optionscollection name="tipos" value="id" label="descricao" /> </html:select> html:select tag para montar uma combobox, inclusive de seleção múltipla name, property nome/propriedade do bean html:optionscollection valores do combobox name nome da collection value valor de cada option (id de cada tipodenoticia) label valor que será mostrado ao usuário Se o id do bean for igual ao id da combo, essa opção virá selecionada
37 html:submit <html:submit value="confirmar" /> Submete o form para a ação do form <html:button onclick="action='noticia.do?comando=listar';submit()" value="sair" property="btnsair" /> Muda o valor da ação através de javascript e a submete
38 Tela de Edição
39 Confirmando a ação O método confirmar recebe os dados do formulário de edição e faz a persistência dos dados Nossos exemplos não têm bancos de dados, mas um DAO acessando o Hibernate poderia fazer isso facilmente
40 NoticiaAction public ActionForward confirmar(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { NoticiaForm f = (NoticiaForm) form; System.out.println("Dados informados pelo usuário"); System.out.println("ID: " + f.getid()); System.out.println("Data: " + f.getdata()); System.out.println("Título: " + f.gettitulo()); System.out.println("Texto: " + f.gettexto()); System.out.println("ID do Tipo: " + f.gettipodenoticia()); return mapping.findforward("abrirpaginaprincipal"); }
41 Camadas de Persistência e Negócio O Struts não fornece nenhuma API para a camada de negócio Seguindo as melhores práticas, a Action deveria acessar um fachada No nosso exemplo temos acessamos um DAO diretamente O próximo passo seria acessar efetivamente o banco relacional
42 TipoDeNoticiaForm package net.noticias.form; import org.apache.struts.action.*; public class TipoDeNoticiaForm extends ActionForm { private String id; private String descricao; {...} }
43 Alternativa A classe TipoDeNoticia é bastante simples, tem apenas código e descrição Esse tipo de classe é forte candidata a se transformar em formulário dinâmico, discutido posteriormente
44 struts-config.xml Acrescente a ação respectiva no arquivo de configuração (siga o padrão da ação Noticia) Já é possível notar a quantidade reduzida de classes Action <action path="/tipodenoticia" name="tipodenoticiaform" type="net.noticias.action.tipodenoticiaaction" parameter="comando"> <forward name="mostrarpaginadeedicao" path="/editartipodenoticia.jsp" /> <forward name="mostrarpaginadeconsulta" path="/consultartipodenoticia.jsp" /> </action>
45 TipoDeNoticiaAction package net.noticias.action; import java.util.*; import javax.servlet.http.*; import net.noticias.form.*; import net.noticias.persistencia.*; import org.apache.struts.action.*; import org.apache.struts.actions.*; public class TipoDeNoticiaAction extends DispatchAction { public ActionForward editar(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String id = request.getparameter("iddotipo"); DAOTipoDeNoticia dao = new DAOTipoDeNoticia(); TipoDeNoticiaForm tipo = dao.consultatipodenoticiapeloid(id); request.setattribute("tipo", tipo); return mapping.findforward("mostrarpaginadeedicao"); }
46 TipoDeNoticiaAction public ActionForward listar(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { DAOTipoDeNoticia d = new DAOTipoDeNoticia(); Collection<TipoDeNoticiaForm> lista = d.consultatiposdenoticia(); request.setattribute("tipos", lista); return mapping.findforward("mostrarpaginadeconsulta"); } public ActionForward confirmar(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { TipoDeNoticiaForm f = (TipoDeNoticiaForm) form; System.out.println("Dados informados pelo usuário"); System.out.println("ID: " + f.getid()); System.out.println("Data: " + f.getdescricao()); return mapping.findforward("abrirpaginaprincipal"); } }
47 DAOTipoDeNoticia package net.noticias.persistencia; import java.util.*; import net.noticias.form.*; public class DAOTipoDeNoticia { public Collection<TipoDeNoticiaForm> consultatiposdenoticia() { Collection<TipoDeNoticiaForm> lista = new ArrayList<TipoDeNoticiaForm>(); TipoDeNoticiaForm n = new TipoDeNoticiaForm(); n.setid("1"); n.setdescricao("tipo 1"); lista.add(n); n = new TipoDeNoticiaForm(); n.setid("2"); n.setdescricao("tipo 2"); lista.add(n); n = new TipoDeNoticiaForm(); n.setid("3"); n.setdescricao("tipo 3"); lista.add(n); return lista; } public TipoDeNoticiaForm consultatipodenoticiapeloid(string id) { TipoDeNoticiaForm tipo = new TipoDeNoticiaForm(); tipo.setid(id); tipo.setdescricao("tipo " + id); return tipo; } }
48 TipoDeNoticia Apesar de simples, temos vários elementos utilizados em
49 ConsultarTipoDeNoticia.jsp page language="java" contenttype="text/html; charset=utf-8"%> taglib uri="/tags/struts-html" prefix="html"%> taglib uri="/tags/struts-bean" prefix="bean"%> taglib uri="/tags/struts-logic" prefix="logic"%> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>.: Consulta Tipos de Notícia :.</title> <link rel="stylesheet" href="css/estilo.css" type="text/css" /> </head> <body> <table width=90% border> <tr> <td colspan=4 align=center> <h2>consulta Tipo de Notícia</h2> </td> </tr> <tr> <td align=center>id</td> <td>descrição</td> <td>editar</td> </tr>
50 ConsultarTipoDeNoticia.jsp <logic:iterate id="tipo" name="tipos"> <tr> <td align=center><bean:write name="tipo" property="id" /></td> <td><bean:write name="tipo" property="descricao" /></td> <td><html:link page="/tipodenoticia.do?comando=editar" paramid="iddotipo" paramname="tipo" paramproperty="id"> <html:img src="imagens/edit.gif" border="0" /> </html:link> </tr> </logic:iterate> <tr> <td colspan=4 align=center><html:button onclick="window.location='paginainicial.do'" property="btnvoltar" value="sair" /></td> </table> </body> </html>
51 Consultas As consultas seguem o mesmo princípio: a Action salva uma coleção de objetos numa variável (geralmente) de sessão e através do logic:iterate a gente escreve os vários valores na tela
52 EditarTipoDeNoticia.jsp page language="java" contenttype="text/html; charset=utf-8"%> taglib uri="/tags/struts-html" prefix="html"%> taglib uri="/tags/struts-bean" prefix="bean"%> taglib uri="/tags/struts-logic" prefix="logic"%> <html:html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>.: Editar Tipo de Notícia :.</title> <link rel="stylesheet" href="css/estilo.css" type="text/css" /> </head> <body> <table width=90% border> <html:form action="/tipodenoticia?comando=confirmar" onsubmit="return validatetipodenoticiaform(this);"> <tr> <td colspan=3 align=center> <h2>edição de Tipo de Notícia</h2> </td> </tr>
53 EditarTipoDeNoticia.jsp <tr> <td align=center>id</td> <td><html:text name="tipo" property="id" /></td> </tr> <tr> <td align=center>descrição</td> <td><html:text name="tipo" property="descricao" /></td> </tr> <tr> <td colspan=3 align=center><html:submit value="confirmar" /><html:button onclick="action='tipodenoticia.do?comando=listar';submit()" value="sair" property="btnsair" /></td> </tr> </html:form> </table> </body> </html:html>
54 Edição O id de um dos objetos da lista é enviado pela url para a Action, executando o comando de edição A aplicação deve recuperar o objeto do banco e guardar seus valores em uma variável de sessão A página de edição espera essa variável e escreve seus valores através das tags html
55 DynaActionForm Formulário dinâmico baseado na interface java.util.map Não é necessário criar uma classe ActionForm Configurado no struts-config como um simples <form-bean> Grande flexibilidade Não utiliza reflexão
56 struts-config-form-beans.xml Adicione o form-bean para Fonte <form-bean name="fonteform" type="org.apache.struts.action.dynaactionform"> <form-property name="id" type="java.lang.string" /> <form-property name="descricao" type="java.lang.string" /> </form-bean> Os atributos podem usar todas as classes wrapper, collections e arrays Não é necessário criar a classe!
57 struts-config.xml Acrescente a Action para o novo form-bean Veja a diferença: nenhuma <action path="/fonte" type="net.noticias.action.fonteaction" name="fonteform" parameter="comando"> <forward name="mostrarpaginadeedicao" path="/editarfonte.jsp" /> <forward name="mostrarpaginadeconsulta" path="/consultarfontes.jsp"> </forward> </action>
58 FonteAction package net.noticias.action; import javax.servlet.http.*; import net.noticias.persistencia.*; import org.apache.struts.action.*; import org.apache.struts.actions.*; public class FonteAction extends DispatchAction { public ActionForward listar(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { DAOFonte dao = new DAOFonte(); request.setattribute("fontes", dao.consultafontes()); return mapping.findforward("mostrarpaginadeconsulta"); } }
59 Poucas diferenças o método para listar as fontes não difere dos outros A principal diferença fica por conta do DAO, pois os formulários dinâmicos não têm classes concretas Todos são implementados através de mapas
60 DAOFonte package net.noticias.persistencia; import java.util.*; public class DAOFonte { public Collection<Map<String, String>> consultafontes() { Collection<Map<String, String>> lista = new ArrayList<Map<String, String>>(); Map<String, String> mapa = new HashMap<String, String>(); mapa.put("id", "1"); mapa.put("descricao", "Fonte 1"); lista.add(mapa); mapa = new HashMap<String, String>(); mapa.put("id", "2"); mapa.put("descricao", "Fonte 2"); lista.add(mapa); mapa = new HashMap<String, String>(); mapa.put("id", "3"); mapa.put("descricao", "Fonte 3"); lista.add(mapa); return lista; } public Map<String, String> consultafontepeloid(string id) { Map<String, String> mapa = new HashMap<String, String>(); mapa.put("id", id); mapa.put("descricao", "Tipo " + id); return mapa; } }
61 Tudo é Map Como não há classe concreta, nosso valores ficam encapsulados em mapas Para fazer a persistência num banco relacional, você deve implementar utilitários que mapeiem os mapas para seus DTO s
62 ConsultarFontes.jsp page language="java" contenttype="text/html; charset=utf-8"%> taglib uri="/tags/struts-html" prefix="html"%> taglib uri="/tags/struts-bean" prefix="bean"%> taglib uri="/tags/struts-logic" prefix="logic"%> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>.: Consulta Notícias :.</title> <link rel="stylesheet" href="css/estilo.css" type="text/css" /> </head> <body> <table width=90% border> <tr> <td colspan=4 align=center> <h2>consulta Fontes</h2> </td> </tr> <tr> <td align=center>id</td> <td>descrição</td> <td>editar</td> </tr>
63 ConsultarFontes.jsp <logic:iterate id="fonte" name="fontes"> <tr> <td align=center><bean:write name="fonte" property="id" /></td> <td><bean:write name="fonte" property="descricao" /></td> <td><html:link page="/fonte.do?comando=editar" paramid="iddafonte" paramname="fonte" paramproperty="id"> <html:image src="imagens/edit.gif" /> </html:link> </tr> </logic:iterate> <tr> <td colspan=4 align=center><html:button onclick="window.location='paginainicial.do';submit()" property="btnvoltar" value="sair" /></td> </tr> </table> </body> </html>
64 Consulta com DynaActionForm A página de consulta é idêntica a todas as outras Atenção ao DAO, pois temos que usar apenas Map s
65 FonteAction public ActionForward editar(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { DAOFonte dao = new DAOFonte(); String id = request.getparameter("iddafonte"); request.setattribute("fonte", dao.consultafontepeloid(id)); return mapping.findforward("mostrarpaginadeedicao"); }
66 EditarFonte.jsp page language="java" contenttype="text/html; charset=utf-8"%> taglib uri="/tags/struts-html" prefix="html"%> taglib uri="/tags/struts-bean" prefix="bean"%> taglib uri="/tags/struts-logic" prefix="logic"%> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>.: Editar Fonte :.</title> <link rel="stylesheet" href="css/estilo.css" type="text/css" /> </head> <body> <table width=90% border> <html:form action="/fonte?comando=confirmar"> <tr> <td colspan=3 align=center> <h2>editar Fonte</h2> </td> </tr>
67 EditarFonte.jsp <tr> <td align=center>id</td> <td><html:text name="fonte" property="id" /></td> </tr> <tr> <td align=center>descrição</td> <td><html:text name="fonte" property="descricao" /></td> </tr> <tr> <td colspan=3 align=center><html:submit value="confirmar" /> <html:button onclick="action='fonte.do?comando=listar';submit()" value="sair" property="btnsair" /></td> </tr> </html:form> </table> </body> </html>
68 Edição com DynaActionForm Para preencher a página de edição precisamos fornecer um mapa com os atributos da fonteform public Map<String, String> consultafontepeloid(string id) { Map<String, String> mapa = new HashMap<String, String>(); mapa.put("id", id); mapa.put("descricao", "Tipo " + id); return mapa; }
69 A utilização de array s Em várias situações precisamos utilizar estruturas complexas, mas quando trabalhamos com ambientes web, temos uma série de limitações Não é interessante, por exemplo, transmitir objetos entre as requisições de usuário. Esse tipo de recurso deve ser evitado ao máximo Os valores transmitidos entre as páginas são sempre do tipo String e quando temos vários componentes em uma requisição com o mesmo nome, o request encapsula seus valores em um array E trabalhar com array sempre foi razoavelmente complicado
70 struts-config.xml Abaixo está a Action dessa nova funcionalidade O escopo está configurado para request. Depois do primeiro teste, mude para session O parâmetro attribute= noticia cria a variável noticia e a passa para a página seguinte, preenchida com os dados da página atual <action path="/selecaomultipladenoticias" type="net.noticias.action.selecaomultipladenoticiasaction" name="noticiaform" attribute="noticia" scope="request" parameter="comando"> <forward name="mostrarpaginadeconsulta" path="/selecaomultipladenoticias.jsp" /> <forward name="mostrarnoticiasselecionadas" path="/resultadodaselecaomultipladenoticias.jsp" /> </action>
71 SelecaoMultiplaDeNoticiasAction package net.noticias.action; import javax.servlet.http.*; import net.noticias.persistencia.*; import org.apache.struts.action.*; import org.apache.struts.actions.*; public class SelecaoMultiplaDeNoticiasAction extends DispatchAction { public ActionForward mostrartodasasnoticias(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { DAONoticia d = new DAONoticia(); request.setattribute("noticias", d.consultanoticias()); return mapping.findforward("mostrarpaginadeconsulta"); } public ActionForward mostrarasnoticiasselecionadas(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { return mapping.findforward("mostrarnoticiasselecionadas"); } }
72 Página de seleção A Action simplesmente envia uma coleção de notícias para a página de seleção que mostra seus valores com uma tag html:selection
73 SelecaoMultiplaDeNoticias.jsp page language="java" contenttype="text/html; charset=utf-8"%> taglib uri="/tags/struts-html" prefix="html"%> taglib uri="/tags/struts-bean" prefix="bean"%> taglib uri="/tags/struts-logic" prefix="logic"%> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>.: Consulta Notícias :.</title> <link rel="stylesheet" href="css/estilo.css" type="text/css" /> </head> <body> <table width=90% border> <html:form action="/selecaomultipladenoticias.do?comando=mostrarasnoticiasselecionadas"> <bean:size id="quantidadedenoticias" name="noticias" /> <tr> <td colspan=2 align=center> <h2><bean:write name="quantidadedenoticias" /> Notícia(s) Cadastrada(s)</h2> </td>
74 SelecaoMultiplaDeNoticias.jsp </tr> <tr> <td align=center>notícias: <td><html:select name="noticia" property="noticiasselecionadas" multiple="true"> <html:optionscollection name="noticias" value="id" label="titulo" /> </html:select></td> </tr> <tr> <td colspan=2 align=center><html:button onclick="submit()" property="btnselecionar" value="selecionar" /></td> </tr> </html:form> </table> </body> </html>
75 html:select e bean:size <html:select name="noticia" property="noticiasselecionadas" multiple="true"> <html:optionscollection name="noticias" value="id" label="titulo" /> </html:select> multiple= true Indica que esse select aceitará seleção múltipla Os itens selecionados serão armazenados em um array do formbean <bean:size id="quantidadedenoticias" name="noticias" /> Cria a variável quantidadedenoticias com a quantidade de itens do bean noticias <bean:write name="quantidadedenoticias" /> Escreve o valor da variável quantidadedenoticias
76 Tela de seleção
77 ResultadoDaSelecaoMultiplaDeNoticias.jsp page language="java" contenttype="text/html; charset=utf-8"%> taglib uri="/tags/struts-html" prefix="html"%> taglib uri="/tags/struts-bean" prefix="bean"%> taglib uri="/tags/struts-logic" prefix="logic"%> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>.: Seleção Múltipla de Notícia :.</title> <link rel="stylesheet" href="css/estilo.css" type="text/css" /> </head> <body> <table width=90% border> <bean:size id="quantidadedenoticiasselecionadas" name="noticia" property="noticiasselecionadas" /> <tr> <td colspan=2 align=center> <h2><bean:write name="quantidadedenoticiasselecionadas" /> Notícia(s) Selecionada(s)</h2> </td>
78 ResultadoDaSelecaoMultiplaDeNoticias.jsp </tr> <tr> <td align=center>id</td> </tr> <logic:iterate id="iddanoticiaselecionada" property="noticiasselecionadas" name="noticia"> <tr> <td align=center><bean:write name="iddanoticiaselecionada" /></td> </tr> </logic:iterate> <tr> <td colspan=2 align=center><html:button onclick="window.location='selecaomultipladenoticias.do?comando=mostrartodasasnoticias';submit()" property="btnselecionar" value="voltar" /><html:button onclick="window.location='paginainicial.do';submit()" value="sair" property="btnsair" /></td> </tr> </table> </body> </html>
79 bean:size e logic:iterate <bean:size id="quantidadedenoticiasselecionadas" name="noticia" property="noticiasselecionadas" /> Cria a variável quantidadedenoticiasselecionadas com a quantidade itens da property noticiasselecionadas do bean noticia <bean:write name="quantidadedenoticiasselecionadas" /> Escreve a quantidadedenoticiasselecionadas <logic:iterate id="iddanoticiaselecionada" property="noticiasselecionadas" name="noticia"> Cria a variável iddanoticiaselecionada com o valor de cada item do array <bean:write name="iddanoticiaselecionada" /> Escreve o id na tela
80 Tela de resultado
81 Agora é sua vez O Struts entrega os dados, mas o processamento quem faz é você Seguindo as boas práticas, agora é a vez consultar as notícias pelo id, através de uma fachada/dao Nunca coloque regras de negócio em suas Actions
82 Validation Framework A lógica de validação é escrita em arquivos XML Originado do Validator Framework do Jakarta Incluído no Struts a partir da versão 1.1 Permite validação declarativa para vários campos Valida datas, números, , cartão de crédito, código postar (USA), tamanhos, range e expressões regulares
83 Regras de Validação Regras são definidas para campos específicos de um form Já dispõe de vários validadores prontos required, minlength, maxlength, date, integer, mask Extensível: você pode criar seus próprios validadores
84 Validação do ActionForm Para usar o Validator, torne seus ActionForm s subclasses de ValidatorForm ou ValidatorActionForm Se estiver usando DynaActionForm, passe a extender de DynaValidatorForm ou DynaValidatorActionForm
85 NoticiaForm package net.noticias.form; import org.apache.struts.validator.*; public class NoticiaForm extends ValidatorActionForm { private String id; private String texto; private String titulo; private String data; private String tipodenoticia; private String[] noticiasselecionadas; {...} }
86 validation.xml Específico da sua aplicação Configuração das regras aplicadas a cada campo do seu formulário Torna desnecessário o método validate() do ActionForm
87 validator-rules.xml Fornecido pelo Struts Regras que já fazem parte do Validator Fica dentro da lib struts-core.jar, no pacote org.apache.struts.validator
88 Plugin Validator Para começar a usar o Validator, acrescente o plugin no struts-config.xml <plug-in classname="org.apache.struts.validator.validatorplugin"> <set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml, /WEB-INF/validation.xml" /> </plug-in>
89 Validação no Cliente O Validator pode fazer a validação no lado do cliente Para tanto, acrescente a tag seguinte logo após o <head> Essa tag irá gerar todo o código javascript para validar seu formulário <head> <html:javascript formname="noticiaform" />
90 Validação no Cliente É gerado automaticamente um método javascript validatexxx, onde Xxx é o nome do seu formulário Atualize a tag html:form para seus formulários <html:form action="/noticia?comando=confirmar" onsubmit="return validatenoticiaform(this)">
91 MessageResources # erro.tipodenoticia.id.requerido={0} é requerido erro.tipodenoticia.descricao.requerido={0} é requerida # tipodenoticia.id=id tipodenoticia.descricao=descrição # noticia.id=id noticia.data=data # errors.required={0} is required. errors.minlength={0} can not be less than {1} characters. errors.maxlength={0} can not be greater than {1} characters. errors.invalid={0} is invalid. errors.byte={0} must be a byte. errors.short={0} must be a short. errors.integer={0} must be an integer. errors.long={0} must be a long. errors.float={0} must be a float. errors.double={0} must be a double. errors.date={0} is not a date. errors.range={0} is not in the range {1} through {2}. errors.creditcard={0} is an invalid credit card number. errors. ={0} is an invalid address.
92 Mensagens Personalizadas O Validator já tem várias mensagens configuradas (em inglês) Você pode definir suas próprias mensagens
93 validation.xml <?xml version="1.0" encoding="iso "?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN" " <form-validation> <formset> <form name="tipodenoticiaform"> <field property="id" depends="required,integer"> <arg key="tipodenoticia.id" /> </field> <field property="descricao" depends="required"> <msg name="required" key="erro.tipodenoticia.descricao.requerido" /> <arg key="tipodenoticia.descricao" /> </field> </form>
94 validation.xml <form name="noticiaform"> <field property="id" depends="required,integer"> <arg key="noticia.id" /> </field> <field property="data" depends="required,date"> <arg key="noticia.data" /> <var> <var-name>datepattern</var-name> <var-value>dd/mm/yyyy</var-value> </var> </field> </form> </formset> </form-validation>
95 Regras de Validação <form name="tipodenoticiaform"> Nome do formulário definido no struts-config.xml <field property="id" depends="required,integer"> Nome da propriedade e suas dependências (definidas no validator-rules.xml) <arg key="tipodenoticia.id" /> Essa é a mensagem que substitui o parâmetro {0} no MessageResources caso o campo não tenha um valor válido <field property="descricao" depends="required"> <msg name="required" key="erro.tipodenoticia.descricao.requerido" /> Essa é a mensagem personalizada para o validador required <var-name>datepattern</var-name> <var-value>dd/mm/yyyy</var-value> Padrão para data. Veja a lista na documentação da SimpleDateFormat
96 Exemplo de Popup s Ao lado você pode ver alguns exemplos de mensagens No primeiro você pode ver uma mensagem padrão (em inglês) e uma personalizada Para entender o mecanismo de troca de mensagens, veja todos os arquivos envolvidos
97 Exercícios Crie as regras de validação para o Formulário FonteForm
98 JSP2.0 EL Linguagem padrão da Sun para a camada de apresentação Acesso conciso, rápido e prático Acessa subpropriedades dos beans Sintaxe incrivelmente simples É da Sun...
99 Concorrentes jsp:usebean e jsp:getproperty Não pode acessar subpropriedades do bean Complexo e nem um pouco prático bean:write Também não pode acessar subpropriedades do bean Não é a saída mais prática Elementos de script JSP Resulta em um código JSP impossível de manter Destrói o principal propósito do MVC
100 Instalação da EL Para instalar você só precisa alterar o cabeçalho do web.xml Já faz parte dos containers mais novos, como Tomcat 5 Parte integrante do JSP2.0
101 web.xml <?xml version="1.0" encoding="iso "?> <web-app xmlns=" xmlns:xsi=" xsi:schemalocation=" web-app_2_4.xsd" version="2.4"> {...} </web-app>
102 Invocando a EL Forma básica ${expressão} ${bean.propriedade} Você pode combiná-la com as demais notações <jsp:include page="${expr1}blah${expr2}" />
103 Exemplo com Struts taglib uri="/web-inf/struts-bean.tld" prefix="bean" %> <UL> <LI>First name: <bean:write name="contactformbean" property="firstname"/> <LI>Last name: <bean:write name="contactformbean" property="lastname"/> <LI> address: <bean:write name="contactformbean" property=" "/> <LI>Fax number: <bean:write name="contactformbean" property="faxnumber"/> </UL>
104 Agora com EL <UL> <LI>First name: ${contactformbean.firstname} <LI>Last name: ${contactformbean.lastname} <LI> address: ${contactformbean. } <LI>Fax number: ${contactformbean.faxnumber} </UL>
105 Exercícios No formulário de consulta notícias, combine as tags Struts com a JSP EL
Minicurso de MVC web com Struts. EclipseDay@Serpro Felipe F Nascimento felipenasc@inf.puc-rio.br
Minicurso de MVC web com Struts EclipseDay@Serpro Felipe F Nascimento felipenasc@inf.puc-rio.br Agenda MVC Web e Command Visão Geral, Conceitos e terminologia Exemplo Conceitos Avançados Referências Laboratório
Leia maisJ550. Apache Struts. Helder da Rocha (helder@acm.org) www.argonavis.com.br
J550 Apache Struts Helder da Rocha (helder@acm.org) www.argonavis.com.br 1 Sobre este módulo Este é um módulo opcional. Apresenta uma visão geral do framework Struts, usado para desenvolver aplicações
Leia maisCurso de Introdução ao
Curso de Introdução ao Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br O que é? Struts Struts é um framework gratuito para construção de aplicações web implementadas em Java.
Leia maisProf. Roberto Desenvolvimento Web Avançado
Resposta exercício 1: Configuração arquivo web.xml helloservlet br.com.exercicios.helloservlet
Leia maisJava para WEB. Servlets
Servlets Servlets são classes Java que são instanciadas e executadas em associação com servidores Web, atendendo requisições realizadas por meio do protocolo HTTP. Servlets é a segunda forma que veremos
Leia maisArquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC
Arquitetura de Aplicações JSP/Web Padrão Arquitetural MVC Arquitetura de Aplicações JSP/Web Ao projetar uma aplicação Web, é importante considerála como sendo formada por três componentes lógicos: camada
Leia maisMaterial de apoio a aulas de Desenvolvimento Web. Tutorial Java WEB JSP & HTML & CSS & CLASSE & OBJETOS. AAS - www.aas.pro.
Material de apoio a aulas de Desenvolvimento Web Tutorial Java WEB JSP & HTML & CSS & CLASSE & OBJETOS AAS - www.aas.pro.net Março-2012 Este pequeno tutorial tem como objetivo conduzir o programador passo-a-passo
Leia maisJ2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr
J2EE Exemplo completo Utilização Servlet Instrutor HEngholmJr Page 1 of 9 AT09 Exemplo complete Utilização Servlet Version 1.1 December 5, 2014 Indice 1. BASEADO NOS EXEMPLOS DE CÓDIGO DESTA APOSTILA,
Leia maisTencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04
Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04 Agenda 1. 2. Web Container TomCat 2 3 J2EE permite criar aplicações Web dinâmicas (com conteúdo dinâmico)
Leia maisJava II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com
Java II Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Por quê JSP? Com Servlets é fácil Ler dados de um formulário Recuperar dados de uma requisição Gerar informação de resposta Fazer gerenciamento
Leia maisDesenvolvimento WEB em JAVA. Palestrante: Lourival F. de Almeida Júnior
Desenvolvimento WEB em JAVA Palestrante: Lourival F. de Almeida Júnior Agenda Introdução Servlet Arquitetura de Software Velocity Struts Conclusão Referências Introdução (antes) Programador Produto Introdução
Leia maisAssociação Carioca de Ensino Superior Centro Universitário Carioca
Desenvolvimento de Aplicações Web Lista de Exercícios Métodos HTTP 1. No tocante ao protocolo de transferência de hipertexto (HTTP), esse protocolo da categoria "solicitação e resposta" possui três métodos
Leia mais!" # # # $ %!" " & ' ( 2
!"# # #$ %!" "& ' ( 2 ) *+, - 3 . / 4 !" 0( # "!#. %! $""! # " #.- $ 111.&( ( 5 # # 0. " % * $(, 2 % $.& " 6 # #$ %% Modelo (Encapsula o estado da aplicação) Implementado como JavaBeans Responde a consulta
Leia maisAcessando um Banco de Dados
Acessando um Banco de Dados Introdução Agora que você já está craque em JSP e já instalou seu servidor, vamos direto para a parte prática! Neste tutorial vamos aprender a acessar um banco de dados. Para
Leia maisUniversidade Católica de Brasília Pró-Reitoria de Graduação Sistemas de Informação. na Prática. Por: Fernando Goulart
Universidade Católica de Brasília Pró-Reitoria de Graduação Sistemas de Informação Struts na Prática Por: Fernando Goulart 1 Leituras recomendadas Husted, Ted. Struts em Ação. Ciência Moderna, 2004. Spielman,
Leia maisAula 03 - Projeto Java Web
Aula 03 - Projeto Java Web Para criação de um projeto java web, vá em File/New. Escolha o projeto: Em seguida, na caixa Categorias selecione Java Web. Feito isso, na caixa à direita selecione Aplicação
Leia maisProgramando em PHP. Conceitos Básicos
Programando em PHP www.guilhermepontes.eti.br lgapontes@gmail.com Conceitos Básicos Todo o escopo deste estudo estará voltado para a criação de sites com o uso dos diversos recursos de programação web
Leia maisAula 4. Objetivos. Conteúdo dinâmico na internet.
Aula 4 Objetivos Conteúdo dinâmico na internet. Para uma solicitação da Web mais simples, um navegador solicita um documento HTML e o servidor Web encontra o arquivo correspondente e devolve. Se o documento
Leia maisDWR DIRECTED WEB REMOTING
DWR DIRECTED WEB REMOTING Vamos ver nesse artigo um pouco sobre o Frameworks Ajax para Java, o DWR. Vamos ver seus conceitos, utilidades, vantagens, algumas práticas e fazer o passo a passo para baixar,
Leia maisTUTORIAL DE INTRODUÇÃO AO CEWOLF
1 TUTORIAL DE INTRODUÇÃO AO CEWOLF CRIANDO GRÁFICOS COM JSP, CEWOLF/JFREECHART E MYSQL 1. Introdução O Cewolf (http://cewolf.sourceforge.net/) é uma biblioteca que facilita a criação de gráficos dinâmicos
Leia maisJava para Desenvolvimento Web
Java para Desenvolvimento Web Servlets A tecnologia Servlet foi introduzida pela Sun Microsystems em 1996, aprimorando e estendendo a funcionalidade e capacidade de servidores Web. Servlets é uma API para
Leia maisEstudo Dirigido - Parte 1
Linguagem Java para Web - JSP Professora Lucélia Estudo Dirigido - Parte 1 Na primeira parte deste tutorial, vamos receber os dados de um formulário e verificar se os dados foram ou não preenchidos. Se
Leia maisGuia para Iniciantes do WebWork
Guia para Iniciantes do WebWork Marcelo Martins Este guia descreve os primeiros passos na utilização do WebWork Introdução Desenvolver sistemas para Web requer mais do que simplesmente um amontoado de
Leia maisTutorial de NetBeans IDE Acessando banco de dados com Struts Data Source
Tutorial de NetBeans IDE Acessando banco de dados com Struts Data Source Configuraçãoes e Software Antes de começar a escrita do código, você tem que certificar-se que tem todo o software necessário e
Leia maisWebWork 2. João Carlos Pinheiro. jcpinheiro@cefet-ma.br
WebWork 2 João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão: 0.5 Última Atualização: Agosto/2005 1 Agenda Introdução WebWork 2 & XWork Actions Views Interceptadores Validação Inversão de Controle (IoC)
Leia maisEvolução guiada por APIs. com REST para modernizar seu legado
Evolução guiada por APIs Option #2 híbrida Criando uma arquitetura com REST para modernizar seu legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da
Leia maisJavaScript. JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos.
JavaScript JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos. Pode ser usada dentro do próprio arquivo HTML ou estruturada em um
Leia maisJava na Web. Aplicações Web
Montando o ambiente com HSQLDB JSP com um conteúdo de banco de dados: JDBC Integre JSPs com servlets aplicando o Modelo-Visualização- Controle Montando o ambiente com HSQLDB Faça a transferênci da página
Leia maisJSP: JAVA SERVER PAGES
PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB JSP: JAVA SERVER PAGES Prof. Dr. Daniel Caetano 2011-2 Visão Geral 1 2 3 4 O que é um JSP? Tags de JSP Trocando um Servlet por JSP Atividade Material de Estudo Material
Leia maisWeb e Tecnologia Java: JSP/Servlets. Aula 10. Desenvolvimento em N Camadas
Web e Tecnologia Java: JSP/Servlets 10.1 Aula 10 Introdução Desenvolvimento em N Camadas 10.2 A tendência atual no desenvolvimento de programas corporativos é fornecer estruturas de N camadas Objetiva-se
Leia maisTUTORIAL JSP & SERVLET
TUTORIAL JSP & SERVLET A.A.S. UNINOVE WWW.AAS.PRO.BR Exemplo simples de JSP com Servlet (para envio e recebimento de dados) Sumário JSP & SERVLET... 2 1. Criando Projeto... 2 2. O primeiro JSP... 3 3.
Leia maisProgramação II Programação para a Web. Christopher Burrows
Programação II Programação para a Web Christopher Burrows Apache Tomcat O Apache Tomcat é um Servlet Container desenvolvido pela Apache Software Foundation. Implementa as tecnologias Java Servlets e Java
Leia maisIntrodução. História. Como funciona
Introdução O HTML é uma linguagem de marcação utilizada para desenvolvimento de sites. Esta linguagem surgiu junto com o HTTP, ambos possibilitaram a internet ser popularizada. História O HTML foi criado
Leia maisJSP: JAVA SERVER PAGES
PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB JSP: JAVA SERVER PAGES Prof. Dr. Daniel Caetano 2012-1 Objetivos Compreender o que é e como funciona o JSP Compreender as tags do JSP Capacitar para a substituição
Leia maisUse a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP
Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP Software cliente: browser e outros Protocolo HTTP Infraestrutura de transporte
Leia maismkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos
Programando em PHP www.guilhermepontes.eti.br lgapontes@gmail.com Criando uma Calculadora Primeiramente deve se criar uma estrutura para armazenar os arquivos necessários para o funcionamento da calculadora.
Leia maisJ550. Model View Controller
J550 Model View Controller 1 Design de aplicações JSP Design centrado em páginas Aplicação JSP consiste de seqüência de páginas (com ou sem beans de dados) que contém código ou links para chamar outras
Leia maisProgramação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza
Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem
Leia maisO que fazer ao receber o Caso de Uso NOMEDAENTIDADE CRUD?
O que fazer ao receber o Caso de Uso NOMEDAENTIDADE CRUD? Um caso de uso envolve uma regra de negocio com as telas e entidades associadas na operação. No documento é descrito todas as validações de tela
Leia maisRelatório do GPES. Conhecendo o Framework Struts
Relatório do GPES Relatório referente à criação da camada de regra de negócio com a utilização do Framework Struts para o desenvolvimento de um exemplo de Cadastro de Clientes. Conhecendo o Framework Struts
Leia maisINTRODUÇÃO À TECNOLOGIA SERVLETS
PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO À TECNOLOGIA SERVLETS Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o conceito aplicações orientada a serviços via web Apresentar o papel dos contentores
Leia maisDOCUMENTAÇÃO DO FRAMEWORK - versão 2.0
DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando
Leia maisManual de Integração Via Gadget. Passo a passo para realizar a integração entre websites e a plataforma Virtual Target.
Manual de Integração Via Gadget Passo a passo para realizar a integração entre websites e a plataforma Virtual Target. Manual de Integração Via Gadget 1. Introdução 1.1. O que é? Virtual Target Gadgets
Leia maisLista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.
Lista de Revisão 1. Nos sistemas web, geralmente os usuários apresentam dois problemas típicos, a desorientação e a sobrecarga cognitiva. Discorra sobre esses problemas. 2. Apresente as principais diferenças
Leia maisHTML / JAVASCRIPT. A versão atual é o HTML5 (seus predecessores imediatos são HTML 4.01, XHTML 1.1, etc.).
HTML / JAVASCRIPT Estamos iniciando o estudo do HTML através das TAGS (comandos) para construir formulários. Isso facilitará a continuidade dos nossos estudos da linguagem de programação JavaScript, a
Leia maisPrática Sobre Servlets e JSP
Prática Sobre Servlets e JSP 1. Localize a pasta do Tomcat (TOMCAT_HOME); 2. Acesse a pasta bin e execute tomcat5w.exe; 3. Abra o Navegador e acesse http://localhost:8080 (A apresentação de uma página
Leia mais4 A Camada de Apresentação
4 A Camada de Apresentação O objetivo da camada de apresentação em uma aplicação multicamadas é de expor a lógica de negócios ao usuário e possibilitar a interação do usuário com a aplicação. Em aplicações
Leia maisComo já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser
A1Criando um módulo de negócio Capítulo 27 Aplicação dividida em módulos - Introdução Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser compreendido como uma solução de
Leia mais0,5 pelo negrito das palavras ID, Nome, E-mail e Analisar em outro momento.
IFES - Campus Cachoeiro de Itapemirim-ES Curso Técnico em Informática Disciplina: Programação Web Professor: Flávio Izo e Rafael Vargas Data: 07/04/2015 Aluno: GABARITO Valor: 12,5 Conteúdo: HTML + Formulários
Leia maisUniversidade da Beira Interior
Universidade da Beira Interior Relatório Apresentação Java Server Pages Adolfo Peixinho nº4067 Nuno Reis nº 3955 Índice O que é uma aplicação Web?... 3 Tecnologia Java EE... 4 Ciclo de Vida de uma Aplicação
Leia maiswww.coldfusionbrasil.com.br
www.coldfusionbrasil.com.br 2000 PASSANDO VARIÁVEIS ATRAVÉS DE FORM E URL 3 ALTERA.CFM 3 FORMALTERA.CFM 4 ALTERA.CFM 4 FORMALTERA.CFM 4 CRIANDO E MANIPULANDO VARIÁVEIS COM CFSET 4 VALORES ESTÁTICOS 5 PARÂMETROS
Leia maisJava II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com
Java II Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Servlets Servlet Aplicação Java que é executada no servidor que estende a capacidade do servidor Web Alternativa Java para os scripts CGI Gerenciado
Leia maisProgramação Web Aula 12 - Java Web Software
Programação Web Aula 12 - Java Web Software Bruno Müller Junior Departamento de Informática UFPR 25 de Maio de 2015 1 Java 2 Java Web Software 3 Servlets Modelo de Trabalho Funcionamento API Java Código
Leia maisCurso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais
Curso de Java Geração de Páginas WEB através de JSP Todos os direitos reservados Klais JSP e Servlets Servletsconstituem um mecanismo conveniente para a geração de páginas HTML dinâmicas e seu tratamento
Leia maisIntrodução ao PHP. Prof. Késsia Marchi
Introdução ao PHP Prof. Késsia Marchi PHP Originalmente PHP era um assíncrono para Personal Home Page. De acordo com convenções para atribuições de nomes recursivas do GNU foi alterado para PHP Hypertext
Leia maisCriação de Servlets Name Directory Build WAR JSP/Servlet frameworks Launch URL Package Class name Generate header comments
Criação de Servlets 1. Crie um novo projeto através do Menu File New Project. 2. Acesse o Menu File New. 3. Na janela Object Gallery que surgirá, selecione a guia Web. 4. Escolha o ícone que corresponde
Leia maisTutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007
Tutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007 Nível: Intermediário Este tutorial tem como objetivo criar um simples componente que renderiza uma tag label utilizando recursos
Leia maisObjetos Implícitos. Conceito. Instanciados pelo próprio contêiner. Disponíveis em quaisquer páginas JSP.
Slide 1 Conceito Instanciados pelo próprio contêiner. Disponíveis em quaisquer páginas JSP. Instruções de criação inseridas no método _jspservice( ). Slide 2 Identificação e tipo Identificação Tipo application
Leia maisPadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M
JAVA Marcio de Carvalho Victorino 1 Servlets 2 1 Plataforma WEB Baseada em HTTP (RFC 2068): Protocolo simples de transferência de arquivos Sem estado (não mantém sessão aberta) Funcionamento (simplificado):
Leia maisPÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL
PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL Formulários HTML Aula 07: Formulários e Frames HTML Os formulários HTML são utilizados, geralmente, como entradas de dados prépreenchimento,
Leia maisTecnologias Web. Java Enterprise Edition
Tecnologias Web Java Enterprise Edition Cristiano Lehrer, M.Sc. Introdução Java Enterprise Edition (JEE): Plataforma de tecnologias para o desenvolvimento de aplicações corporativas distribuídas. É uma
Leia maisCriando uma agenda simples com NetBeans 6.5
Criando uma agenda simples com NetBeans 6.5 (Swing application framework e Beansbinding) Já faz algum tempo que escrevi uma agenda simples usando o Eclipse com o Visual Class Editor. Demorei em torno de
Leia maisArquitetura de uma Webapp
Arquitetura de uma Webapp Arquitetura J2EE Containers e componentes MVC: introdução Frederico Costa Guedes Pereira 2006 fredguedespereira@gmail.com Plataforma J2EE World Wide Web e a Economia da Informação
Leia maisPASSO A PASSO GOOGLE DOCS - FORMULÁRIOS GOOGLE DOCS
CEEBJA - PALOTINA CENTRO ESTADUAL DE EDUCAÇÃO BÁSICA PARA JOVENS E ADULTOS NRE- Toledo MUNICÍPIO: PALOTINA PASSO A PASSO GOOGLE DOCS - FORMULÁRIOS GOOGLE DOCS O Google Docs é uma das recentes ferramentas
Leia maisManual do Usuário CFCWeb BA
ÍNDICE Acesso ao sistema... 2 Tela Principal... 3 Cadastro de Candidatos... 5 Agenda Teórico... 6 Agenda Prático... 7 Consulta Agendamentos do Candidato por Serviço... 9 Cadastro de Grade Horária... 10
Leia maisPara participar de um mapa colaborativo usando o Cmap Tools
Antes de trabalhar num mapa colaborativo, você deve instalar o software no seu computador. Pegue a sua cópia, gratuita, em http://cmap.ihmc.us/download/. Veja a versão compatível com o seu computador.
Leia maisJavaScript (Funções, Eventos e Manipulação de Formulários)
Linguagem de Programação para Web JavaScript (Funções, Eventos e Manipulação de Formulários) Prof. Mauro Lopes 1-31 23 Objetivos Iremos avançar um pouco mais em nosso estudo sobre o JavaScript. Iremos
Leia maisAplicações de Linguagem de Programação Orientada a Objeto
Aplicações de Linguagem de Programação Orientada a Objeto WEB JSP Professora Sheila Cáceres JSP É uma tecnologia que permite incluir código Java dentro de páginas web. Uma página jsp é uma página HTML
Leia maisGerenciamento de Contatos
Gerenciamento de Contatos O objetivo deste módulo é ajudar a gerenciar todos os contatos da empresa. Além dos dados mais importantes, o módulo permite cadastrar anotações e relacionar as tarefas e eventos
Leia maisJava na WEB Componentes Bean
1 Java na WEB Componentes Bean Objetivo: Ao final da aula o aluno será capaz de: Criar site dinâmico utilizando componentes Bean Utilizar Tags de ação Empregar Coleções de Bean. Sumário 5. Definição de
Leia maisMais sobre uso de formulários Site sem Ajax
Mais sobre uso de formulários Site sem Ajax Página com busca padrão 1 Página com o resultado da busca carregada no local da anterior (o formulário está vazio) Site com Ajax 2 Site usando Ajax para preencher
Leia maisTUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!!
TUTORIAL DO ALUNO Olá, bem vindo à plataforma de cursos a distância da Uniapae!!! O Moodle é a plataforma de ensino a distância utilizada pela Uniapae sendo a unidade de ensino para rápida capacitação
Leia maisDesenvolvimento de aplicação web com framework JavaServer Faces e Hibernate
Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Tiago Peres Souza 1, Jaime Willian Dias 1,2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil tiagop_ti@hotmail.com 2 Universidade
Leia maisMANUAL DO ANIMAIL 1.0.0.1142 Terti Software
O Animail é um software para criar campanhas de envio de email (email Marketing). Você pode criar diversas campanhas para públicos diferenciados. Tela Principal do sistema Para melhor apresentar o sistema,
Leia maisProgramação Web. Professor: Diego Oliveira. Conteúdo 02: JSP e Servlets
Programação Web Professor: Diego Oliveira Conteúdo 02: JSP e Servlets JSP JSP é um template de uma página Web que usa Java para gerar HTML dinamicamente JSP é considerado server-side e roda em um objeto
Leia maisCurso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais
Curso de Java Geração de Páginas WEB Aplicação WEB Numa aplicação WEB de conteúdo dinâmico As páginas são construídas a partir de dados da aplicação (mantidos num banco de dados). Usuários interagem com
Leia maisManual de Utilização
Manual de Utilização Versão 1.0 18/01/2013 Sempre consulte por atualizações deste manual em nossa página. O Cotação Web está em constante desenvolvimento, podendo ter novas funcionalidades adicionadas
Leia maisAULA 3 FERRAMENTAS E APLICATIVOS DE NAVEGAÇÃO, DE CORREIO ELETRÔNICO, DE GRUPOS DE DISCUSSÃO, DE BUSCA E PESQUISA (PARTE II)
AULA 3 FERRAMENTAS E APLICATIVOS DE NAVEGAÇÃO, DE CORREIO ELETRÔNICO, DE GRUPOS DE DISCUSSÃO, DE BUSCA E PESQUISA (PARTE II) A seguir vamos ao estudo das ferramentas e aplicativos para utilização do correio
Leia maisEscritório Virtual Administrativo
1 Treinamento Módulos Escritório Virtual Administrativo Sistema Office Instruções para configuração e utilização do módulo Escritório Virtual e módulo Administrativo do sistema Office 2 3 1. Escritório
Leia maisWEBDESIGN. Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira
WEBDESIGN Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira Formulários e JavaScript Como visto anteriormente, JavaScript pode ser usada para
Leia maisTUTORIAL SPRING SECURITY PROGRAMAÇÃO COM FRAMEWORKS Responsáveis: Ana Luíza Cruvinel, Maikon Franczak e Wendel Borges
Versão 1.0 TUTORIAL SPRING SECURITY PROGRAMAÇÃO COM FRAMEWORKS Responsáveis: Ana Luíza Cruvinel, Maikon Franczak e Wendel Borges Data: 01/12/2014 SUMÁRIO 1. INTRODUÇÃO... 2 2. O QUE É SPRING SECURITY?...
Leia maisSILVIO COSTA MOREIRA UTILIZAÇÃO DO STRUTS FRAMEWORK NO DESENVOLVIMENTO DE UM GERENCIADOR DE EVENTOS
SILVIO COSTA MOREIRA UTILIZAÇÃO DO STRUTS FRAMEWORK NO DESENVOLVIMENTO DE UM GERENCIADOR DE EVENTOS Palmas 2006 i SILVIO COSTA MOREIRA UTILIZAÇÃO DO STRUTS FRAMEWORK NO DESENVOLVIMENTO DE UM GERENCIADOR
Leia maisWeb Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web:
Web Browser como o processo cliente Servidor web com páginas estáticas Vs Aplicações dinâmicas para a Web: 1 Cliente Web browser HTTP porto 80 Servidor web... JDBC RMI XML... Base de Dados Aplicação em
Leia mais2 echo "PHP e outros.";
PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento
Leia mais02 - Usando o SiteMaster - Informações importantes
01 - Apresentação do SiteMaster - News Edition O SiteMaster foi desenvolvido para ser um sistema simples de gerenciamento de notícias, instalado em seu próprio computador e com configuração simplificada,
Leia mais( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO
Serviço Nacional de Aprendizagem Comercial E.E.P. Senac Pelotas Centro Histórico Programa Nacional de Acesso ao Ensino Técnico e Emprego Curso Técnico em Informática ( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO
Leia maisConteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web
Introdução Formulários rios & Conteúdo Dinâmico Mário Antonio Meireles Teixeira Dept o. de Informática - UFMA A Web surgiu inicialmente como uma nova forma de comunicação de informações, fazendo uso de
Leia maisCriando um script simples
Criando um script simples As ferramentas de script Diferente de muitas linguagens de programação, você não precisará de quaisquer softwares especiais para criar scripts de JavaScript. A primeira coisa
Leia maisIntrodução. <facelets> Templates. Configurações. Componentes. Prof. Enzo Seraphim
Introdução Templates Configurações Componentes Prof. Enzo Seraphim Definição Linguagem de descrição de páginas (PDL Page Description Language) criada para JSF. Estabelece templates que suportam
Leia maisParte I. Demoiselle Mail
Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework
Leia mais1 Cadastre-se Mozilla Firefox. AQUI Esqueci a senha Login Senha. Esqueci a senha E-mail Login Enviar Solicitação OBS: Nome: Login: E-mail:
1 Essa é a tela de login do Sistema de Atendimento, siga o passo a passo abaixo. Se esse é o seu primeiro cadastro, clique em Cadastre-se. O sistema só irá funcionar perfeitamente se for acessado pelo
Leia maisCONSTRUÇÃO DE BLOG COM O BLOGGER
CONSTRUÇÃO DE BLOG COM O BLOGGER Blog é uma abreviação de weblog, qualquer registro frequênte de informações pode ser considerado um blog (últimas notícias de um jornal online por exemplo). A maioria das
Leia maisCurso de Aprendizado Industrial Desenvolvedor WEB
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Servidor de Aplicações WEB Tomcat Servidor Tomcat Foi desenvolvido
Leia maisManual Integra S_Line
1 Introdução O é uma ferramenta que permite a transmissão Eletrônica de Resultado de Exames, possibilitando aos Prestadores de Serviços (Rede Credenciada), integrarem seus sistemas com os das Operadoras
Leia maisProgramação para Internet II
Programação para Internet II Aulas 09 e 10 Fernando F. Costa nando@fimes.edu.br Linguagens de Expressão - EL É uma Linguagem de script que permite o acesso à componentes Java (JavaBeans) através de JSP.
Leia maisPasso a Passo. WebSphere Message Broker. Fluxo como WebService
Passo a Passo WebSphere Message Broker Fluxo como WebService Alexandre José Batista ajbatist@ibest.com.br Criado em: 07/11/08 Página 1 de 38 Índice 1. OBJETIVOS DO DOCUMENTO... 4 2. CRIANDO UM FLUXO NO
Leia maisGUIA BÁSICO DA SALA VIRTUAL
Ambiente Virtual de Aprendizagem - MOODLE GUIA BÁSICO DA SALA VIRTUAL http://salavirtual.faculdadesaoluiz.edu.br SUMÁRIO 1. Acessando Turmas 4 2. Inserindo Material 4 3. Enviando Mensagem aos Alunos 6
Leia maisEstá apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.
1. Descrição Geral Este manual descreve as operações disponíveis no módulo VTWEB Client, cuja finalidade é gerenciar cadastros de funcionários, realização de pedidos e controle financeiro dos pedidos.
Leia maisProgramação de Computadores - I. Profª Beatriz Profº Israel
Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo
Leia maisINTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO
INTRODUÇÃO 12. DOCUMENTAÇÃO Na plataforma Java SE 7, há cerca de 4000 classes e interfaces disponíveis para utilizarmos em nossas aplicações Podemos visualizar a documentação dessas classes e interfaces
Leia mais