Upload
kaml-sah
View
4.463
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Its an distributed enviornment for developing the enterprise application.We can develop multi-tier,three-tier or n-tier architecture using this.In this Java Server Pages and Servlet is the important things
Citation preview
Kamalesh Sahhttp://www.youtube.com/kamleshutube
Distributed Multitiered Applications
• Application logic is divided into components according to function
• The J2EE Application is made of components– Client-tier components run on the client machine.– Web-tier components run on the J2EE server. – Business-tier components run on the J2EE server.– Enterprise information system (EIS)-tier software
runs on the EIS server.
Multitiered Applications
J2EE Components
• J2EE applications are made up of components.• The J2EE specification defines the following J2EE
components:– Application clients and Applets are components that
run on the client.– Java Servlet and Java Server Pages™ (JSP™)
technology components are Web components that run on the server.
– Enterprise JavaBeans™ (EJB™) components (enterprise beans) are business components that run on the server.
J2EE Clients
Web Client
• A Web client consists of two parts:– Dynamic Page
• containing various types of markup language• page are generated by Web components running in the
Web tier• which renders the pages received from the server.• Thin clients usually do not do things like query
databases, execute complex business rules, or connect to legacy applications.
Contd……..
Web Client
• Applet• An applet is a small client application• written in the Java programming language• executes in the Java virtual machine installed in the
Web browser.
Application Clients
• Richer user interface• It typically has a graphical user interface (GUI)
created from Swing or Abstract Window Toolkit (AWT) API
• Application clients directly access enterprise beans running in the business tier.
JavaBeans™ Component Architecture
• Java-Beans component architecture to manage the data flow between an application client or applet and the J2EE server component
• JavaBeans components have instance variables and get and set methods for accessing the data in the instance variables.
J2EE Server Communications
Web Tier and J2EE Applications
Web, Business and EIS Tiers
JSP
Point to Discuss
• JSP introduction• JSP elements• JSP development practices
JSP and Servlet• Limitations of servlet
– It is difficult to write HTML– It’s ineffective to design webpages– It’s inaccessible to non-programmers
• JSP is a complement to servlet– JSP focuses on user interface and presentation– JSP enhances the design capability of servlet– JSP pages can be written with any text editor, including
HTML editor– JSP is a server side technology
JSP Pages• JSP page file ends with “.jsp” by default
• JSP pages are organized like any other HTML files using the normal directory/file structure
• A JSP page is usually composed of regular HTML tags and JSP scripting elements
• JSP page is implicitly compiled to servlet class and loaded into memory– when the page is requested the first time after creation, or– when the page is requested the first time after modification– Refer to table 10.1 in the textbook and the next slide
JSP Compilation and Execution
17
JSP Page
Compile JSP Servlet Instance in Memory
init()
service()
First requestafter creation or
modification
Subsequent Requests (can
be from different users and sessions)
JSP Servlet
Automatic Compilation
Servlet and JSP
Servlet JSP
Development java classes (.java) scripting file (.jsp)
Deployment Manually compiled;
Specifically mapped
Directly mapped: copy JSP files to intended directories
Execution No need of source files
Automatic compilation; automatic reloaded; source files (.jsp) are necessary
JSP Elements• Scripting elements
– Scriptlet• Regular Java code
– Expression• Shortcut for output
– Declaration• Declaring variables and methods at the class level
• Directive
• JSP action
• Comments (<%-- … --%>)
Expression
• A shortcut to print out a value or an expression
<%= [expression]%>
– Expression can be a variable, formula, object property, string concatenation, method with return value, or anything that returns a value
JSP Output Practices
• Ways to treat static HTML content
– Regular/block output (servlet way)• Uses “out.println()” or “out.print()” method to
generate all content, including static content
– “Spaghetti”/mixed output (scripting way)• Uses JSP scriptlets or expressions for dynamic content
only• Mixes scripting elements and static content
Regular Output
• Using “out.print()” or “out.println()” method to generate HTML as a block, even the whole page – Servlet way
• StringBuffer is often used to construct HTML content first, and then printed out at one time
Spaghetti Output
• Expression elements are often used where dynamic content is needed
• Use regular HTML for static content; don’t include them in JSP scripting elements
• How mixed should it be?– Depends on your own style– Coding should be most convenient and clear– Depends on development requirement
Declarations• Declaration element is used to define member variables and
methods
<%! … %>
– Variables not defined in declaration element are local / method level variables
– Methods can only be defined in the declaration element
• Like regular class variables and methods, the location where you define these variables and methods is not important
JSP Page Directive• Directives affects the overall structure of the servlet
generated
<%@ … %>
• Use page directive to import classes
<%@ page import=“…, …, …”%>
– This is equivalent to the “import” statement in regular Java classes
JSP Include Directive
• How to reuse code?
• Use include directive to include source code from another file
<%@ include file=“…” %>
– Inclusion happens at the compilation time– What is included is the source, not generated result– Often used to include method definitions
Redirection, Refreshing and Forwarding
• Redirection– response.sendRedirect()
• Refreshing– response.setHeader(“Refresh”, “10; url=…”)
• Forwarding <jsp:forward page=“…” />– The “page” attribute follows the same rule as that of <jsp:include/>– Forwarding does not invoke network traffic– The destination URL is hidden; original requested URL does not change in
browser address bar after forwarding
• Compare redirecting and forwarding
Request Processing• Using implicit object “request”
• Processing HTTP request headers– The same way as servlet
• Reading URL parameter
http://localhost/appcontext/request.jsp?choice=yes
– Parameter processing is the same way as servlet, using request.getParameter(“…”), request.getPameterValues(“…”)
Form Processing with JSP
• The same way as servlet
request.getParameter(“…”)
– Note: the action attribute of the form should be a JSP file that processes data
<form method=“post” action=“studentprofile.jsp”>…</form>
Servlet
Java on the Web: J2EE• Thin clients (minimize download)• Java all “server side”
THIS IS WHAT YOU’LL BE DOING!!
Client Server
Servlets
Where are Servlets?
HTTP WebServer
File system
ServletServer
Static
Dynamic
CGI vs. Servlet
• CGI - new process for each request!!!
• Servlet - Servlet loaded only once
How are Servlets?import java.io.*;import javax.servlet.*;import javax.servlet.http.*;
public class Hellox extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>");// out.println("<body>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>");} // doGet} // Hellox
Explanation
• A class should extend HttpServlet and override doGet or doPost (or both), depending on whether the data is being sent by GET or by POST.
• The HttpServletRequest has methods that let you find out about incoming information such as FORM data, HTTP request headers, and the like
Explanation
• TheHttpServletResponse has methods that lets you specify the HTTP response line, response headers most importantly obtain a method from PrintWriter used to send output back to the client.
• You have to import classes in java.io ,javax.servlet ,and javax.servlet.http
Directory Structure
Methods of Servlets
• init()• service()• getServletConfig()• getServletInfo()• destroy()
Init()
• The init() method is called only once by the servlet container throughout the life of a servlet.
Service()
• Once the servlet starts getting the requests, the service() method is called by the servlet container to respond.
Destroy()
• That is before removing a servlet instance from service, the servlet container calls the destroy() method. Once the servlet container calls the destroy() method, no service methods will be then called .
Life cycle of Servlet
• Loading and Inatantiation:• Initialization• Servicing the Request• Destroying the Servlet
Loading and Inatantiation
• The servlet container loads the servlet during startup or when the first request is made. The loading of the servlet depends on the attribute <load-on-startup> of web.xml file. If the attribute <load-on-startup> has a positive value then the servlet is load with loading of the container otherwise it load when the first request comes for service. After loading of the servlet, the container creates the instances of the servlet.
Initialization• After creating the instances, the servlet container
calls the init() method and passes the servlet initialization parameters to the init() method. The init() must be called by the servlet container before the servlet can service any request. The initialization parameters persist untill the servlet is destroyed. The init() method is called only once throughout the life cycle of the servlet.
• The servlet will be available for service if it is loaded successfully otherwise the servlet container unloads the servlet.
Servicing the Request
• After successfully completing the initialization process, the servlet will be available for service. Servlet creates seperate threads for each request. The sevlet container calls the service() method for servicing any request. The service() method determines the kind of request and calls the appropriate method (doGet() or doPost()) for handling the request and sends response to the client using the methods of the response object.
Destroying the Servlet
• If the servlet is no longer needed for servicing any request, the servlet container calls the destroy() method . Like the init() method this method is also called only once throughout the life cycle of the servlet. Calling the destroy() method indicates to the servlet container not to sent the any request for service and the servlet releases all the resources associated with it. Java Virtual Machine claims for the memory associated with the resources for garbage collection.
Life Cycle of a Servlet