Enterprise Java Unit 1.1: Understanding Java EE 1. Enterprise Application An Enterprise Application is a large-scale software application designed for organizations such as banks, hospitals, universities, and e-commerce companies. It manages business processes, supports multiple users simultaneously, and provides security and reliability. Characteristics: Multi-user environment High security Scalability Reliability Database connectivity Distributed architecture Examples Online Banking System Hospital Management System E-commerce Website University Management System 2. What is Java Enterprise Edition (Java EE)? Java Enterprise Edition (Java EE) is a platform built on Java SE that provides APIs and technologies for developing enterprise-level web and distributed applications. It simplifies application development by offering standard components for: Web applications Database connectivity Security Transactions Messaging Web services
Features: Platform independent Portable Secure Scalable Robust Multi-tier architecture Advantages: Faster development Code reusability Easy maintenance Standard APIs High performance 3. Java EE Technologies Java EE provides several technologies. Technology Purpose Servlet Handles client requests JSP (JavaServer Pages) Creates dynamic web pages JDBC Database connectivity EJB (Enterprise JavaBeans) Business logic JPA Object-Relational Mapping JSF User interface framework JMS Messaging service JTA Transaction management CDI Dependency Injection Web Services Communication between applications
4. Java EE Evolution Version Features J2EE 1.2 Initial enterprise platform J2EE 1.3 Added EJB improvements J2EE 1.4 Web services support Java EE 5 Introduced annotations Java EE 6 CDI, Servlet 3.0, Bean Validation Java EE 7 WebSocket, JSON Processing Java EE 8 JSON Binding, HTTP/2 Jakarta EE Java EE transferred to Eclipse Foundation 5. GlassFish Server GlassFish is an open-source Java EE application server used to deploy and run enterprise applications. Features: Supports Java EE technologies Fast deployment Automatic application deployment Administration Console JDBC support Web services support Uses: Deploy Servlets Deploy JSP applications Host Enterprise Applications Test Java EE projects
Unit 1.2: Java EE Architecture, Server and Containers 1. Types of System Architecture a) One-Tier Architecture All components on one computer. Example: MS Access application b) Two-Tier Architecture Client directly communicates with the database. Client---------Database Example: Desktop application using MySQL c) Three-Tier Architecture Presentation Layer---------Business Layer--------Database Layer Layers: Presentation Layer (Browser) Business Layer (Servlets, JSP) Database Layer (MySQL) Advantages: Better security Easy maintenance Scalability d) N-Tier Architecture Contains multiple business layers for large enterprise applications. Example: Banking systems Amazon Flipkart
2. Java EE Server A Java EE Server is software that provides the runtime environment for enterprise applications. Responsibilities: Application deployment Security Transaction management Resource management Database connectivity Examples: GlassFish Apache TomEE WildFly 3. Java EE Containers: A Container manages Java EE components automatically. Types: a) Web Container Manages: Servlets JSP Functions: Request handling Session management Security b) EJB Container Manages Enterprise JavaBeans. Functions: Transactions Security Lifecycle management
c) Application Client Container Runs standalone Java applications. d) Applet Container Runs Java Applets inside browsers (now obsolete). Unit 1.3: Introduction to Java Servlets 1. Need for Dynamic Content Static web pages always display the same information. Dynamic web pages change according to: User login Database data Current date/time User input Example: Online Shopping Website 2. Java Servlet Technology A Servlet is a Java program that runs on a web server and processes client requests. It receives HTTP requests and returns HTTP responses. Browser | HTTP Request | Servlet | Database | HTTP Response | Browser
3. Why Servlets? Advantages: Fast Platform independent Secure Efficient Supports multithreading Easy database connectivity Servlet vs CGI Before Servlets, websites used CGI (Common Gateway Interface) to create dynamic pages. The biggest difference is how they handle requests. CGI Creates a new process for every request. This uses more memory and takes more time. Servlet Creates one object and uses multiple threads for many requests. Faster and more efficient. Servlet CGI Runs inside web server New process for every request Faster Slower Uses threads Uses processes Less memory More memory More scalable Less scalable Easy to maintain Difficult to maintain 4. What Can Servlets Do? Receive user input Process forms Connect to databases Generate dynamic HTML Handle login authentication Manage sessions Upload/download files
Unit 1.4: Servlet API and Lifecycle Java Servlet API Important Packages: javax.servlet javax.servlet.http Important Classes and Interfaces Class/Interface Purpose Servlet Root interface GenericServlet Generic servlet class HttpServlet Handles HTTP requests HttpServletRequest Reads request data HttpServletResponse Sends response Servlet Skeleton import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException { PrintWriter out = res.getWriter(); out.println("Hello World"); } }
Servlet Life Cycle There are three lifecycle methods. 1. init() Called once. Purpose: Initialization 2. service() Called for every client request. Processes: GET POST PUT DELETE 3. destroy() Called before servlet removal. Used for: Closing database connections Releasing resources Lifecycle Diagram
Simple Welcome Servlet import java.io.*; import javax.servlet.http.*; public class WelcomeServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException { PrintWriter out = res.getWriter(); out.println("<h1>Welcome to Java EE</h1>"); } } Unit 1.5: Working with Servlets Steps: Install JDK Install GlassFish Server Create Web Project Write Servlet Deploy Run in Browser Using Annotations Instead of Deployment Descriptor Earlier versions required web.xml Modern Servlets use annotations. Example: @WebServlet("/hello") public class HelloServlet extends HttpServlet { protected void doGet(HttpServletRequest req,
HttpServletResponse res) throws IOException { res.getWriter().println("Hello"); } } Advantages: No web.xml Less configuration Easy maintenance Unit 1.6: Working with Databases What is JDBC? JDBC (Java Database Connectivity) is an API used to connect Java applications with databases. It allows Java programs to: Connect to database Execute SQL queries Retrieve results Update records Components of JDBC Component Purpose DriverManager Manages database drivers Driver Connects Java to the database Connection Represents a database connection Statement Executes SQL queries PreparedStatement Executes parameterized SQL queries ResultSet Stores query results
JDBC Architecture Java Program | JDBC API (java.sql) | DriverManager | JDBC Driver | Database | Result Returned | Java Program Steps for Accessing Database Import JDBC package Load Driver Create Connection Create Statement Execute SQL Process Result Close Connection Example: Class.forName("com.mysql.cj.jdbc.Driver"); Connection con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test", "root", "password");
Statement st = con.createStatement(); ResultSet rs = st.executeQuery("SELECT * FROM student"); while(rs.next()){ System.out.println(rs.getInt("id")); System.out.println(rs.getString("name")); } con.close(); Advantages of JDBC Platform independent Supports all major databases Easy integration with Java Secure using PreparedStatement Efficient data access Difference Between Statement and PreparedStatement Statement PreparedStatement SQL written every time SQL precompiled Slower Faster Vulnerable to SQL Injection More secure
