F7

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View F7 as PDF for free.

More details

  • Words: 635
  • Pages: 2
JSTL •

Föreläsning 7 JSTL EJB 3.0

• •

Scriptlet Count to 10 in JSP scriptlet <% for(int i=1;i<=10;i++) {%> <%=i%>
<% } %>

JSTL <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> Count to 10 Example (using JSTL)


Exempel <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> If with Body You guessed it!


You are wrong


Guess what computer language I am thinking of?


Erbjuder ett sätt att ytterligare separera presentation från logik genom att minimera användningen av scriptlets. Består av fyra delbibliotek – Core Tag Library (core) • Stöd för villkor, slingor, uttrycksevaluering, inmatning och utmatning. – Formatting/Internationalization Tag Library (fmt) • För att hantera datumformat, konverteringar etc. – Database Tag Library (sql) • Taggar för att accessa databaser, bör dock ej användas i en driftsatt lösning, dataaccessen bör istället ske i JavaBeans eller i EJB:er – XML Tag Library (xml) • XML stöd I JSP 2.0 finns även stöd för EL (Expression Language) så att man kan skriva

Your total, including shipping is ${total+shipping}

I JSTL (kan adderas till JSP 1.2) måste man istället skriva:

Your total, including shipping is



Problem med EJB 2.1 • • • •

• • •

The current EJB model requires you to create several component interfaces and implement several unnecessary callback methods. The component interfaces require implementation of EJBObject or EJBLocalObject and handling of many unnecessary exceptions. The EJB deployment descriptor is complex and error prone. The container-managed persistence, being based on the EJB model, is overly complex to develop and manage. Several basic features are missing--such as a standard way to define a primary key using a database sequence. The EJBQL syntax is very limited. EJB components are not truly object-oriented, as they have restrictions for using inheritance and polymorphism. Developers cannot test EJB modules outside an EJB container and debugging an EJB inside the container is a nightmare. Looking up and invoking an EJB is a complex task. Detailed knowledge of JNDI is required for even the most basic use of an EJB in your application.

1

Lösningar i EJB 3.0 • Removing need for unnecessary interfaces and implementation of callback methods • Using metadata annotations instead of deployment descriptors • Using regular Java classes as EJBs and regular business interfaces for EJBs

EJB 3.0 • Har inget HomeInterface och kräver inte RemoteInterface • Ingen deployment descriptor • ”Annotations” – Erbjuder en möjlighet att definiera egenskaper för klasser och metoder, börjar med ”@”. Är en del av J2SE5.0. Redan över 50 st definierade...

EJB 3.0

Exempel •



Klassnivå

@Stateless

– @Stateless, Stateful, MessageDriven, Entity – @Remote • Alla EJB:er är lokala per default.

– @Resource(name="jdbc/db", resourceType="javax.sql.DataSource")



Fältnivå – @Id • För att markera primärnyckel

– @Transient



• Endast för entitetsbönor, fält markerade ska inte vara persistenta.



EJB import javax.ejb.Stateless;

Metodnivå – @BusinessMethod • Om RemoteInteface saknas skapas ett sådant med samtliga publika metoder från EJBklassen. Om man använder denna ”annotation” skapas ett remoteinterface med endast markerade metoder i RemoteInterfacet

– @Remove



• EJB:n ska raderas efter metoden har anropats (Cart checkout).

public class HelloWorldBean implements HelloWorld { public void sayHello(String name){ System.out.println("Hello "+name +" from your first EJB 3.0 component ..."); } } Interface import javax.ejb.Remote; @Remote public interface HelloWorld { public void sayHello(String name); } Klient @EJB HelloWorld bean;

Exempel @Entity @Table(name=”spelare") @NamedQuery(name="findAll",queryString="SELECT OBJECT(p) FROM spelare p"); public class Player implements java.io.Serializable { int id; @Id @Column(name = "ID", primaryKey = true, nullable = false) public String getId() { return id; } }

2

Related Documents

F7
November 2019 17
F7
November 2019 18
F7
October 2019 24
U17 F7
June 2020 9
Comando F7
June 2020 13
Test Unit 19 F7
June 2020 7