Complete Servlet notes Day-3

Types of web container:
1. Stand-Alone web container
2. In-Process container
3. Out-Process container

Stand alone web container:
> This type of container application and server application both are running in same memory space.

Servlet Life Cycle Methods:
> There are five methods are available inside Servlet interface
a. init()
b. service()
c. destroy()
d. getServletConfig()
e. getServletInfo()

> Out of five methods there are three methods are part of servlet life cycle
  a. init()
  b. service()
  c. destroy()
 
init():
> public void init(ServletConfig cofig)throws SE

> After instantiating Servlet class init() method implicitly invoked by the web container jus after execution of constructor block.

> For any servlet object init() method will be executed only once.

Which type of logic should be placed inside init() method?
> If you want to execute any logics exactly once for each servlet object then such type of logics should be placed inside init() method.

service():
----------
sign:  public void service(ServletRequest req,ServletResponse res)  throws SExc,IOE
> For every new client request web container makes a call for 
service() method by passing ServletRequest  and ServletResponse object.
     service(req,res);

> Actual logics should be placed inside service() method.
> reading a request message and preparing response message related logics should be placed inside service method.


destroy():
> destroy() method will be executed by the container just before deallocation of servlet object.

In which cases servlet objects are getting deallocated
1. Whenever web application is reloaded
2. Whenever web application undeployed
3. Whenever server is restarted
4. Whenever server is stopped/shutdown

Types of Parameters:
====================
What is parameters?
> Parameter is nothing but it is a key/value pairs (information) managed by web container. where key and value both are stored in the form of strings.

> parameters are read only information

Types:
1. Request parameter/ client request parameter
2. Servlet configuration parameter / servlet initialization parameter
3. Context initiazation parameter/ application parameter

Request Parameter:
------------------
What is request parameters?
Ans: 
> Any parameter information which is send by the client to the web server via http request message known as request parameter.

What is the purpose of request parameters?
> By using request parameter client application can send user data to the web server

> request parameters acts like a input to the server.

Who is responsible for creating request parameters?
> Whenever any request created by the client to the server at that time request parameters created by the client application and send to the server along with request message.

How to access request parameters at server side(inside servlet)?
> At server side whenever any request received by the container than container reads the request parameter from http request message and stores inside ServletRequest object.

Imp
> At server side request parameters are stored in the form of ServletRequest object

> We can access request parameter at server side by using methods of ServletRequest interface.

> Working with ServletRequest object is nothing but indirectly we are working with its child class/implemented class object.

Methods provided  ServletRequest interface related to request parameters:
1. getParameter()
2. getParameterValues()
3. getParameterNames()
4. getParameterMap()

getParameter():
> sing: public String getParameter(String paramname);

> This method will returns request parameter value for specified paramemter name.

> If given parameter name is invalid then it will return null.
> If any request parameter having multipal values then getParameter() method will returns first value.

Note: By using single request parameter we can associate multipal values.

getParameterValues():
=====================
   String[] getParameterValues(String name);
> It will returns all value related to given parameter names in the form array of String.

  String[] par = req.getParameterValues("items");

getParameterNames():
> Enumeration getParameterNames();
> It will returns collection of all request parameter names in the of Enumeration.
   /test?x=10&y=20&z=30

   Enumeration e = req.getParameterNames();

getParameterMap():

   Map getParameterMap();

> It will returns map object for request parameter by storing parameter name and values.


Application: Servlet to Database Communication test
> creating userdetails table
> creating myeclipse project (logindbapp)
> create login.html page
> create LoginServlet.java
> start server
> deploy above application
> sending request to the login.html page
Note: copy ojdbc6.jar file in our myeclipse project and add to build path.

Table:
CREATE TABLE UserDetails
(
  uname VARCHAR2(10) PRIMARY KEY,
  pass  VARCHAR2(8)
);
INSERT INTO Userdetails VALUES('&Username','&password');
commit;

Application: create myeclipse project: requestparamtest


package com.edu;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;

