• No results found

Java J2EE Training Report

N/A
N/A
Protected

Academic year: 2021

Share "Java J2EE Training Report"

Copied!
63
0
0

Loading.... (view fulltext now)

Full text

(1)

A Training Report On

J2EE

A Training Report submitted in partial

fulfillment of requirements for the degree of

Bachelor of Engineering

In

Computer Science & Engineering

PREFACE

This report deals with programming in java and in particular advanced java.

Each and every topic is kept in proper sequence with thorough planning. The details of every topic are explained as simply as possible.

(2)

We hope that the project will find greater appreciation among different readers and teachers about its usefulness. It would be my sane opportunity to know if any mistakes have crept in to the script.

Acknowledgement

I acknowledge my gratitude and thank to all the well knowledge persons for giving me opportunity to avail all the best facilities available at this networking institute through which I have gained knowledge thinking so as too just in the environment suitable for harmonic adjustment. I am grateful to the following person for various

(3)

help rendered by them during my vocational training period.

Last but not the least; I thank my teacher, friends and my family members for their constant encouragement.

Table of Contents

Preface Acknowledgement Table of Contents 1. Programming languages. 2. Introduction to java. 3. J2EE 3.1.Servlets

(4)

3.1.1. HttpServletRequests 3.1.2. HttpServletResponse 3.1.3. HttpSessions 3.1.4. HttpCookies 3.2.Java Beans 3.3.JSP 4. DBMS 4.1.MySql 5. Ajax 6. Javascript 7. Bibliography

1.

Programming languages

A computer programming language is a language used to write compute programs, which involve a computer performing some kind of computationor algorithm and

(5)

possibly control external devices such as printers, disk drives, robots, and so on.A

programming language is an artificial language designed to express computations

that can be performed by a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely.

The earliest programming languages predate the invention of the computer, and were used to direct the behavior of machines such as Jacquard looms and player pianos. Thousands of different programming languages have been created, mainly in the computer field, with many more being created every year. Most

programming languages describe computation in an imperative style, i.e., as a sequence of commands, although some languages, such as those that support functional programming or logic programming, use alternative forms of description.

Computer programming languages are mainly categorized into-1. Procedural Programming language.

2. Object Oriented Programming language.

Procedural programming can sometimes be used as a synonym for imperative

programming (specifying the steps the program must take to reach the desired state), but can also refer (as in this article) to a programming paradigm, derived from structured programming, based upon the concept of the procedure call. Procedures, also known as routines, subroutines, methods, or functions (not to be confused with mathematical functions, but similar to those used in functional programming) simply contain a series of computational steps to be carried out. Any given procedure might be called at any point during a program's execution,

including by other procedures or itself.

Object-oriented programming (OOP) is a programming paradigm using

"objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming

(6)

techniques may include features such as data abstraction, encapsulation, messaging, modularity, polymorphism, and inheritance. Many modern programming languages now support OOP, at least as an option.

Fundamental features that support the OOP programming style in most object-oriented languages-

 Dynamic dispatch – when a method is invoked on an object, the object itself determines what code gets executed by looking up the method at run time in a table associated with the object. This feature distinguishes an object from an abstract data type (or module), which has a fixed (static) implementation of the operations for all instances. It is a programming methodology that gives modular component development while at the same time being very efficient.

 Encapsulation (or multi-methods, in which case the state is kept separate)

 Subtype polymorphism

 Object inheritance (or delegation)

Additional concepts used in object-oriented programming include:

 Classes of objects

 Instances of classes

 Methods which act on the attached objects.

 Message passing

 Abstraction

2.

Introduction to Java

Java is a programming language originally developed by James Gosling at Sun

Microsystems (which is now a subsidiary of Oracle Corporation) and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and

(7)

fewer low-level facilities. Java applications are typically compiled to bytecode (class file) that can run on any Java Virtual Machine (JVM) regardless of computer architecture. Java is a general-purpose, concurrent, class-based, object-oriented language that is specifically designed to have as few implementation dependencies as possible. It is intended to let application developers "write once, run anywhere". Java is currently one of the most popular programming languages in use,

particularly for server-client web applications.

The original and reference implementation Java compilers, virtual machines, and class libraries were developed by Sun from 1995. As of May 2007, in compliance with the specifications of the Java Community Process, Sun relicensed most of its Java technologies under the GNU General Public License. Others have also

developed alternative implementations of these Sun technologies, such as the GNU Compiler for Java, GNU Classpath, and Dalvik.

There were five primary goals in the creation of the Java language: 1. It should be "simple, object-oriented and familiar".

2. It should be "robust and secure".

3. It should be "architecture-neutral and portable". 4. It should execute with "high performance".

5. It should be "interpreted, threaded, and dynamic".

One characteristic of Java is portability, which means that computer programs written in the Java language must run similarly on any supported

hardware/operating-system platform. This is achieved by compiling the Java language code to an intermediate representation called Java bytecode, instead of directly to platform-specific machine code. Java bytecode instructions are

analogous to machine code, but are intended to be interpreted by a virtual machine (VM) written specifically for the host hardware. End-users commonly use a Java Runtime Environment (JRE) installed on their own machine for standalone Java applications, or in a Web browser for Java applets.

(8)

Standardized libraries provide a generic way to access host-specific features such as graphics, threading, and networking.

A major benefit of using bytecode is porting. However, the overhead of

interpretation means that interpreted programs almost always run more slowly than programs compiled to native executables would. Just-in-Time compilers were introduced from an early stage that compiles bytecodes to machine code during runtime. An edition of the Java platform is the name for a bundle of related programs from Sun that allow for developing and running programs written in the Java programming language. The platform is not specific to any one processor or operating system, but rather an execution engine (called a virtual machine) and a compiler with a set of libraries that are implemented for various hardware and operating systems so that Java programs can run

identically on all of them.

The Java Platform consists of several programs, each of which provides a distinct portion of its overall capabilities. For example, the Java compiler, which converts Java source code into Java bytecode (an intermediate language for the Java Virtual Machine (JVM)), is provided as part of the Java

Development Kit (JDK). The Java Runtime Environment (JRE), complementing the JVM with a just-in-time (JIT) compiler, converts

intermediate bytecode into native machine code on the fly. Also supplied are extensive libraries, pre-compiled in which are several other components, some available only in certain editions.

A Java Virtual Machine is a piece of software that is implemented on non-virtual hardware and on standard operating systems. A JVM provides an

