IT-505: Advanced Java Lab - UNIT 1 Short Notes
Core Theme: Foundation of Java Web Application Development using Servlets & JSP.
1.0 Introduction to Java EE / Jakarta EE Platform & Web Applications
-
1.1 Evolution: Transition from Core Java (desktop apps) to Enterprise Java (Java EE / Jakarta EE) for building scalable, distributed, multi-tier web applications. Java EE provides specifications (Servlets, JSP, EJB, JPA) implemented by vendors (Tomcat, WildFly).
-
1.2 n-Tier Architecture:
-
Client Tier: Browser (HTTP client).
-
Web Tier: Servlets & JSP (presentation logic, request handling).
-
Business Tier (EJB): (Optional in basic apps) Business logic.
-
Integration Tier: JMS, web services.
-
Resource Tier: Database, ERP systems.
[!TIP] For RGPV exams, focus on the Web Tier (Servlets/JSP) as the primary controller and view components.
-
-
1.3 Web Container / Servlet Container: Runtime environment (e.g., Apache Tomcat, Jetty) that manages Servlet/JSP lifecycle, provides JSP engine, connection pooling, and security. Tomcat implements Servlet/JSP specifications.
-
1.4 HTTP/HTTPS Fundamentals:
-
Request Methods:
GET(fetch data, idempotent, URL visible),POST(submit data, non-idempotent, body),PUT,DELETE. -
Structure: Request (Line: Method, URI, Version; Headers; Body) & Response (Line: Version, Status Code; Headers; Body).
-
Status Codes:
200 OK,302 Found(Redirect),404 Not Found,500 Internal Server Error.
-
-
1.5 Development Environment Setup:
-
Servlet Container: Download & configure Apache Tomcat. Set
CATALINA_HOME,JAVA_HOME. -
IDE Integration: In Eclipse/IntelliJ, add Tomcat server runtime. Create Dynamic Web Project.
-
Project Structure:
ProjectName/ ├── src/ (Java source - Servlets, POJOs) ├── WebContent/ │ ├── WEB-INF/ │ │ ├── web.xml (Deployment Descriptor) │ │ └── lib/ (JARs) │ └── *.jsp, *.html (Public resources)
-
2.0 Java Servlet Technology
-
2.1 What is a Servlet? A Java class that extends server capabilities, handles HTTP requests, and generates dynamic web content. Follows request-response model.
-
2.2 Key Interfaces/Classes:
-
Servlet(interface): Core lifecycle methods. -
GenericServlet(abstract class): Protocol-independent implementation. -
HttpServlet(abstract class): Most used. ProvidesdoGet(),doPost()for HTTP.
-
-
2.3 Servlet Lifecycle:
-
Loading & Instantiation: Container loads class & creates instance.
-
Initialization (
init()): Called once. For one-time setup. -
Request Handling (
service()): For each request, container callsservice(), which by default inHttpServletroutes todoGet()/doPost(). -
Destruction (
destroy()): Called once before removal. For cleanup.
[!TIP]
init()&destroy()execute once;doGet()/doPost()execute per request. -
-
2.4 Handling HTTP Requests/Responses:
-
HttpServletRequest:getParameter(),getHeader(),getSession(),getMethod(). -
HttpServletResponse:setContentType(),getWriter(),sendRedirect(),setStatus().
-
-
2.5 Passing Data (Client ↔ Servlet):
-
Query String (GET):
url?name=value. Accessed viarequest.getParameter(). -
HTML Form (POST):
<form method="post">. Data in request body.
-
-
2.6 Servlet Collaboration:
-
RequestDispatcher(Server-side):-
forward(request, response): Transfers control & request/response objects to another resource. URL does not change. Used in MVC (Controller → View). -
include(request, response): Includes response of another resource in current response.
-
-
sendRedirect()(Client-side): Sends302status &Locationheader. Browser makes new request. URL changes. Used for PRG pattern or redirecting to external site.
[!TIP] Forward vs Redirect: Forward is faster (single request), Redirect is slower (two requests) but URL updates and avoids form resubmission.
-
-
2.7 Servlet Attributes (Scopes):
-
Request Scope:
request.setAttribute(name, obj). Lives for one forward/include. -
Session Scope:
session.setAttribute(name, obj). Lives for user session. -
Context (Application) Scope:
getServletContext().setAttribute(name, obj). Lives for entire web app.
-
-
2.8 Deployment Descriptor (
web.xml):-
Servlet Declaration:
<servlet><servlet-name>...</servlet-name><servlet-class>...</servlet-class></servlet> -
Servlet Mapping:
<servlet-mapping><servlet-name>...</servlet-name><url-pattern>/url</url-pattern></servlet-mapping> -
Initialization Parameters:
<init-param><param-name>...</param-name><param-value>...</param-value></init-param>(Access viagetServletConfig().getInitParameter()). -
Welcome File List:
<welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>.
-
3.0 JavaServer Pages (JSP) Technology
-
3.1 What is JSP? Technology for creating dynamic web pages with HTML/XML and Java code. Separates presentation (view) from business logic (servlet/model). JSP is translated to Servlet by container.
-
3.2 JSP Lifecycle:
-
Translation:
.jsp→.java(Servlet source). -
Compilation:
.java→.class(Servlet bytecode). -
Execution: Servlet
service()method handles requests.
[!TIP] First request is slow (translation/compilation). Subsequent requests are fast.
-
-
3.3 JSP Elements:
| Element Type | Syntax | Purpose | Example | | :--- | :--- | :--- | :--- | | Directive |
<%@ directive ... %>| Page-level settings, imports, includes. |<%@ page import="java.util.*" %>| | Declaration |<%! declaration %>| Declare class-level variables/methods. |<%! int count=0; %>| | Scriptlet |<% scriptlet %>| Embed Java code in_jspService()method. Avoid in JSP 2.0+. |<% out.println("Hi"); %>| | Expression |<%= expression %>| Evaluate & print result (converted toout.print()). |<%= new Date() %>| | Action |<jsp:action ...>| Use predefined tags for common tasks. |<jsp:include page="header.jsp" />| -
3.4 Implicit Objects in JSP: Pre-defined variables available in
_jspService().-
request,response,session,application(ServletContext) -
out(JspWriter),pageContext(central object),config(ServletConfig) -
page(Object),exception(Throwable, only in error pages).
-
-
3.5 JSP Expression Language (EL):
-
Syntax:
${expression}. Evaluates to a value. -
Accessing Data:
${scope.attribute}`, `${bean.property},${map['key']}`, `${list[0]}. -
Operators: Arithmetic (
+,-,*,/,%), Relational (==,!=,<,>), Logical (&&,||,!), Empty (empty).
[!TIP] EL implicitly searches scopes in order: page → request → session → application.
-
-
3.6 JSP Standard Tag Library (JSTL):
-
Setup: Add
jstl.jar&standard.jartoWEB-INF/lib. Use<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>. -
Core Tags (
c):-
<c:set var="x" value="10" scope="session"/>(Set attribute). -
<c:out value="${user.name}"/>(Print, escape XML). -
<c:if test="${user.age > 18}">Adult</c:if>. -
<c:choose><c:when test="${...}">...</c:when><c:otherwise>...</c:otherwise></c:choose>. -
<c:forEach var="item" items="${list}">...</c:forEach>. -
<c:forTokens items="a,b,c" delims="," var="token">...</c:forTokens>.
-
-
Formatting Tags (
fmt):<fmt:formatNumber value="$$\displaystyle {price}" type="currency"/>`, `<fmt:formatDate value=" $${date}" pattern="dd/MM/yyyy"/>.
-
4.0 Session Management & State Tracking
-
4.1 HTTP is Stateless: Each request is independent. Server doesn't remember previous requests from same client.
-
4.2 Session Management Techniques:
-
Cookies:
response.addCookie(new Cookie("name", "value")).request.getCookies(). Client-side, limited size, user can disable. -
URL Rewriting:
response.encodeURL("url")appends;jsessionid=.... Fallback when cookies disabled. -
Hidden Form Fields:
<input type="hidden" name="sessionId" value="...">. Less common.
-
-
4.3
HttpSessionObject (Primary Method):-
HttpSession session = request.getSession();(creates if doesn't exist). -
session.setAttribute("user", userObj); -
Object user = session.getAttribute("user"); -
session.removeAttribute("user"); -
session.invalidate();(Destroy session). -
Timeout: Configure in
web.xml:<session-config><session-timeout>30</session-timeout></session-config>(minutes). Inactivity expires session.
-
5.0 Advanced Servlet Features
-
5.1 Filters (
javax.servlet.Filter):-
Purpose: Pre-process request before Servlet & post-process response after Servlet. Used for authentication, logging, compression, encoding.
-
Lifecycle:
init(FilterConfig),doFilter(request, response, chain),destroy(). -
Filter Chain: Multiple filters configured in
web.xml.chain.doFilter()passes control to next filter/servlet.
-
-
5.2 Listeners:
-
ServletContextListener:contextInitialized(),contextDestroyed(). (App startup/shutdown). -
HttpSessionListener:sessionCreated(),sessionDestroyed(). -
ServletRequestListener:requestInitialized(),requestDestroyed().
-
-
5.3 Error Handling:
-
web.xmlerror-page:<error-page> <exception-type>java.lang.Exception</exception-type> <location>/error.jsp</location> </error-page> -
Page Directive:
<%@ page errorPage="error.jsp" %>in JSP. -
Error JSP: Has implicit object
exception(Throwable).
-
6.0 Database Connectivity (JDBC in Web Apps)
-
6.1 JDBC Core API Review:
DriverManager.getConnection(),Connection,Statement,PreparedStatement(prevents SQL Injection),ResultSet. -
6.2 Best Practices:
-
Connection Pooling: Crucial for performance. Use
DataSourcevia JNDI lookup. Container manages pool.-
Configure in
context.xml(Tomcat) orserver.xml. -
Lookup:
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MyDB");
-
-
Always use
PreparedStatementfor user input. -
Close Resources:
ResultSet,Statement,Connectioninfinallyblock or try-with-resources.
-
-
6.3 MVC Integration:
-
Model: JavaBean/POJO (e.g.,
User) & DAO (e.g.,UserDAOwith CRUD methods using JDBC). -
Controller: Servlet calls DAO, stores result in request/session attribute, uses
RequestDispatcherto forward to JSP. -
View: JSP (with JSTL/EL) only reads attributes & displays. No JDBC code in JSP.
-
7.0 Introduction to MVC Architecture
-
7.1 MVC Pattern: Separates application into three components for maintainability, scalability, and separation of concerns.
-
7.2 Roles:
-
Model: Data & Business Logic. JavaBeans (data holders) & DAO classes (DB operations). Independent of view/controller.
-
View: Presentation. JSP pages with minimal Java code (use JSTL/EL). Displays data from model.
-
Controller: Request Handler & Flow Control. Servlet receives request, invokes model, selects view, forwards.
-
-
7.3 Simple CRUD Flow (MVC):
-
Client → sends request to Controller Servlet (URL pattern).
-
Servlet → calls DAO/Model method (e.g.,
userDAO.getAllUsers()). -
Servlet → stores
List<User>in request attribute. -
Servlet →
RequestDispatcher.forward("users.jsp"). -
JSP (View) → uses
<c:forEach>to iterate list & display.
[!TIP] Golden Rule: JSP should NOT contain JDBC or business logic. All processing in Servlet/DAO.
-
\boxed{\text{Key Exam Focus: Servlet/JSP Lifecycle, RequestDispatcher vs sendRedirect, Scopes, JSTL Core Tags, MVC Flow, Session Management}}