public class TestConnectionServlet extends HttpServlet {
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
res.setContentType("text/HTML");
PrintWriter out = res.getWriter();
String driver=req.getParameter("driver");
String url = req.getParameter("url");
String dbuser = req.getParameter("dbuser");
String dbpass = req.getParameter("dbpass");
Connection con = null;
DatabaseMetaData md = null;
String name="",version="";
try{
Class.forName(driver);
con = DriverManager.getConnection(url, dbuser, dbpass);
md = con.getMetaData();
name = md.getDatabaseProductName();
version = md.getDatabaseProductVersion();
}catch(Exception e){
}
String msg = "<br/><h1>Connected to "+name+"<br/>";
msg+="Current version is "+version+"</h1>";
out.print(msg);
}
}
Required files: Web.xml and dbinfo html file
web.xml:

<web-app>
       <servlet>
            <servlet-name>TestConnectionServlet</servlet-name>
            <servlet-class>com.edu.TestConnectionServlet</servlet-class>
       </servlet>
 
       <servlet-mapping>
             <servlet-name>TestConnectionServlet</servlet-name>
             <url-pattern>/connect</url-pattern>
        </servlet-mapping>
</web-app

dbinfo.html
<!DOCTYPE html>
<html>
<head>
<title>Login Page</title>
</head>

<body bgcolor = 'pink'>
<center>
<h2>Enter DB Details</h2>
<br />
<form action="connect">
<input type='text' name='driver' /> DB Driver<br /> <br />
<input type="text" name="url">DB URL<br /><br /> 
<input type="text" name="dbuser">DB Username<br /><br /> 
<input type="text" name="dbpass">DB Password<br /><br /> 
<input type="submit" value="Connect" />
</form>
</center>
</body>
</html>


Prectice Example:
     App login data base:
         file name-login.java
package com.edu;


import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;

public class LoginServlet extends HttpServlet {
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
res.setContentType("text/HTML");
PrintWriter out = res.getWriter();
String username = req.getParameter("username");
String password = req.getParameter("password");
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String dbuser = "scott";
String dbpass = "tiger";
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
String msg = "<body bgcolor='WHEAT'><h1><center>";
try{
Class.forName(driver);
    con = DriverManager.getConnection(url,dbuser,dbpass);
    String sql = "SELECT *FROM Userdetails WHERE uname = ? AND pass = ?";
    ps = con.prepareStatement(sql);
    ps.setString(1, username);
    ps.setString(2, password);
    
    rs = ps.executeQuery();
    if(rs.next())
    msg+="SUCCESS";
    else
    msg+="FAILURE";
}catch(Exception e){
msg+="ERROR";
}
msg+="</center></h1></body>";
out.print(msg);
}
}
web.xml file:
  <web-app>
         <servlet>
              <servlet-name>LoginServlet</servlet-name>
              <servlet-class>com.edu.LoginServlet</servlet-class>
         </servlet>

         <servlet-mapping>
              <servlet-name>LoginServlet</servlet-name>
              <url-pattern>/login</url-pattern>
        </servlet-mapping>
 </web-app>

Html file:

<!DOCTYPE html>
<html>
<head>
<title>Login Page</title>
</head>

<body bgcolor = 'pink'>
<center>
<h2>Login Page</h2>
<br />
<form action="login">
<input type='text' name='username' /> Username<br /> <br />
<input type="password" name="password"> Password<br />
<br /> <input type="submit" value="Login" />
</form>
</center>
</body>
</html>

Calculator app using sevlet:
Required information:

Java File: 
package com.edu;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;

public class ArithmeticServlet extends HttpServlet {
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
res.setContentType("text/HTML");
PrintWriter out = res.getWriter();
String x = req.getParameter("x");
String y = req.getParameter("y");
String type = req.getParameter("operation");
Integer n1 = Integer.parseInt(x);
Integer n2 = Integer.parseInt(y);
int result = 0;
if(type.equals("ADD"))
result = n1 + n2;
else if(type.equals("SUB"))
result = n1 - n2;
else if(type.equals("MUL"))
result = n1 * n2;
else if(type.equals("DIV"))
result = n1 / n2;
String msg = "<!DOCTYPE html><html><head><title>Result Page</title></head><body>";
msg +="<h1><center>Result: "+result+"</center></h1></body></html>";  
out.println(msg);
RequestDispatcher rd = req.getRequestDispatcher("view.html");
rd.include(req, res);
}
}
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>ArithmeticServlet</servlet-name>
    <servlet-class>com.edu.ArithmeticServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>ArithmeticServlet</servlet-name>
    <url-pattern>/arithmetic</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