environment in which Java bytecode can be executed, enabling such features as automated exception handling, which provides "root-cause" debugging

information for every software error (exception), independent of the source code. A JVM is distributed along with a set of standard class libraries that implement the Java application programming interface (API). Appropriate APIs bundled together form the Java Runtime Environment (JRE).The Java

(9)

developers. Since the introduction of Java, it has been by far the most widely used Java SDK.

3.

J2EE

Java Platform, Enterprise Edition or Java EE is a widely used platform for

server programming in the Java programming language. The Java platform

(Enterprise Edition) differs from the Java Standard Edition Platform (Java SE) in that it adds libraries which provide functionality to deploy fault-tolerant,

distributed, multi-tier Java software, based largely on modular components running on an application server.

Java EE is defined by its specification. As with other Java Community Process specifications, providers must meet certain conformance requirements in order to declare their products as Java EE compliant.

Java EE includes several API specifications, such as JDBC, RMI, e-mail, JMS, web services, XML, etc., and defines how to coordinate them. Java EE also features some specifications unique to Java EE for components. These include Enterprise JavaBeans, Connectors, servlets, portlets (following the Java Portlet specification), JavaServer Pages and several web service technologies. This allows developers to create enterprise applications that are portable and scalable, and that integrate with legacy technologies. A Java EE application server can handle

transactions, security, scalability, concurrency and management of the components that are deployed to it, in order to enable developers to concentrate more on the business logic of the components rather than on infrastructure and integration tasks.

3.1

Java Servlets

A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed via a request-response programming model. Although servlets can respond to any type of request, they are commonly used to

(10)

extend the applications hosted by Web servers. Thus, it can be thought of as a Java Applet that runs on a server instead of a browser.[1]

A Servlet is a Java class in Java EE that conforms to the Java Servlet API, a protocol by which a Java class may respond to requests. They are not tied to a specific client-server protocol, but are most often used with the HTTP protocol. Therefore, the word "Servlet" is often used in the meaning of "HTTP Servlet".[2]

Thus, a software developer may use a servlet to add dynamic content to a Web server using the Java platform. The generated content is commonly HTML, but may be other data such as XML. Servlets are the Java counterpart to non-Java dynamic Web content technologies such as CGI and ASP.NET. Servlets can

maintain state in session variables across many server transactions by using HTTP cookies, or URL rewriting.

To deploy and run, the Apache Tomcat Server may be used. It is an open source servlet container developed by the Apache Software Foundation (ASF). Tomcat implements the Java Servlet and the JavaServer Pages (JSP) specifications from Sun Microsystems, and provides a "pure Java" HTTP web server

environment for Java code to run. Life cycle of a servlet

1. The container calls the no-arg constructor.

2. The Web container calls the init() method. This method initializes the servlet and must be called before life of a servlet, the init() method is called only once.

3. After initialization, the servlet can service client requests. Each request is serviced in its own separate thread. The Web container calls the service() method of the servlet for

every request. The service() method determines the kind of request being made and dispatches it to an appropriate method to handle the request. The developer of the servlet must provide an implementation for these methods. If a request for a method that is not implemented by the servlet

(11)

is made, the method of the parent class is called, typically resulting in an error being returned to the requester.

4. Finally, the Web container calls the destroy() method that takes the servlet out of service. The destroy() method, like init(), is called only once in the lifecycle of a servlet.

The javax.servlet.http package contains a number of interfaces and classes that are commonly used by servlet developers.its functionality makes it easy to build servlets that work with HTTP requests and responses.

The following table summarizes the core interfaces that are provided in this

Interface Description 1. HttpServletRequ est 2. HttpServletResp onse 3. HttpSession

Enables servlets to read data from an Http request. Enables servlets to write data to an Http response. Allows session data to be read and written.

The following table summarizes the core classes that are provided in this package. The most important of these is HttpServlet.

Servlet developers typically extend this class in order to process Http Requests. Class Description 1. Cookie 2. HttpServle t 3. HttpSessio nEvent

Allows state information to be stored on a client machine. Provides methods to handle Httprequests and responses. Encapsulates a session changed event.

(12)

3.1.1

HttpServletRequests

The HttpServletRequest interface is implemented by the server. It enables a servlet to obtain information about a client request. Extends the ServletRequest interface to provide request information for HTTP servlets. The servlet container creates an HttpServletRequest object and passes it as an argument to the servlet's service methods (doGet, doPost, etc).

Method Summary

java.lang.String - getAuthType()

Returns the name of the authentication scheme used to protect the servlet. java.lang.String - getContextPath()

Returns the portion of the request URI that indicates the context of the request.

Cookie[] getCookies()

Returns an array containing all of the Cookie objects the client sent with this request.

long getDateHeader(java.lang.String name)

Returns the value of the specified request header as a long value that represents a Date object.

java.lang.String getHeader(java.lang.String name)

Returns the value of the specified request header as a String. java.util.Enumeration getHeaderNames()

(13)

java.util.Enumeration getHeaders(java.lang.String name)

Returns all the values of the specified request header as an Enumeration of String objects.

Int getIntHeader(java.lang.String name)

Returns the value of the specified request header as an int. java.lang.String getMethod()

Returns the name of the HTTP method with which this request was made, for example, GET, POST, or PUT.

java.lang.String getPathInfo()

Returns any extra path information associated with the URL the client sent when it made this request.

java.lang.String getPathTranslated()

Returns any extra path information after the servlet name but before the query string, and translates it to a real path.

java.lang.String getQueryString()

Returns the query string that is contained in the request URL after the path. java.lang.String getRemoteUser()

Returns the login of the user making this request, if the user has been authenticated, or null if the user has not been authenticated.

java.lang.String getRequestedSessionId()

Returns the session ID specified by the client. java.lang.String getRequestURI()

Returns the part of this request's URL from the protocol name up to the query string in the first line of the HTTP request.

java.lang.StringBuffer getRequestURL()

(14)

java.lang.String getServletPath()

Returns the part of this request's URL that calls the servlet. HttpSession getSession()

Returns the current session associated with this request, or if the request does not have a session, creates one.

HttpSession getSession(boolean create)

Returns the current HttpSession associated with this request or, if if there is no current session and create is true, returns a new session.

java.security.Principal getUserPrincipal()

Returns a java.security.Principal object containing the name of the current authenticated user.

boolean isRequestedSessionIdFromCookie()

