Complete servlet Notes Day-2
New App create:
Example:
filename: LifeCycleServlet.java
----------------------------------------
import javax.servlet.*;
public class LifeCycleServlet implements Servlet{
public LifeCycleServlet(){
}
init();
service();
destroy();
getServletConfig();
getServletInfo();
}
Website: Example application illustrating servlet life cycle methods.
Appname: lifecycleapp
+
|
+---WEB-INF
|
|
+-classes
| +
| LifeCycleServelt.java
| LifeCycleServlet.class
+-web.xml
> e:
e:\>cd servlet
e:\servlet>cd f4
e:\servlet\f4> md lifecycleapp
e:\servlet\f4\lifecycleapp>md WEB-INF
e:\servlet\f4\lifecycleapp>cd WEB-INF
e:\servlet\f4\lifecycleapp\WEB-INF>md classes
e:\servlet\f4\lifecycleapp\WEB-INF>cd classes
e:\servlet\f4\lifecycleapp\WEB-INF\classes>notepad LifeCycleServlet.java
![]() |
| Working |
Filename: LifeCycleServlet.java
-----------------------------------
package com.controller;
import javax.servlet.*;
public class LifeCycleServlet implements Servlet{
static {
System.out.println("inside SB");
}
{
System.out.println("inside NSB");
}
public LifeCycleServlet(){
System.out.println("inside CB");
}
public void init(ServletConfig cfg){
System.out.println("inside init");
}
public void service(ServletRequest req,ServletResponse res){
System.out.println("inside service");
}
public void destroy(){
System.out.println("inside destroy");
}
public ServletConfig getServletConfig(){
System.out.println("inside getServletconfig");
return null;
}
public String getServletInfo(){
System.out.println("inside getServletInfo");
return null;
}
}
e:\servlet\f4\lifecycleapp\WEB-INF\classes>javac -d . *.java
errors...........
Note: set the classpath of servlet-api.java file which is available inside tomcathome\lib
E:\SERVLET\f4\lifecycleapp\WEB-INF\classes>set classpath=c:\Tomcat9\lib\servlet-
api.jar;%classpath%
E:\SERVLET\f4\lifecycleapp\WEB-INF\classes>javac -d . LifeCycleServlet.java
E:\SERVLET\f4\lifecycleapp\WEB-INF\classes>tree /f
E:.
│ LifeCycleServlet.java
│
└───com
└───controller
LifeCycleServlet.class
E:\SERVLET\f4\lifecycleapp\WEB-INF\classes>cd..
E:\SERVLET\f4\lifecycleapp\WEB-INF>editplus web.xml
E:\SERVLET\f4\lifecycleapp\WEB-INF>web.xml
E:\SERVLET\f4\lifecycleapp\WEB-INF>cd..
E:\SERVLET\f4\lifecycleapp>
Note: creating war file name: lifecycleapp.war
E:\SERVLET\f4\lifecycleapp\WEB-INF\classes>cd..
E:\SERVLET\f4\lifecycleapp\WEB-INF>editplus web.xml
E:\SERVLET\f4\lifecycleapp\WEB-INF>web.xml
E:\SERVLET\f4\lifecycleapp\WEB-INF>cd..
E:\SERVLET\f4\lifecycleapp>jar -cvf lifecycleapp.war .
Note: Deploy above war file to the tomcat server by following given steps
Step1: Start tomcat server
cmd>c:\tomcat9\bin>Tomcat9
Step2: open browser and request for given url
http://localhost:8080
Step3: Click on "Manager App" button
Step4: uname: admin, password: admin
Step5: scroll down tomcat home page
Click on "Choose File" submit button under 'war file to deploy'
And select the lifecycleapp.war file
and click on deploy
How many objects created and managed by the web container for any servlet?
Ans: For every configuration of servlet class, which is done inside web.xml file web container will creates seperate object.
> Each servlet objects are uniquely managed by the container based on logical name of the servlet. Logical name can be supplied by using <servlet-name> tag.
http://locahost:8080/lifecycleapp/u1
1request processing:
> Loading servlet class
> executing static block
> Instantiating servlet class
> executing NSB
> executing CB
> calling init() method (life cycle method)
> calling service method
http://locahost:8080/lifecycleapp/u1
2Request processing:
> calling service() method
3Request Processing:
http://locahost:8080/lifecycleapp/u2 => s2
> instatiating servlet class
> NSB
> CB
> calling init() method
> calling service() method
[*] Request processing(/u1,/u2)
> service() method
How to servlet object are managed by container?
Container code:
--------------
******************
url => url pattern=> Logical name
String lname = s1/s2
Servlet s = (Servlet) map.get(lname);
if(s==null){
Searching for servlet class name
String cname = ?
Class c = Class.forName(cname);
s = (Servlet)c.newInstance();
map.put(lname,s);
ServletConfig config = ...
s.init(config);
}
ServletRequest req = .......
ServletResponse res = ......
s.service(req,res);
..............
> For any servlet web container is allow to provide multipal configurations inside web.xml.
> For any servlet configuration we can provide any number of url pattern.
Most Imp
What is the difference made by the container in order to processing first request and other than first request?
> In default case web container may takes extra time during first request processing compare to other than request
1Request:
> loading servlet
> instantiating servlet
> calling init method
> calling service() method
2/*Request:
> calling service() method
![]() |
| Difference between 1st request and 2nd request |
How to process all client request in same amount of time?
How to instantiate servlet class at the time of web deployement?
Ans
<load-on-startup> configuration providing web.xml file.
What is the working of <load-on-startup> tag?
> By using this tag can instantiate a servlet class at the time of deployment.
Classname: com.controller.LifeCycleServlet
Logical name: s1
Url Pattern: /u1
Developing a web project using myeclipse
----------------------------------------
> open myeclipse IDE
> Right click on the PackageExplorer view and click on new option, select web project
Enter project name: webapp1
> finish
How to sending a HTML response from a servlet?
Step1: Setting response/MIME type by using setConentType() method of ServletResponse interface
response.setContentType("*/*");
Step2: retrieving desired output stream object from a ServletResponse
Case1: For HTML response - java.io
PrintWriter out = response.getWriter();
Case2: For binary response(audio/video/image)-javax.servlet
ServletOutputStream out = response.getOutputStream();
Step3: preparing html response
String msg = "<!DOCTYPE html>";
msg+="<head><title>HomePage</title></head>";
msg+="<body bgcolor = 'CYAN'>"
msg+="<h1><center>Welcome To Jit<center></h1></body></html>";
Step4: sending response message to the client
out.println(msg);
Step5:
close...............
File name HtmpResponceServlet.java
package com.edu;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class HtmlResponseServlet implements Servlet {
@Override
public void init(ServletConfig arg0) throws ServletException {
}
@Override
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
// step1: setting response type
response.setContentType("text/HTML");
// step2: getting printwriter object/stream
PrintWriter out = response.getWriter();
// step3: preparing html response message
String msg = "<!DOCTYPE html>";
msg += "<head><title>HomePage</title></head>";
msg += "<body bgcolor = 'CYAN'>";
msg += "<h1><center>Welcome To Jit<center></h1></body></html>";
// step4: sending response to the client by calling print() or println()
out.print(msg);
// step5: closing resources
out.close();
}
@Override
public void destroy() {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return null;
}
}
Web.xml file
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<servlet>
<servlet-name>html</servlet-name>
<servlet-class>com.edu.HtmlResponseServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>ImageResponseServlet</servlet-name>
<servlet-class>com.edu.ImageResponseServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>html</servlet-name>
<url-pattern>/index.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ImageResponseServlet</servlet-name>
<url-pattern>/image</url-pattern>
</servlet-mapping>
</web-app>
How to sending image from servlet to the client?
response.setContentType("image/JPEG");
> Begining of the request processing web container will create two types of output stream and make available to the every servlet application passing through argument to the service.
> Any servlet application can send a response from a service method by using response object given output stream
a. PrintWriter:
> By using methods of PrintWriter we can send only text type of response OR html response
b. ServletOutputStream:
![]() |
| Image processing |
Coding:
File name - ImageResponceServlet.java-
package com.edu;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ImageResponseServlet extends GenericServlet {
@Override
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
response.setContentType("image/PNG");
ServletOutputStream out = response.getOutputStream();
FileInputStream in = new FileInputStream("c:\\temp\\a.png");
int ch = in.read();
while(ch!=-1){
out.write(ch);
ch = in.read();
}
in.close();
out.close();
}
}
Q: How to sending binary response from a servlet?
> We can send binary data(mp3,mp4,jpeg files) from a servlet by using ServletOutputStream methods.
package com.edu;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ImageResponseServlet extends GenericServlet {
@Override
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
response.setContentType("audio/mpeg");
ServletOutputStream out = response.getOutputStream();
FileInputStream in = new FileInputStream("c:\\temp\\a.mp3");
int ch = in.read();
while(ch!=-1){
out.write(ch);
ch = in.read();
}
in.close();
out.close();
}
}
Types of web container?
1. Stand alone web container
2. In process web container
3. Out process web container (popular)
What is the responsibility of web container?
> Generally web is responsible for managing servlet and jsp page.
> Web container performs given operations
a. loading servlet class
b. instantiating servlet class
c. calling init() method
d. calling service() method
...........
callling destroy().





Comments
Post a Comment