J2ee

1,213 views
1,131 views

Published on

This is a introductory lecture of J2EE for those who want to learn what is j2ee technology and about its basics.You can also fine coding exmples in this lecture

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,213
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
111
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Singleton example is wrong
  • Singleton example is wrong
  • J2ee

    1. 1. 1By Shaharyar Khanshaharyar.khan555@gmail.com
    2. 2.  Before going to understand that what is J2EE, first We shouldlook into that what is Enterprise level We can say that“When our application is composed of n-tier(mostly 3-tier) , this will be Enterprise application”2So“Implementation Provided By JAVA for the handlingenterprise level can be called J2EE”shaharyar.khan555@gmail.com
    3. 3.  The J2EE platform provides an API and runtimeenvironment for developing and running enterprisesoftware, including network Services web services other large-scale multi-tiered services &network applications As well as scalable, reliable, and securenetwork applications3 Java EE extends the Java Platform, Standard Edition (JavaSE), providing an API for object-relational mapping,distributed and multi-tier architectures, and web servicesshaharyar.khan555@gmail.com
    4. 4.  Software for Java EE is primarily developed in the Javaprogramming language and uses XML for configuration. The platform was known as Java 2 Platform, Enterprise Editionor J2EE until the name was changed to Java EE in version 5.The current version is called Java EE 6.4shaharyar.khan555@gmail.com
    5. 5. 5shaharyar.khan555@gmail.com
    6. 6.  The J2EE platform uses a multitier distributed application model. Thismeans application logic is divided into components according tofunction, and the various application components that make up aJ2EE application are installed on different machines depending onwhich tier in the multitier JEE environment the applicationcomponent belongs.6shaharyar.khan555@gmail.com
    7. 7.  JEE applications are made up of componentsApplication clients and applets are clientcomponents.Java Servlet and JavaServer Pages (JSP) technologycomponents are web components.Enterprise JavaBeans (EJB) components (enterprisebeans) are business components.7shaharyar.khan555@gmail.com
    8. 8.  A J2EE application can be web-based or non-web-based. Anapplication client executes on the client machine for a non-web-based J2EE application, and a web browser downloadsweb pages and applets to the client machine for a web-basedJ2EE application.8shaharyar.khan555@gmail.com
    9. 9.  J2EE web components can be either JSP pages or servlets Servlets are Java programming language classes thatdynamically process requests and construct responses JSP pages are text-based documents that contain staticcontent and snippets of Java programming language code togenerate dynamic content9shaharyar.khan555@gmail.com
    10. 10. 10 Business code, which is logic that solves or meets the needsof a particular business domain such as banking, retail, orfinance, is handled by enterprise beans running in thebusiness tier There are three kinds of enterprise beans: session beans entity beans message-driven beansshaharyar.khan555@gmail.com
    11. 11.  Component are installed in their containers duringdeployment and are the interface between a component andthe low-level platform-specific functionality that supportsthe component Before a web, enterprise bean, or application clientcomponent can be executed, it must be assembled into a J2EEapplication and deployed into its container.11shaharyar.khan555@gmail.com
    12. 12.  An Enterprise JavaBeans (EJB) container manages the execution of allenterprise beans for one J2EE application. Enterprise beans and theircontainer run on the J2EE server. A web container manages the execution of all JSP page and servletcomponents for one J2EE application. Web components and theircontainer run on the J2EE server. An application client container manages the execution of all applicationclient components for one J2EE application. Application clients and theircontainer run on the client machine. An applet container is the web browser and Java Plug-in combinationrunning on the client machine.They are also part of client machine12shaharyar.khan555@gmail.com
    13. 13. 13shaharyar.khan555@gmail.com
    14. 14. 14shaharyar.khan555@gmail.com
    15. 15. 15shaharyar.khan555@gmail.com
    16. 16.  J2EE ( Java 2 -Enterprise Edition) is a basket of  12 inter-related technologies , which can be grouped as follows forconvenience.:16Group-1  (Web-Server  &  support Technologies )=====================================  1) JDBC   (  Java Database Connectivity)  2) Servlets  3) JSP   (Java Server Pages)  4) Java Mail_____________________________________________Group-2   ( Distributed-Objects Technologies)=====================================  5) RMI  (Remote Method Invocation)  6) Corba-IDL   ( Corba-using Java  with OMG-IDL)  7) RMI-IIOP   (Corba in Java without OMG-IDL)  8) EJB   (Enterprise Java Beans)________________________________________________shaharyar.khan555@gmail.com
    17. 17. Group-3  (  Supporting & Advanced Enterprise technologies)=============================================  9) JNDI   ( Java Naming & Directory Interfaces)   10) JMS   ( Java Messaging Service)   11) JAVA-XML  ( such as JAXP, JAXM, JAXR, JAX-RPC, JAXB, and XML-WEBSERVICE)   12) Connectors ( for ERP and Legacy systems).Now we will cover some important technologies from these.17shaharyar.khan555@gmail.com
    18. 18.  We all know about network sockets very well , their purposeand usage Let us see the difference in implementation of sockets amongthe c# and JAVA Steps are same Open a socket. Open an input stream and output stream to the socket. Read from and write to the stream according to the serversprotocol. Close the streams. Close the socket.18shaharyar.khan555@gmail.com
    19. 19. 19 In c# (client Socket) System.Net.Sockets.TcpClient clientSocket = newSystem.Net.Sockets.TcpClient();And after then we will connect to specific server clientSocket.Connect("127.0.0.1", 8888); In JAVA(client Socket) Socket client = new Socket(("127.0.0.1", 8888);Only in this line we can create socket as well as connect to the servershaharyar.khan555@gmail.com
    20. 20. 20 In c # (Server Socket) TcpListener serverSocket = new TcpListener(8888);And after then we will connect to specific server serverSocket.Start(); In JAVA(Server Socket) serverSocket = new ServerSocket(8888);This will acccept the connection from the client Socket server = serverSocket.accept();shaharyar.khan555@gmail.com
    21. 21. 21import java.net.*;import java.io.*;public class GreetingClient {public static void main(String [] args) {String serverName = args[0];int port = Integer.parseInt(args[1]);try {System.out.println("Connecting to " + serverName + " on port" + port);Socket client = new Socket(serverName, port);System.out.println("Just connected to " +client.getRemoteSocketAddress());OutputStream outToServer = client.getOutputStream();DataOutputStream out = new DataOutputStream(outToServer);out.writeUTF("Hello from " + client.getLocalSocketAddress());InputStream inFromServer = client.getInputStream();DataInputStream in = new DataInputStream(inFromServer);System.out.println("Server says " + in.readUTF());client.close();}catch(IOException e) {e.printStackTrace();}}}shaharyar.khan555@gmail.com
    22. 22. 22import java.net.*;import java.io.*;public class GreetingServer extends Thread {private ServerSocket serverSocket;public GreetingServer(int port) throws IOException {serverSocket = new ServerSocket(port);serverSocket.setSoTimeout(10000); }public void run() {while(true) {try{System.out.println("Waiting for client on port " +serverSocket.getLocalPort() + "...");Socket server = serverSocket.accept();System.out.println("Just connected to “+server.getRemoteSocketAddress());DataInputStream in = newDataInputStream(server.getInputStream());System.out.println(in.readUTF());DataOutputStream out = newDataOutputStream(server.getOutputStream());out.writeUTF("Thank you for connecting to " +server.getLocalSocketAddress() + "nGoodbye!");server.close();}catch(SocketTimeoutException s) {System.out.println("Socket timed out!");break;}catch(IOException e) {e.printStackTrace(); break;}}}shaharyar.khan555@gmail.com
    23. 23. public static void main(String [] args) {int port = Integer.parseInt(args[0]);try {Thread t = new GreetingServer(port);t.start();}catch(IOException e) {e.printStackTrace();}}}23shaharyar.khan555@gmail.com
    24. 24. 24Java Database Connectivity or JDBC for short is set of JavaAPIs that enables the developers to create platform anddatabase independent applications in java.Connect to any database through java is very simple andrequires only few stepsImport the packages . Requires that you include the packagescontaining the JDBC classes needed fordatabase programming. Most often, usingimport java.sql.* will suffice.Register the JDBC driver . Requires that you initialize a driver soyou can open a communicationschannel with the database.Open a connection . Requires using theDriverManager.getConnection() method tocreate a Connection object, which represents aphysical connection with the database.shaharyar.khan555@gmail.com
    25. 25. 25Execute a query . Requires using an object of type Statement forbuilding and submitting an SQL statement to the database.Extract data from result set . Requires that you use theappropriate ResultSet.getAnyThing() method to retrieve the datafrom the result set.Clean up the environment . Requires explicitly closing alldatabase resources versus relying on the JVMs garbagecollection.shaharyar.khan555@gmail.com
    26. 26. 26import java.sql.*;public class InsertValues{ public static void main(String[] args) {  System.out.println("Inserting values in Mysql database table!");  Connection con = null;  String url = "jdbc:mysql://localhost:3306/";  String db = “deltaDB";  String driver = "com.mysql.jdbc.Driver";  try{  Class.forName(driver);  con = DriverManager.getConnection(url+db,"root","root");  try{  Statement st = con.createStatement();  int val = st.executeUpdate("INSERT employeeVALUES("+13+","+"‘shaharyar"+")");  System.out.println("1 row affected");  }catch (SQLException s){  System.out.println("SQL statement is notexecuted!");  }  }catch (Exception e){  e.printStackTrace();  }  }}shaharyar.khan555@gmail.com
    27. 27. 27Oracle  oracle.jdbc.driver.OracleDriverMSSQL  com.microsoft.sqlserver.jdbc.SQLServerDriverPostgres  org.postgresql.DriverMS access  sun.jdbc.odbc.JdbcOdbcDriverDB2  COM.ibm.db2.jdbc.app.DB2Drivershaharyar.khan555@gmail.com
    28. 28. 28shaharyar.khan555@gmail.com
    29. 29. 29shaharyar.khan555@gmail.com
    30. 30. 30shaharyar.khan555@gmail.com
    31. 31. 31import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import javax.servlet.*;import javax.servlet.http.*;public class TestServlet extends HttpServlet {public void doGet(HttpServletRequest req, HttpServletResponse res)throws IOException, ServletException {res.setContentType("text/html");PrintWriter out = res.getWriter(); /* Display some response tothe user */out.println("<html><head>");out.println("<title>TestServlet</title>");out.println("t<style>body { font-family:Lucida Grande, " + "Lucida Sans Unicode;font-size: 13px; }</style>");out.println("</head>");out.println("<body>"); out.println("<p>Current Date/Time: " +new Date().toString() + "</p>");out.println("</body></html>"); out.close();}} shaharyar.khan555@gmail.com
    32. 32. 32Object Classapplication javax.servlet.ServletContextconfig javax.servlet.ServletConfigexception java.lang.Throwableout javax.servlet.jsp.JspWriterpage java.lang.ObjectPageContext javax.servlet.jsp.PageContextrequest javax.servlet.ServletRequestresponse javax.servlet.ServletResponsesession javax.servlet.http.HttpSessionshaharyar.khan555@gmail.com
    33. 33. 33Sessions are very easy to build and track in java servlets.We can create a session like thisAnd easily we can get its value on anyother servletparam = (Integer) session.getAttribute(“name");shaharyar.khan555@gmail.com
    34. 34. 34Cookies are also very simple to build and track in java servlets like sessions.We can create a cookies like thisAnd easily we can get its value on anyother servletString cookieName = "username";Cookie cookies [] = request.getCookies ();Cookie myCookie = null;if (cookies != null){for (int i = 0; i < cookies.length; i++) {if (cookies [i].getName().equals (cookieName)){myCookie = cookies[i];break;}}}shaharyar.khan555@gmail.com
    35. 35. 35 With servlets, it is easy toRead form dataRead HTTP request headersSet HTTP status codes and response headersUse cookies and session trackingShare data among servletsRemember data between requestsGet fun, high-paying jobsBut, it sure is a pain toUse those println statements to generate HTMLMaintain that HTMLshaharyar.khan555@gmail.com
    36. 36. 36 Functionality and life cycle of JSP and servlet are exactlysame. A JSP page , after loading first convert into a servlet. The only benefit ,which is surly very much effective is that aprogrammer can be get rid of hectic coding of servlets A designer can eaisly design in JSP without knowledge ofJAVAshaharyar.khan555@gmail.com
    37. 37. 37 All code is in Tags as JSP is a scripting language. Tags of JSPs are given belowDirectivesIn the directives we can import packages, define error handlingpages or the session information of the JSP page  DeclarationsThis tag is used for defining the functions and variables to be usedin the JSP ScripletsIn this tag we can insert any amount of valid java code and thesecodes are placed in _jspService method by the JSP engineExpressionsWe can use this tag to output any data on the generated page.These data are automatically converted to string and printed onthe output stream.shaharyar.khan555@gmail.com
    38. 38. 38 Action Tag:Action tag is used to transfer the control between pages andis also used to enable the use of server side JavaBeans.Instead of using Java code, the programmer uses special JSPaction tags to either link to a Java Bean set its properties, orget its properties.shaharyar.khan555@gmail.com
    39. 39. 39 Syntax of JSP directives is:<%@directive attribute="value" %>Where directive may be: page: page is used to provide the information about it.Example: <%@page import="java.util.*, java.lang.*" %>   include: include is used to include a file in the JSP page.Example: <%@ include file="/header.jsp" %>    taglib: taglib is used to use the custom tags in the JSP pages (custom tagsallows us to defined our own tags).Example: <%@ taglib uri="tlds/taglib.tld" prefix="mytag" %>  shaharyar.khan555@gmail.com
    40. 40. 40shaharyar.khan555@gmail.com
    41. 41. 41shaharyar.khan555@gmail.com
    42. 42. 42 Syntax of JSP Declaratives are:  <%!  //java codes   %>JSP Declaratives begins with <%! and ends %> with .We canembed any amount of java code in the JSP Declaratives. Variablesand functions defined in the declaratives are class level and can beused anywhere in the JSP page. shaharyar.khan555@gmail.com
    43. 43. 43shaharyar.khan555@gmail.com
    44. 44. 44Syntax of JSP Expressions are: <%="Any thing"   %>JSP Expressions start with Syntax of JSP Scriptles are with <%= and ends with  %>. Betweenthese this you can put anything and that will converted to theString and that will be displayed.Example:  <%="Hello World!" %>Above code will display Hello World!.shaharyar.khan555@gmail.com
    45. 45. 45These are the most commonly used action tags are :includeforwardparamuseBeansetPropertygetPropertyLet discuss some tags among these ….shaharyar.khan555@gmail.com
    46. 46. 46Include directive:<%@ include file= "index.jsp" %>Include Action<jsp: include page= "index.jspForward Tag:<jsp:forward page= "Header.html"/>Pram Tag:<jsp:param name="result" value="<%=result%>"/>shaharyar.khan555@gmail.com
    47. 47. 47Everywhere, in any programming language , it isrecommended that apply best programming practices.In JAVA, a java programmer always prefer to applydesign patterns while coding.Design Patterns are specific type of coding styles thatshould use in specific scenarios.Let Discuss some basic Design Patterns that we shoulduseshaharyar.khan555@gmail.com
    48. 48. 48The Singleton design pattern ensures that only oneinstance of a class is created.it provides a global point of access to the object and allowmultiple instances in the future without affecting asingleton classs clientsTo ensure that only one instance of a class is created wemake SingletonPattern’s instance as staticLet Discuss some basic Design Patterns that we shoulduseshaharyar.khan555@gmail.com
    49. 49. 49class SingletonClass{private static SingletonClass instance;private SingletonClass(){}public static synchronized SingletonClass getInstance(){if(instance == null)instance = new SingletonClass();return instance;}}shaharyar.khan555@gmail.com
    50. 50. 50class MyClass{public static void main(String[] args) {SingletonClass sp = SingletonClass.getInstance();System.out.println("first Instance: "+sp.toString());SingletonClass sp1 = SingletonClass.getInstance();System.out.println("2nd Instance: "+sp1.toString());}}You will see in output that both references will besameshaharyar.khan555@gmail.com
    51. 51. 51 Factory pattern comes into creational design pattern category the main objective of the creational pattern is to instantiate an objectand in Factory Pattern an interface is responsible for creating theobject but the sub classes decides which class to instantiate The Factory patterns can be used in following cases:1. When a class does not know which class of objects it mustcreate.2. A class specifies its sub-classes to specify which objects tocreate.3. In programmer’s language (very raw form), you can usefactory pattern where you have to create an object of any one ofsub-classes depending on the data provided.shaharyar.khan555@gmail.com
    52. 52. 52public class Person {// name stringpublic String name;// gender : M or Fprivate String gender;public StringgetName() {return name;}public StringgetGender() {return gender;}}// End of classshaharyar.khan555@gmail.com
    53. 53. 53public class Male extends Person {public Male(String fullName){System.out.println("Hello Mr."+fullName);}}// End of classpublic class Female extends Person {public Female(String fullNname) {System.out.println("Hello Ms."+fullNname);}}// End of classshaharyar.khan555@gmail.com
    54. 54. 54public class SalutationFactory {public static void main(String args[]) {SalutationFactory factory = newSalutationFactory();Person p =factory.getPerson(“Shaharyar”,”M”);}public Person getPerson(String name, Stringgender) {if (gender.equals("M"))return new Male(name);else if(gender.equals("F"))return new Female(name);elsereturn null;}}// End of classshaharyar.khan555@gmail.com
    55. 55. 55To keep things simple you can understand it like, you have aset of ‘related’ factory method design pattern. Then you willput all those set of simple factories inside a factory patternIn abstract factory , We create a interface instead of class andthen use it for the creation of objectsSimply , When we have a lot of place to apply factory methodthen we combine all of them in a interface and use themaccording to our needsshaharyar.khan555@gmail.com
    56. 56. 56Facade as the name suggests means the face of the building.The people walking past the road can only see this glass faceof the building. They do not know anything about it, thewiring, the pipes and other complexities. The face hides all thecomplexities of the building and displays a friendly face.hides the complexities of the system and provides an interfaceto the client from where the client can access the systemIn Java, the interface JDBC can be called a facade. We as usersor clients create connection using the “java.sql.Connection”interface, the implementation of which we are not concernedabout. The implementation is left to the vendor of driver.shaharyar.khan555@gmail.com
    57. 57. 57

    ×