Checks whether the requested session ID came in as a cookie. boolean isRequestedSessionIdFromUrl()

Deprecated. As of Version 2.1 of the Java Servlet API, use

isRequestedSessionIdFromURL()instead.

Boolean isRequestedSessionIdFromURL()

Checks whether the requested session ID came in as part of the request URL. boolean isRequestedSessionIdValid()

Checks whether the requested session ID is still valid. Boolean isUserInRole java.lang.String role)

Returns a boolean indicating whether the authenticated user is included in the specified logical "role".

3.1.2

HttpServletResponse

(15)

extends ServletResponse

Extends the ServletResponse interface to provide HTTP-specific

functionality in sending a response. For example, it has methods to access HTTP headers and cookies. The servlet container creates an

HttpServletResponse object and passes it as an argument to the servlet's service methods (doGet, doPost, etc).

The HttpServletResponse interface is implemented by the server. It enables a servlet to formulate an HTTP response to a client. Several constants are defined. These correspond to the different status codes that can be assigned to an HTTP response. For example, SC_OK indicates that the HTTP request succeeded and SC_NOT_FOUND indicates that the requested resource is not available.

Field Summary

static in t

SC_ACCEPTED

Status code (202) indicating that a request was accepted for processing, but was not completed.

static in t

SC_BAD_GATEWAY

Status code (502) indicating that the HTTP server received an invalid response from a server it consulted when acting as a proxy or gateway.

static in t

SC_BAD_REQUEST

Status code (400) indicating the request sent by the client was syntactically incorrect.

static in t

SC_CONFLICT

Status code (409) indicating that the request could not be completed due to a conflict with the current state of the resource. static in

t

SC_CONTINUE

(16)

static in t

SC_CREATED

Status code (201) indicating the request succeeded and created a new resource on the server.

static in t

SC_EXPECTATION_FAILED

Status code (417) indicating that the server could not meet the expectation given in the Expect request header.

static in t

SC_FORBIDDEN

Status code (403) indicating the server understood the request but refused to fulfill it.

static in t

SC_FOUND

Status code (302) indicating that the resource reside temporarily under a different URI.

static in t

SC_GATEWAY_TIMEOUT

Status code (504) indicating that the server did not receive a timely response from the upstream server while acting as a gateway or proxy.

static in t

SC_GONE

Status code (410) indicating that the resource is no longer available at the server and no forwarding address is known. static in

t

SC_HTTP_VERSION_NOT_SUPPORTED

Status code (505) indicating that the server does not support or refuses to support the HTTP protocol version that was used in the request message.

static in t

SC_INTERNAL_SERVER_ERROR

Status code (500) indicating an error inside the HTTP server which prevented it from fulfilling the request.

static in t

SC_LENGTH_REQUIRED

(17)

without a defined Content-Length. static in

t

SC_METHOD_NOT_ALLOWED

Status code (405) indicating that the method specified in the

Line is not allowed for the resource identified by the Request-URI.

static in t

SC_MOVED_PERMANENTLY

Status code (301) indicating that the resource has permanently moved to a new location, and that future references should use a new URI with their requests.

static in t

SC_MOVED_TEMPORARILY

Status code (302) indicating that the resource has temporarily moved to another location, but that future references should still use the original URI to access the resource.

static in t

SC_MULTIPLE_CHOICES

Status code (300) indicating that the requested resource

corresponds to any one of a set of representations, each with its own specific location.

static in t

SC_NO_CONTENT

Status code (204) indicating that the request succeeded but that there was no new information to return.

static in t

SC_NON_AUTHORITATIVE_INFORMATION

Status code (203) indicating that the meta information presented by the client did not originate from the server.

static in t

SC_NOT_ACCEPTABLE

Status code (406) indicating that the resource identified by the request is only capable of generating response entities which have content characteristics not acceptable according to the accept headers sent in the request.

(18)

static in t

SC_NOT_FOUND

Status code (404) indicating that the requested resource is not available.

static in t

SC_NOT_IMPLEMENTED

Status code (501) indicating the HTTP server does not support the functionality needed to fulfill the request.

static in t

SC_NOT_MODIFIED

Status code (304) indicating that a conditional GET operation found that the resource was available and not modified.

static in t

SC_OK

Status code (200) indicating the request succeeded normally. static in

t

SC_PARTIAL_CONTENT

Status code (206) indicating that the server has fulfilled the partial GET request for the resource.

static in t

SC_PAYMENT_REQUIRED

Status code (402) reserved for future use. static in

t

SC_PRECONDITION_FAILED

Status code (412) indicating that the precondition given in one or more of the request-header fields evaluated to false when it was tested on the server.

static in t

SC_PROXY_AUTHENTICATION_REQUIRED

Status code (407) indicating that the client MUST first authenticate itself with the proxy.

static in t

SC_REQUEST_ENTITY_TOO_LARGE

Status code (413) indicating that the server is refusing to process the request because the request entity is larger than the server is willing or able to process.

(19)

static in t

SC_REQUEST_TIMEOUT

Status code (408) indicating that the client did not produce a request within the time that the server was prepared to wait.

static in t

SC_REQUEST_URI_TOO_LONG

Status code (414) indicating that the server is refusing to service the request because the Request-URI is longer than the server is willing to interpret.

static in t

SC_REQUESTED_RANGE_NOT_SATISFIABLE

Status code (416) indicating that the server cannot serve the requested byte range.

static in t

SC_RESET_CONTENT

Status code (205) indicating that the agent SHOULD reset the document view which caused the request to be sent.

static in t

SC_SEE_OTHER

Status code (303) indicating that the response to the request can be found under a different URI.

static in t

SC_SERVICE_UNAVAILABLE

Status code (503) indicating that the HTTP server is temporarily overloaded, and unable to handle the request.

static in t

SC_SWITCHING_PROTOCOLS

Status code (101) indicating the server is switching protocols according to Upgrade header.

static in t

SC_TEMPORARY_REDIRECT

Status code (307) indicating that the requested resource resides temporarily under a different URI.

static in t

SC_UNAUTHORIZED

(20)

authentication. static in

t

SC_UNSUPPORTED_MEDIA_TYPE

Status code (415) indicating that the server is refusing to service the request because the entity of the request is in a format not supported by the requested resource for the requested method.

static in t

SC_USE_PROXY

Status code (305) indicating that the requested resource MUST be accessed through the proxy given by the Location field.

Method Summary

void addCookie(Cookie cookie)