Html file:
<!DOCTYPE html>
<html>
<head>
<title>view.html</title>
</head>

<body>
<center>
<h2>Welcome To Online Calculator App</h2>
<h3>
<form action="arithmetic">
<input type='text' name="x" value="0" /> Operand1 <br /> <br /> 
<input
type='text' name="y" value="0" /> Operand2 <br /> <br /> 
<input type='submit' name="operation" value='ADD'> <input type='submit' name="operation" value='SUB'> <input
type='submit' name="operation" value='MUL'> <input type='submit' name="operation" value='DIV'>

</form>
</h3>
</center>
</body>
</html>

Working with GenericServlet:

============================
> GenericServlet is an abstract class

> It will implements Servlet,ServletConfig,Serializable interfaces directly.

> It will extends from Object class directly.

> It will provides default/dummy implementation of Servlet interface provided abstract methods

> GenericServlet has provided implementation for all abstracct methods excepting service() method.

> GenericServlet has also overlaoded init() method.


> It is highly recommended to we should never implement Servlet interface directly, We should create our servlet class by extending from GenericServlet
Program for GenericServlet:
package com.edu;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
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 MyServlet extends GenericServlet {
public void init() throws ServletException {
System.out.println("inside overloading init");   //1
}
public void init(ServletConfig config) throws ServletException {
System.out.println("inside overridding init");  //2
//super.init(config);
}
public void service(ServletRequest req, ServletResponse res){
    System.out.println("inside service: "+getServletConfig());  //3
}
}                    


public abstract class GenericServlet extends Object implements Servlet,ServletConfig,Serializable {
   private transient ServletConfig config = null;
      
   public void init(ServletConfig config){
      this.config = config;
      init();
   }
   
   public void destory(){
   }
   public String getServletInfo(){
      return "";
   }
   public ServletConfig getServletConfig(){
      return config;
   }

   public void init(){

   }
   public String getInitParameter(){

   }
}


 
> Inside child servlet class it is recommended to override zero argument init() method if necessory.
Program for GenericServlet 

package com.edu;

import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class MyServlet2 extends GenericServlet {
public void init() throws ServletException {
System.out.println("inside overloading init"); // 1
}

public void init(ServletConfig config) throws ServletException {
System.out.println("inside overridding init"); // 2
super.init(config);
}

public void service(ServletRequest req, ServletResponse res) {
System.out.println("inside service: " + getServletConfig()); // 3
}
}
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">
  <servlet>
    <servlet-name>Generic</servlet-name>
    <servlet-class>com.edu.MyServlet</servlet-class>
    <init-param>
    <param-name>x</param-name>
    <param-value>10</param-value>
    </init-param>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>Generic2</servlet-name>
    <servlet-class>com.edu.MyServlet2</servlet-class>
  </servlet>


  <servlet-mapping>
    <servlet-name>Generic</servlet-name>
    <url-pattern>/gs</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Generic2</servlet-name>
    <url-pattern>/gs2</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>gs</welcome-file>
  </welcome-file-list>
</web-app>

Working with servlet configuration/initialization parameter:
or Working with ServletConfig interface
============================================================

web.xml
<web-app>
  <servlet>
    <servlet-name>log..........
    <servlet-class>............
    <load-on-startup>..........
    <init-param>
      <param-name>x</param-name>
      <param-value>100</param-name>
    </init-param>
    <init-param>
      <param-name>y</param-name>
      <param-value>200</param-name>
    </init-param>
  </servlet>
  ........
</web-app>
  
What is servlet initialization parameter?
Ans: Any parameter configuration provided inside web.xml file under the <servlet> tag known as servlet configuration parameters.
    
