Desenvolvimento para Web em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM Lamarck Heinsch Mestrando PPGI/CT/UFSM
Tecnologias Web Java (OO) Fonte: Wikipedia
Tecnologias Web em Java Java SE: Applets Java EE: Servlets, JavaServer Pages (JSP), JavaServer Tag Library (JSTL), JavaServer Faces (JSF) Servlets código HTML dentro de código Java javax.servlet.* JavaServer Pages/Tag Library/Faces código Java dentro de código HTML javax.servlet.jsp.* tags + view templates Muita reutilização de código OO! Fonte: Oracle
JSP + JSF Relâmpago Fonte: O'Reilly
JSP + JSF Relâmpago submissao/create.xhtml <h:form> <h:panelgrid columns="2">... </h:panelgrid> <br /> <h:commandlink action="#{submissaocontroller.create}" value="#{bundle.createsubmissaosavelink}" /> <br /> <br /> <h:commandlink action="#{submissaocontroller.preparelist}" value="#{bundle.createsubmissaoshowalllink}" immediate="true"/> <br /> <br /> <h:link outcome="/index" value="#{bundle.createsubmissaoindexlink}"/> </h:form> public String preparecreate() { current = new Submissao(); selecteditemindex = 1; return "Create"; } public String create() { try { getfacade().create(current); JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle ").getstring("submissaocreated")); return preparecreate(); } catch (Exception e) { JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceE rroroccured")); return null; } } SubmissaoController.java
JSP + JSF Relâmpago <h:form> <h:panelgrid columns="2">... </h:panelgrid> <br /> <h:commandlink action="#{submissaocontroller.create}" value="#{bundle.createsubmissaosavelink}" /> <br /> <br /> <h:commandlink action="#{submissaocontroller.preparelist}" value="#{bundle.createsubmissaoshowalllink}" immediate="true"/> <br /> <br /> <h:link outcome="/index" value="#{bundle.createsubmissaoindexlink}"/> </h:form>
Tutorial JSF + DB, mais mastigado ainda by Lamarck Heinsch
Criando a aplicação Web Application
Criando a aplicação Servidor: GlassFish
Criando a aplicação
Utilizando o DB anterior
Criando as entidades a partir do DB
Selecionando a Data Source
Criando Data Source
Selecionando as entidades
Finalizando a criação de entidades
Criando páginas a partir das entidades
Selecionando as entidades desejadas
Configurando geração das páginas
Executando aplicação
Profit!
Lista de submissões
Criando uma nova submissão
JPA relâmpago Configurações no arquivo persistence.xml Unidade de persistência <persistence unit name="dbdemoapppu" transaction type="resource_local"> <provider>org.eclipse.persistence.jpa.persistenceprovider</provider> <class>dbdemoapp.topico</class> <class>dbdemoapp.submissao</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/banco"/> <property name="javax.persistence.jdbc.password" value="sa"/> <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.clientdriver"/> <property name="javax.persistence.jdbc.user" value="sa"/> </properties> </persistence unit>
Netbeans + JPA 1)Conectar com o banco de dados 2)Gerar entidades (@Entity, etc.) - automático 3)Gerar arquivo de configuração - automático 4)Gerar controladores de persistência - automático Uma classe DAO (Data Access Object) para cada entidade Nesta classe, métodos CRUD (Create, Read, Update, Delete) public class TopicoJpaController { public void create(topico topico)... public void edit(topico topico)... public void destroy(integer id)...... }
Exercício: SAINF create table TOPICO (ID integer NOT NULL, DESCRICAO varchar(255) NOT NULL, PRIMARY KEY (ID)); (SQL) create table SUBMISSAO (ID integer NOT NULL, TITULO varchar(255) NOT NULL, AUTOR varchar(255) NOT NULL, TOPICO integer NOT NULL, PRIMARY KEY (ID), FOREIGN KEY (TOPICO) REFERENCES TOPICO (ID)); insert into TOPICO values (1,'Paradigmas de Programacao'); insert into TOPICO values (2,'Sistemas Operacionais'); insert into TOPICO values (3,'Redes de Computadores'); insert into TOPICO values (4,'Sistemas Distribuidos'); insert into SUBMISSAO values (1,'Artigo 1','Fulano',2); insert into SUBMISSAO values (2,'Artigo 2','Beltrano',1);