Adds the specified cookie to the response.

void addDateHeader(java.lang.String name, long date)

Adds a response header with the given name and date-value.

void addHeader(java.lang.String name, java.lang.String value)

Adds a response header with the given name and value.

void addIntHeader(java.lang.String name, int value)

Adds a response header with the given name and integer value.

boolean containsHeader(java.lang.String name) Returns a boolean indicating whether

(21)

the named response header has already been set.

java.lang.String encodeRedirectUrl(java.lang.String url) Deprecated. As of version 2.1, use

encodeRedirectURL(String url) instead

java.lang.String encodeRedirectURL(java.lang.String url) Encodes the specified URL for use in the sendRedirect method or, if encoding is not needed, returns the URL unchanged. java.lang.String encodeUrl(java.lang.String url)

Deprecated. As of version 2.1, use

encodeURL(String url) instead

java.lang.String encodeURL(java.lang.String url) Encodes the specified URL by including the session ID in it, or, if encoding is not needed, returns the URL unchanged.

java.lang.String getHeader(java.lang.String name)

Gets the value of the response header with the given name.

java.util.Collection<java.lang.String >

getHeaderNames()

Gets the names of the headers of this response.

java.util.Collection<java.lang.String >

getHeaders(java.lang.String name)

Gets the values of the response header with the given name.

int getStatus()

(22)

response.

void sendError(int sc)

Sends an error response to the client using the specified status code and clears the buffer.

void sendError(int sc, java.lang.String msg) Sends an error response to the client using the specified status and clears the buffer.

void sendRedirect(java.lang.String location) Sends a temporary redirect response to the client using the specified redirect location URL and clears the buffer. void setDateHeader(java.lang.String name,

long date)

Sets a response header with the given name and date-value.

void setHeader(java.lang.String name, java.lang.String value)

Sets a response header with the given name and value.

void setIntHeader(java.lang.String name, int value)

Sets a response header with the given name and integer value.

void setStatus(int sc)

Sets the status code for this response. void setStatus(int sc, java.lang.String sm)

(23)

Deprecated. As of version 2.1, due to

ambiguous meaning of the message parameter. To set a status code use setStatus(int), to send an error with a description use sendError(int, String). Sets the status code and message for this

response.

3.1.3 HTTPSession

javax.servlet.http Interface HttpSession

public interface HttpSession

Provides a way to identify a user across more than one page request or visit to a Web site and to store information about that user.

The servlet container uses this interface to create a session between an HTTP client and an HTTP server. The session persists for a specified time period, across more than one connection or page request from the user. A session usually corresponds to one user, who may visit a site many times. The server can maintain a session in many ways such as using cookies or rewriting URLs.

This interface allows servlets to

 View and manipulate information about a session, such as the session identifier, creation time, and last accessed time

 Bind objects to sessions, allowing user information to persist across multiple user connections

(24)

When an application stores an object in or removes an object from a session, the session checks whether the object implements HttpSessionBindingListening. If it does, the servlet notifies the object that it has been bound to or unbound from the session.

A servlet should be able to handle cases in which the client does not choose to join a session, such as when cookies are intentionally turned off. Until the client joins the session, isNew returns true. If the client chooses not to join the session, getSession will return a different session on each request, and isNew will always return true.

Session information is scoped only to the current web application (ServletContext), so information stored in one context will not be directly visible in another.

Method Summary

java.lang.Object getAttribute(java.lang.String name)

Returns the object bound with the specified name in this session, or null if no object is bound under the name. java.util.Enumeratio

n

getAttributeNames()

Returns an Enumeration of String objects containing the names of all the objects bound to this session.

long getCreationTime()

Returns the time when this session was created, measured in milliseconds since midnight January 1, 1970 GMT.

java.lang.String getId()

Returns a string containing the unique identifier assigned to this session.

long getLastAccessedTime()

Returns the last time the client sent a request

(25)

since midnight January 1, 1970 GMT. int getMaxInactiveInterval()

Returns the maximum time interval, in seconds, that the servlet container will keep this session open between client accesses.

HttpSessionContext getSessionContext()

Deprecated. As of Version 2.1, this method is

deprecated and has no replacement. It will be removed in a future version of the Java Servlet API.

java.lang.Object getValue(java.lang.String name)

Deprecated. As of Version 2.2, this method is

replaced by getAttribute(java.lang.String).

java.lang.String[] getValueNames()

Deprecated. As of Version 2.2, this method is replaced by getAttributeNames().

void invalidate()

Invalidates this session and unbinds any objects bound to it.

boolean isNew()

Returns true if the client does not yet know about the session or if the client chooses not to join the session. void putValue(java.lang.String name, java.lang.Object value)

Deprecated. As of Version 2.2, this method is

replaced by setAttribute(java.lang.String, java.lang.object) void removeAttribute(java.lang.String name)

Removes the object bound with the specified name from this session.

(26)

void removeValue(java.lang.String name)

Deprecated. As of Version 2.2, this method is replaced by setAttribute(java.lang.String,java.lang.object) void setAttribute(java.lang.String name,

java.lang.Object value)

Binds an object to this session, using the name specified.

void setMaxInactiveInterval(int interval)

Specifies the time, in seconds, between client requests before the servlet container will invalidate this session.

Method Summary. getCreationTime

public long getCreationTime()

Returns the time when this session was created, measured in milliseconds since midnight January 1, 1970 GMT.

Returns:

a long specifying when this session was created, expressed in milliseconds since 1/1/1970 GMT

Throws:

java.lang.IllegalStateException - if this method is called on an invalidated session

getId

(27)

Returns a string containing the unique identifier assigned to this session. The identifier is assigned by the servlet container and is implementation

dependent.

Returns:

a string specifying the identifier assigned to this session

getLastAccessedTime

public long getLastAccessedTime()

Returns the last time the client sent a request associated with this session, as the number of milliseconds since midnight January 1, 1970 GMT.

Actions that your application takes, such as getting or setting a value associated with the session, do not affect the access time.

Returns:

a long representing the last time the client sent a request associated with this session, expressed in milliseconds since 1/1/1970 GMT

setMaxInactiveInterval

public void setMaxInactiveInterval(int interval)

Specifies the time, in seconds, between client requests before the servlet container will invalidate this session. A negative time indicates the session should never timeout.

Parameters:

interval - An integer specifying the number of seconds

getMaxInactiveInterval

(28)