How to configure servlet initialization parameter inside <servlet> tag
ans:
    <init-param>
    <param-name>x</param-name>
    <param-value>10</param-value>
    </init-param>
We can access servlet configuration parameter by using methods ServletConfig interface

Methods of ServletConfig:
========================
getServletName():
> String getServletName();
  > By using this methods we can access logical name of the servlet.

getInitParameter():
> String getInitParameter(String paramname);
  It will returns value of servlet initialization parameter, if parameter doesnt exist then it will returns null.

getInitParameterNames():
   Enumeration getInitParameterNames();
   > it will returns Enumeration object by storing configuration parameter names.

getServletContext():
>  ServletContext getServletContext()
   It will returns ServletContext object.

Whenever ServletConfig object is created?
ans: For every servlet object(configuration) web container will creates one seperate object of ServletConfig implemented class.
> ServletConfig object will be created at the of servlet instantiation


Which type of inormation stored/available inside ServletConfig?
> ServletConfig object is responsible for storing logical name of the servlet and servlet configuration parameter.

In which object contains request/form parameter are stored as server side?
Ans: ServletRequest object


In which object contains servlet configuration parameter are stored at server side?
Ans: ServletConfig object

Programs:

App:-ConfigrationTest:


Servlet1.java:
package com.edu;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class Servlet1 extends GenericServlet {
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
res.setContentType("text/HTML");
PrintWriter out = res.getWriter();
ServletConfig config = getServletConfig();
String name = config.getServletName();
String a = config.getInitParameter("a"); 
String b = config.getInitParameter("b"); 
String c = config.getInitParameter("c"); 
String d = config.getInitParameter("d"); 
String msg = "<h1>";
msg+="<br/>Logical Name: "+name;   
msg+="<br/>param a : "+a;
msg+="<br/>param b : "+b;
msg+="<br/>param c : "+c;
msg+="<br/>param d : "+d;
out.println(msg);
}   
}

Servlet2.java
package com.edu;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
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 Servlet2 extends GenericServlet {
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
res.setContentType("text/HTML");
PrintWriter out = res.getWriter();

ServletConfig config = getServletConfig();
String name = config.getServletName();
String a = config.getInitParameter("a"); 
String b = config.getInitParameter("b");  
String c = config.getInitParameter("c"); 
String d = config.getInitParameter("d"); 

String msg = "<h1>";
msg += "<br/>Logical Name: " + name;
msg += "<br/>param a : " + a;
msg += "<br/>param b : " + b;
msg += "<br/>param c : " + c;
msg += "<br/>param d : " + d;
out.println(msg);
}
}
Web.xml
<?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">
<servlet>
<servlet-name>s1</servlet-name>
<servlet-class>com.edu.Servlet1</servlet-class>
<init-param>
<param-name>a</param-name>
<param-value>1</param-value>
</init-param>
<init-param>
<param-name>b</param-name>
<param-value>2</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>ss1</servlet-name>
<servlet-class>com.edu.Servlet1</servlet-class>
<init-param>
<param-name>b</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>c</param-name>
<param-value>4</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>s2</servlet-name>
<servlet-class>com.edu.Servlet2</servlet-class>
<init-param>
<param-name>a</param-name>
<param-value>10</param-value>
</init-param>
<init-param>
<param-name>b</param-name>
<param-value>20</param-value>
</init-param>
<init-param>
<param-name>c</param-name>
<param-value>30</param-value>
</init-param>
<init-param>
<param-name>d</param-name>
<param-value>40</param-value>
</init-param>
</servlet>


<servlet-mapping>
<servlet-name>s1</servlet-name>
<url-pattern>/u1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ss1</servlet-name>
<url-pattern>/uu1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>s2</servlet-name>
<url-pattern>/u2</url-pattern>
</servlet-mapping> 
</web-app>

html.file
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  
  <body>
    This is my JSP page. <br>
  </body>
</html>

App:LoginServletAnyDataBase

LoginServlet.java
package com.edu;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class LoginServlet extends GenericServlet {
private String driver, url, dbuser, dbpass;

public void init() {
driver = getInitParameter("driver");
url = getInitParameter("url");
dbuser = getInitParameter("dbuser");
dbpass = getInitParameter("dbpassword");
}

public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();

// reading request parameter
String username = req.getParameter("username");
String password = req.getParameter("password");

// 1lacs
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, dbuser, dbpass);