Returns the maximum time interval, in seconds, that the servlet container will keep this session open between client accesses. After this interval, the servlet container will invalidate the session. The maximum time interval can be set with the setMaxInactiveInterval method. A negative time indicates the session should never timeout.

Returns:

an integer specifying the number of seconds this session remains open between client requests

See Also:

setmaxInactiveInterval(int)

getSessionContext

public HttpSessionContext getSessionContext()

Deprecated. As of Version 2.1, this method is deprecated and has no

replacement. It will be removed in a future version of the Java Servlet API.

getAttribute

public java.lang.Object getAttribute(java.lang.String name)

Returns the object bound with the specified name in this session, or null if no object is bound under the name.

Parameters:

name - a string specifying the name of the object

Returns:

the object with the specified name

Throws:

java.lang.IllegalStateException - if this method is called on an invalidated session

(29)

getValue

public java.lang.Object getValue(java.lang.String name)

Deprecated. As of Version 2.2, this method is replaced by

getAttribute(java.lang.String).

Parameters:

name - a string specifying the name of the object

Returns:

the object with the specified name

Throws:

java.lang.IllegalStateException - if this method is called on an invalidated session

getAttributeNames

public java.util.Enumeration getAttributeNames()

Returns an Enumeration of String objects containing the names of all the objects bound to this session.

Returns:

an Enumeration of String objects specifying the names of all the objects bound to this session

Throws:

java.lang.IllegalStateException - if this method is called on an invalidated session

getValueNames

(30)

Deprecated. As of Version 2.2, this method is replaced by

getAttributeNames()

Returns:

an array of String objects specifying the names of all the objects bound to this session

Throws:

java.lang.IllegalStateException - if this method is called on an invalidated session

setAttribute

public void setAttribute(java.lang.String name, java.lang.Object value)

Binds an object to this session, using the name specified. If an object of the same name is already bound to the session, the object is replaced.

After this method executes, and if the object implements HttpSessionBindingListener, the container calls

HttpSessionBindingListener.valueBound.

Parameters:

name - the name to which the object is bound; cannot be null value - the object to be bound; cannot be null

Throws:

java.lang.IllegalStateException - if this method is called on an invalidated session

putValue

public void putValue(java.lang.String name, java.lang.Object value)

(31)

Deprecated. As of Version 2.2, this method is replaced by

setAttribute(java.lang.String)

Parameters:

name - the name to which the object is bound; cannot be null value - the object to be bound; cannot be null

Throws:

java.lang.IllegalStateException - if this method is called on an invalidated session

removeAttribute

public void removeAttribute(java.lang.String name)

Removes the object bound with the specified name from this session. If the session does not have an object bound with the specified name, this method does nothing.

After this method executes, and if the object implements HttpSessionBindingListener, the container calls

HttpSessionBindingListener.valueUnbound.

Parameters:

name - the name of the object to remove from this session

Throws:

java.lang.IllegalStateException - if this method is called on an invalidated session

removeValue

(32)

Deprecated. As of Version 2.2, this method is replaced by

setAttribute(java.lang.String,java.lang.object)

Parameters:

name - the name of the object to remove from this session

Throws:

java.lang.IllegalStateException - if this method is called on an invalidated session

invalidate

public void invalidate()

Invalidates this session and unbinds any objects bound to it.

Throws:

java.lang.IllegalStateException - if this method is called on an already invalidated session

isNew

public boolean isNew()

Returns true if the client does not yet know about the session or if the client chooses not to join the session. For example, if the server used only cookie-based sessions, and the client had disabled the use of cookies, then a session would be new on each request.

Returns:

true if the server has created a session, but the client has not yet joined

Throws:

java.lang.IllegalStateException - if this method is called on an already invalidated session.

(33)

3.1.4

Cookies

A cookie, also known as an HTTP cookie, web cookie, or browser cookie, is used for an origin website to send state information to a user's browser and for the browser to return the state information to the origin site. The state information can be used for authentication, identification of a user session, user's preferences, shopping cart contents, or anything else that can be accomplished through storing text data.

Cookies are not software. They cannot be programmed, cannot carry viruses, and cannot install malware on the host computer . However, they can be used by spyware to track user's browsing activities – a major privacy concern that prompted European and US law makers to take actions. Cookies could also be stolen by hackers to gain access to a victim's web account.

java.net

Class HttpCookie

java.lang.Object

java.net.HttpCookie

All Implemented Interfaces:

Cloneable

An HttpCookie object represents an http cookie, which carries state information between server and user agent. Cookie is widely adopted to create stateful sessions.

Method Summary

Object clone()

Create and return a copy of this object. static boolean domainMatches(String domain, String host)

(34)

in a domain or not. boolean equals(Object obj)

Test the equality of two http cookies. String getComment()

Returns the comment describing the purpose of this cookie, or null if the cookie has no comment. String getCommentURL()

Returns the comment url describing the purpose of this cookie, or null if the cookie has no comment url. boolean getDiscard()

Return the discard attribute of the cookie String getDomain()

Returns the domain name set for this cookie. long getMaxAge()

Returns the maximum age of the cookie, specified in seconds.

String getName()

Returns the name of the cookie. String getPath()

Returns the path on the server to which the browser returns this cookie.

String getPortlist()

Return the port list attribute of the cookie boolean getSecure()

Returns true if sending this cookie should be restricted to a secure protocol, or false if the it can be

(35)

sent using any protocol. String getValue()

Returns the value of the cookie. int getVersion()

Returns the version of the protocol this cookie complies with.

boolean hasExpired()

Reports whether this http cookie has expired or not.

int hashCode()

Return hash code of this http cookie. static List<HttpCookie

>

parse(String header)

Constructs cookies from set-cookie or set-cookie2 header string.

void setComment(String purpose)

Specifies a comment that describes a cookie's purpose.

void setCommentURL(String purpose)

Specifies a comment url that describes a cookie's purpose.

void setDiscard(boolean discard)

Specify whether user agent should discard the cookie unconditionally.

void setDomain(String pattern)

Specifies the domain within which this cookie should be presented.

(36)

void setMaxAge(long expiry)

Sets the maximum age of the cookie in seconds. void setPath(String uri)

Specifies a path for the cookie to which the client should return the cookie.

void setPortlist(String ports)

Specify the portlist of the cookie, which restricts the port(s) to which a cookie may be sent back in a Cookie header.

void setSecure(boolean flag)

Indicates whether the cookie should only be sent using a secure protocol, such as HTTPS or SSL.

void setValue(String newValue)

Assigns a new value to a cookie after the cookie is created.

void setVersion(int v)

Sets the version of the cookie protocol this cookie complies with.

String toString()

Constructs a cookie header string representation of this cookie, which is in the format defined by

corresponding cookie specification, but without the leading "Cookie:" token.

(37)

3.2

Java Beans

JavaBeans are reusable software components for Java that can be manipulated

visually in a builder tool. Practically, they are classes written in the Java

programming language conforming to a particular convention. They are used to encapsulate many objects into a single object (the bean), so that they can be passed around as a single bean object instead of as multiple individual objects. A

JavaBean is a Java Object that is serializable, has a nullary constructor, and allows access to properties using getter and setter methods.

In order to function as a JavaBean class, an object class must obey certain conventions about method naming, construction, and behaviour. These conventions make it possible to have tools that can use, reuse, replace, and connect JavaBeans. The required conventions are as follows:

 The class must have a public default constructor (no-argument). This allows easy instantiation within editing and activation frameworks.

The class properties must be accessible using get, set, is (used for boolean properties instead of get) and other methods (so-called accessor methods and mutator methods), following a standard naming-convention. This allows easy automated inspection and updating of bean state within frameworks, many of which include custom editors for various types of properties.

 The class should be serializable. It allows applications and frameworks to reliably save, store, and restore the bean's state in a fashion independent of the VM and of the platform.

(38)

JavaBeans™ is a portable, platform-independent component model written in the Java programming language. The JavaBeans architecture was built through a collaborative industry effort and enables developers to write reusable

components in the Java programming language. With the JavaBeans API you can create reuseable, platform-independent components. Using JavaBeans-compliant application builder tools, you can combine these components into applets, applications, or composite components. JavaBean components are known as beans. Beans are dynamic in that they can be changed or customized. A bean information class implements the BeanInfo interface. A BeanInfo class explicitly lists those bean features that are to be exposed to application builder tools.

 Properties are the appearance and behavior characteristics of a bean that can be changed at design time. Builder tools introspect on a bean to discover its properties and expose those properties for manipulation.

Beans expose properties so they can be customized at design time. 

Customization is supported in two ways: by using property editors, or by

using more sophisticated bean customizers. Beans use

events to communicate with other beans. A bean that is to

receive events (a listener bean) registers with the bean that fires the event (a source bean). Builder tools can examine a bean and determine which events that bean can fire (send) and which it can handle (receive).

 Persistence enables beans to save and restore their state. After changing a bean's properties, you can save the state of the bean and restore that bean at a later time with the property changes intact. The JavaBeans architecture uses Java Object Serialization to support persistence.

A bean's

methods are no different from Java methods, and can be

called from other beans or a scripting environment. By default all public methods are exported.

3.3

(39)

JavaServer Pages (JSP) is a Java technology that helps software developers serve

dynamically generated web pages based on HTML, XML, or other document types. Released in 1999 as Sun's answer to ASP and PHP, JSP was designed to address the perception that the Java programming environment didn't provide developers with enough support for the Web.

To deploy and run, a compatible web server with servlet container is required. The Java Servlet and the JavaServer Pages (JSP) specifications from Sun Microsystems and the JCP must both be met by the container.

Architecturally, JSP may be viewed as a high-level abstraction of Java servlets. JSP pages are loaded in the server and are operated from a structured special installed Java server packet called a Java EE Web Application, often packaged as a .war or .ear file archive.

JSP allows Java code and certain pre-defined actions to be interleaved with static web markup content, with the resulting page being compiled and executed on the server to deliver an HTML or XML document. The compiled pages and any dependent Java libraries use Java bytecode rather than a native software format, and must therefore be executed within a Java virtual machine (JVM) that integrates with the host operating system to provide an abstract platform-neutral

environment.

JSP syntax is a fluid mix of two basic content forms: scriptlet elements and

markup. Markup is typically standard HTML or XML, while scriptlet elements are

delimited blocks of Java code which may be intermixed with the markup. When the page is requested the Java code is executed and its output is added, in situ, with the surrounding markup to create the final page. JSP pages must be compiled to Java bytecode classes before they can be executed, but such compilation is needed only when a change to the source JSP file has occurred.

Java code is not required to be complete (self contained) within its scriptlet element block, but can straddle markup content providing the page as a whole is syntactically correct (for example, any Java if/for/while blocks opened in one scriptlet element must be correctly closed in a later element for the page to successfully compile). This system of split inline coding sections is called step

(40)

over scripting because it can wrap around the static markup by stepping over it.

Markup which falls inside a split block of code is subject to that code, so markup inside an if block will only appear in the output when the if condition evaluates to true; likewise markup inside a loop construct may appear multiple times in the output depending upon how many times the loop body runs.

The JSP syntax adds additional XML-like tags, called JSP actions, to invoke built-in functionality. Additionally, the technology allows for the creation of JSP tag libraries that act as extensions to the standard HTML or XML tags. JVM operated tag libraries provide a platform independent way of extending the capabilities of a web server. Note that not all commercial Java servers are Java EE specification compliant.

JavaServer Pages (JSP) is a technology based on the Java language and enables the development of dynamic web sites. JSP was developed by Sun Microsystems to allow server side development. JSP files are HTML files with special Tags

containing Java source code that provide the dynamic content.The following shows the Typical Web server,different clients connecting via the Internet to a Web server. In this example,the Web server is running on Unix and is the very popular Apache Web server.

(41)

First static web pages were displayed. Typically these were people?s first experience with making web pages so consisted of My Home Page sites and company marketing information. Afterwards Perl and C were languages used on the web server to provide dynamic content. Soon most languages including Visualbasic,Delphi,C and Java could be used to write applications that provided dynamic content using data from text files or database requests. These were known

(42)

as CGI server side applications. ASP was developed by Microsoft to allow HTML developers to easily provide dynamic content supported as standard by Microsoft?s free Web Server,Internet Information Server (IIS). JSP is the equivalent from Sun Microsystems,a comparison of ASP andJSP will be presented in the following section.

The following diagram shows a web server that supports JSP files. Notice that the web server also is connected to a database.

JSP is easy to learn and allows developers to quickly produce web sites and

applications in an open and standard way. JSP is based on Java,an object-oriented language. JSP offers a robust platform for web development.

(43)

Main reasons to use JSP:

 Multi platform.

 Component reuse by using Javabeans and EJB. Advantages of Java.