String sql = "SELECT *FROM userdetails WHERE uname=? and pass=?";
ps = con.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);

rs = ps.executeQuery();
if (rs.next())
out.print("<h1><center>SUCCESS</center></h1>");
else
out.print("<h1><center>FAILURE</center></h1>");
con.close();
} catch (Exception e) {
out.print("<h1><center>ERROR</center></h1>");
}
}
}

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">
  <servlet>
    <servlet-name>Login</servlet-name>
    <servlet-class>com.edu.LoginServlet</servlet-class>
    <init-param>
    <param-name>driver</param-name>
    <param-value>oracle.jdbc.driver.OracleDriver</param-value>
    </init-param>
     <init-param>
    <param-name>url</param-name>
    <param-value>jdbc:oracle:thin:@localhost:1521:orcl</param-value>
    </init-param>
     <init-param>
    <param-name>dbuser</param-name>
    <param-value>scott</param-value>
    </init-param>
     <init-param>
    <param-name>dbpassword</param-name>
    <param-value>tiger</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>Login</servlet-name>
    <url-pattern>/login</url-pattern>
  </servlet-mapping>
  
</web-app>

Index.html
<!DOCTYPE html>
<html>
  <head>
    <title>index.html</title>
  </head>
  
  <body>
    
<form action='login'>
<input type='text' name='username'/> Username<br/><br/>
<input type='password' name='password'/> Password<br/><br/>
<input type='submit' value='LOGIN'/>
</form>
  </body>
</html>
 
Program GenericServletDemo
File Myservlet.java
package com.edu;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
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 MyServlet extends GenericServlet {
public void init() throws ServletException {
System.out.println("inside overloading init");   //1
}
public void init(ServletConfig config) throws ServletException {
System.out.println("inside overridding init");  //2
//super.init(config);
}
public void service(ServletRequest req, ServletResponse res){
    System.out.println("inside service: "+getServletConfig());  //3
}
}                    
File MyServlet2.java
package com.edu;

import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class MyServlet2 extends GenericServlet {
public void init() throws ServletException {
System.out.println("inside overloading init"); // 1
}

public void init(ServletConfig config) throws ServletException {
System.out.println("inside overridding init"); // 2
super.init(config);
}

public void service(ServletRequest req, ServletResponse res) {
System.out.println("inside service: " + getServletConfig()); // 3
}
}
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">
  <servlet>
    <servlet-name>Generic</servlet-name>
    <servlet-class>com.edu.MyServlet</servlet-class>
    <init-param>
    <param-name>x</param-name>
    <param-value>10</param-value>
    </init-param>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>Generic2</servlet-name>
    <servlet-class>com.edu.MyServlet2</servlet-class>
  </servlet>


  <servlet-mapping>
    <servlet-name>Generic</servlet-name>
    <url-pattern>/gs</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Generic2</servlet-name>
    <url-pattern>/gs2</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>gs</welcome-file>
  </welcome-file-list>
</web-app>

FileTestConnection.java
package com.edu;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;

public class TestConnectionServlet extends HttpServlet {
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
res.setContentType("text/HTML");
PrintWriter out = res.getWriter();
String driver=req.getParameter("driver");
String url = req.getParameter("url");
String dbuser = req.getParameter("dbuser");
String dbpass = req.getParameter("dbpass");
Connection con = null;
DatabaseMetaData md = null;
String name="",version="";
try{
Class.forName(driver);
con = DriverManager.getConnection(url, dbuser, dbpass);
md = con.getMetaData();
name = md.getDatabaseProductName();
version = md.getDatabaseProductVersion();
}catch(Exception e){
}
String msg = "<br/><h1>Connected to "+name+"<br/>";
msg+="Current version is "+version+"</h1>";
out.print(msg);
}
}

Why init() method?

Comments

Popular posts from this blog

Complete servlet Notes Day-2

Complete notes Servlet Day-1