You can take one JSP file and move it to another platform,web server or JSP Servlet engine.

This means you are never locked into one vendor or platform. HTML and graphics displayed on the web browser are classed as the presentation layer. The Java code (JSP) on the server is classed as the implementation. By having a separation of presentation and implementation,web designers work only on the presentation and Java developers concentrate on implementing the application.

JSP architecture

JSPs are built on top of SUN Microsystems' servlet technology. JSPs are essential an HTML page with special JSP tags embedded. These JSP tags can contain Java code. The JSP file extension is .jsp rather than .htm or .html. The JSP engine parses the .jsp and creates a Java servlet source file. It then compiles the source file into a class file,this is done the first time and this why the JSP is probably slower the first

(44)

time it is accessed. Any time after this the special compiled servlet is executed and is therefore returns faster.

Steps required for a JSP request:

1. The user goes to a web site made using JSP. The user goes to a JSP page (ending with .jsp). The web browser makes the request via the Internet. 2. The JSP request gets sent to the Web server.

3. The Web server recognises that the file required is special (.jsp),therefore passes the JSP file to the JSP Servlet Engine.

4. If the JSP file has been called the first time,the JSP file is parsed,otherwise go to step 7.

5. The next step is to generate a special Servlet from the JSP file. All the

(45)

6. The Servlet source code is compiled into a class.

7. The Servlet is instantiated,calling the init and service methods.

4.

DBMS

A Database Management System (DBMS) is a software package with computer programs that control the creation, maintenance, and the use of a database. It allows organizations to conveniently develop databases for various applications by database administrators (DBAs) and other specialists. A database is an integrated collection of data records, files, and other database objects. A DBMS allows different user application programs to concurrently access the same

database.

DBMSs may use a variety of database models, such as the relational model or object model, to conveniently describe and support applications. It typically supports query languages, which are in fact high-level programming languages, dedicated database languages that considerably simplify writing database

application programs. Database languages also simplify the database organization as well as retrieving and presenting information from it. A DBMS provides

facilities for controlling data access, enforcing data integrity, managing

concurrency control, recovering the database after failures and restoring it from backup files, as well as maintaining database security.

A DBMS is a set of software programs that controls the system organization, storage, management, and retrieval of data in a database. DBMSs are categorized according to their data structures or types. The DBMS accepts requests for data from an application program and instructs the operating system to transfer the appropriate data. The queries and responses must be submitted and received according to a format that conforms to one or more applicable protocols. When a DBMS is used, information systems can be changed more easily as the

(46)

organization's information requirements change. New categories of data can be added to the database without disruption to the existing system.

Database servers are dedicated computers that hold the actual databases and run only the DBMS and related software. Database servers are usually multiprocessor computers, with generous memory and RAID disk arrays used for stable storage. Hardware database accelerators, connected to one or more servers via a high-speed channel, are also used in large volume transaction processing environments.

DBMSs are found at the heart of most database applications. DBMSs may be built around a custom multitasking kernel with built-in networking support, but modern DBMSs typically rely on a standard operating system to provide these functions.

IBM started working on a prototype system loosely based on Codd's concepts as System R in the early 1970s. The first version was ready in 1974/5, and work then started on multi-table systems in which the data could be split so that all of the data for a record (some of which is optional) did not have to be stored in a single large "chunk". Subsequent multi-user versions were tested by customers in 1978 and 1979, by which time a standardized query language - SQL - had been added. Codd's ideas were establishing themselves as both workable and superior to Codasyl, pushing IBM to develop a true production version of System R, known as

SQL/DS, and, later, Database 2 (DB2).

Many of the people involved with INGRES became convinced of the future commercial success of such systems, and formed their own companies to

commercialize the work but with an SQL interface. Sybase, Informix, NonStop SQL and eventually Ingres itself were all being sold as offshoots to the original INGRES product in the 1980s. Even Microsoft SQL Server is actually a re-built version of Sybase, and thus, INGRES. Only Larry Ellison's Oracle started from a different chain, based on IBM's papers on System R, and beat IBM to market when the first version was released in 1978.

Stonebraker went on to apply the lessons from INGRES to develop a new

database, Postgres, which is now known as PostgreSQL. PostgreSQL is often used for global mission critical applications (the .org and .info domain name registries use it as their primary data store, as do many large companies and financial institutions).

(47)

In Sweden, Codd's paper was also read and Mimer SQL was developed from the mid-70s at Uppsala University. In 1984, this project was consolidated into an independent enterprise. In the early 1980s, Mimer in c introduced transaction handling for high robustness in applications, an idea that was subsequently implemented on most other DBMS.

Components- DBMS Engine accepts logical requests from various other DBMS

subsystems, converts them into physical equivalents, and actually accesses the database and data dictionary as they exist on a storage device.

Data Definition Subsystem helps the user create and maintain the data

dictionary and define the structure of the files in a database.

Data Manipulation Subsystem helps the user to add, change, and delete

information in a database and query it for valuable information. Software tools within the data manipulation subsystem are most often the primary interface between user and the information contained in a database. It allows the user to specify its logical information requirements.

Application Generation Subsystem contains facilities to help users

develop transaction-intensive applications. It usually requires that the user perform a detailed series of tasks to process a transaction. It facilitates easy-to-use data entry screens, programming languages, and interfaces.

Data Administration Subsystem helps users manage the overall database

environment by providing facilities for backup and recovery, security management, query optimization, concurrency control, and change management.

Modeling language

A modeling language is a data modeling language to define the schema of each database hosted in the DBMS, according to the DBMS database model. Database management systems (DBMS) are designed to use one of five database structures

(48)

to provide simplistic access to information stored in databases. The five database structures are:

 the hierarchical model,

 the network model,

 the relational model,

 the multidimensional model, and

 the object model.

Inverted lists and other methods are also used. A given database management system may provide one or more of the five models. The optimal structure depends on the natural organization of the application's data, and on the application's

requirements, which include transaction rate (speed), reliability, maintainability, scalability, and cost.

The hierarchical structure was used in early mainframe DBMS. Records’ relationships form a treelike model. This structure is simple but nonflexible because the relationship is confined to a one-to-many relationship. IBM’s IMS system and the RDM Mobile are examples of a hierarchical database system with multiple hierarchies over the same data. RDM Mobile is a newly designed

embedded database for a mobile computer system. The hierarchical structure is used primarily today for storing geographic information and file systems.

The network structure consists of more complex relationships. Unlike the

hierarchical structure, it can relate to many records and accesses them by following one of several paths. In other words, this structure allows for many-to-many

relationships.

The relational structure is the most commonly used today. It is used by

mainframe, midrange and microcomputer systems. It uses two-dimensional rows and columns to store data. The tables of records can be connected by common key values. While working for IBM, E.F. Codd designed this structure in 1970. The

(49)

model is not easy for the end user to run queries with because it may require a complex combination of many tables.

The multidimensional structure is similar to the relational model. The

dimensions of the cube-like model have data relating to elements in each cell. This structure gives a spreadsheet-like view of data. This structure is easy to maintain because records are stored as fundamental attributes - in the same way they are viewed - and the structure is easy to understand. Its high performance has made it the most popular database structure when it comes to enabling online analytical processing (OLAP).

The object oriented structure has the ability to handle graphics, pictures, voice and text, types of data, without difficultly unlike the other database structures. This structure is popular for multimedia Web-based applications. It was designed to work with object-oriented programming languages such as Java.

The dominant model in use today is the ad hoc one embedded in SQL,despite the objections of purists who believe this model is a corruption of the relational model since it violates several fundamental principles for the sake of practicality and performance. Many DBMSs also support the Open Database Connectivity API that supports a standard way for programmers to access the DBMS.

Before the database management approach, organizations relied on file processing systems to organize, store, and process data files. End users criticized file

processing because the data is stored in many different files and each organized in a different way. Each file was specialized to be used with a specific application. File processing was bulky, costly and nonflexible when it came to supplying needed data accurately and promptly. Data redundancy is an issue with the file processing system because the independent data files produce duplicate data so when updates were needed each separate file would need to be updated. Another issue is the lack of data integration. The data is dependent on other data to organize and store it. Lastly, there was not any consistency or standardization of the data in a file processing system which makes maintenance difficult. For these reasons, the database management approach was produced.

(50)

Data structures (fields, records, files and objects) optimized to deal with very large amounts of data stored on a permanent data storage device (which implies

relatively slow access compared to volatile main memory).

4.1

SQL

SQL , often referred to as Structured Query Language, is a database

computer declarative language designed for managing data in relational database management systems (RDBMS), and originally based upon

relational algebra and tuple relational calculus. Its scope includes data insert, query, update and delete, schema creation and modification, and data access control. SQL was one of the first commercial languages for Edgar F. Codd's relational model, as described in his influential 1970 paper, "A Relational Model of Data for Large Shared Data Banks".Despite not adhering to the relational model as described by Codd, it became the most widely used database language.

The SQL language is sub-divided into several language elements, including:

Clauses, which are constituent components of statements

and queries. (In some cases, these are optional.)

Expressions, which can produce either scalar values or

tables consisting of columns and rows of data.

Predicates, which specify conditions that can be evaluated

to SQL three-valued logic (3VL) or Boolean

(true/false/unknown) truth values and which are used to limit the effects of statements and queries, or to change program flow.

Queries, which retrieve the data based on specific criteria.

This is the most important element of SQL.

Statements, which may have a persistent effect on

schemata and data, or which may control transactions, program flow, connections, sessions, or diagnostics.

(51)

o SQL statements also include the semicolon (";") statement terminator. Though not required on every platform, it is defined as a standard part of the SQL grammar.

Insignificant whitespace is generally ignored in SQL

statements and queries, making it easier to format SQL code for readability.

The most common operation in SQL is the query, which is performed with the declarative SELECT statement. SELECT retrieves data from one or more tables, or expressions. Standard SELECT statements have no persistent effects on the

database. Some non-standard implementations of SELECT can have persistent effects, such as the SELECT INTO syntax that exists in some databases.

Queries allow the user to describe desired data, leaving the database management system (DBMS) responsible for planning, optimizing, and performing the physical operations necessary to produce that result as it chooses.

A query includes a list of columns to be included in the final result immediately following the SELECT keyword. An asterisk ("*") can also be used to specify that the query should return all columns of the queried tables. SELECT is the most complex statement in SQL, with optional keywords and clauses that include:

 The FROM clause which indicates the table(s) from which data is to be retrieved. The FROM clause can include optional JOIN subclauses to specify the rules for joining tables.

 The WHERE clause includes a comparison predicate, which restricts the rows returned by the query. The WHERE clause eliminates all rows from the result set for which the

comparison predicate does not evaluate to True.

 The GROUP BY clause is used to project rows having common values into a smaller set of rows. GROUP BY is often used in conjunction with SQL aggregation functions or to eliminate

(52)

duplicate rows from a result set. The WHERE clause is applied before the GROUP BY clause.

 The HAVING clause includes a predicate used to filter rows resulting from the GROUP BY clause. Because it acts on the results of the GROUP BY clause, aggregation functions can be used in the HAVING clause predicate.

 The ORDER BY clause identifies which columns are used to sort the resulting data, and in which direction they should be sorted (options are ascending or descending). Without an ORDER BY clause, the order of rows returned by an SQL query is undefined.

What Can SQL do?

 SQL can execute queries against a database

 SQL can retrieve data from a database

 SQL can insert records in a database

 SQL can update records in a database

 SQL can delete records from a database

 SQL can create new databases

 SQL can create new tables in a database

 SQL can create stored procedures in a database

 SQL can create views in a database

 SQL can set permissions on tables, procedures, and views

5.

References

Outline

Related documents

Favor you leave and sample policy employees use their job application for absence may take family and produce emails waste company it discusses email etiquette Deviation from

When assessing decision-making capacity and the physical, behavioral and mental health issues of people with intellectual and developmental disabilities, health

Senior Seminar, Systems Analysis &amp; Design II, and Management of Technology/ Case Study courses. Percentage of schools requiring courses from the IS 2002 categories as defined

In Germany, these include subsidies to the hard coal industry; “eco-taxes” that are to increase energy taxes 10% during 2001–2004 (although, in late 2001, the chancellor’s

To that end, the Open Travel Alliance (OTA) was formed in 1998 and now has a global membership of over 150 travel companies from suppliers, such as airlines, hotels, car rental, rail,

Again… deep vascular loss – not typical of glaucoma.. Glaucoma as a diagnosis of exclusion. ▪ Glaucoma defined as a disease of the

Bell-LaPadula: model based on the simple security rule which a subject cannot read data at a higher security level (no-read up) and security rule which a subject cannot