Wednesday, January 25, 2012


Simple AJAX Program

Simple AJAX application using java script and JSP.


Files required.

1. ajax.js
2. mainpage.jsp
3. process.jsp
4. web.xml

Code :


1. ajax.js



var xmlHttp;
function postRequest(url) {


if (window.XMLHttpRequest) { // Mozilla, Safari, ...
//alert("other than IE");
 xmlHttp = new XMLHttpRequest();


} else if (window.ActiveXObject) { // IE
//alert("IE only");
 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");


}


xmlHttp.open('POST', url, true);
xmlHttp.onreadystatechange = function() {

if (xmlHttp.readyState == 4) {
updatepage(xmlHttp.responseText);


}


}


xmlHttp.send(url);


}




function updatepage(str){


document.getElementById("result").innerHTML = "<font color='green' size='15'>" + str + "</font>";


}


function showCurrentTime(){


var url="process.jsp";
postRequest(url);


}


2. mainpage.jsp



<%@ page import="java.util.*" %>
<html>
<head>


<title>Ajax Example</title>
<script type="text/javascript" src="ajax.js"> </script>
</head>


<body>


<h1 align="center"><font color="#000080">Ajax Example</font></h1>
<%
out.println(new Date());
%>
<p><font color="#000080">&nbsp;This very simple Ajax Example retrieves the
current date and time from server and shows on the form. To view the current
date and time click on the following button.</font></p>


<form name="f1">


<p align="center"><font color="#000080">&nbsp;<input value=" Show Time " 
type="button" onclick='JavaScript:showCurrentTime()' name="showdate"></font></p>
<div id="result" align="center"></div>


</form>
<div id=result></div>
</body>


</html>




3. process.jsp



<%@ page import="java.util.*" %>
<%
out.println(new Date());
%>


4. web.xml



<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>AjaxApp1</display-name>
  
  <welcome-file-list>
      <welcome-file>mainpage.jsp</welcome-file>
    
  </welcome-file-list>
</web-app>

Simple AJAX program with struts 1.2

Files required :

1. ajax.js
2. search.jsp
3. web.xml
4. struts-config.xml
5. SearchForm.java
6. SearchAction.java

Code for running the program :


1. ajax.js



var request;

function createObject() {
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
//alert("other than IE");
request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
//alert("IE only");
request = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function search() {
createObject();
var name=window.document.getElementById("n").value;
var url="search.do?name="+name;
request.open('GET',url,true);
request.send(url);
request.onreadystatechange= callback();
}
function callback() {
if (request.readyState == 4) {
displayInfo(request.responseText);
}
}
function displayInfo(str) {
/*This function is only for testing, not working*/
}

2. search.jsp



<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="java.util.*" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Search Page</title>
<script type="text/javascript" src="ajax.js">
</script>
</head>
<body>
<table>
<form action="search.do">
<tr>
<td>Enter name Here : </td>
<td><input id="n" type="test" name="name" onkeyup="search()"/></td>
</tr>
<div id="results"></div>
</form>
</table>
</body>
</html>


3. web.xml



<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name />
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>search.jsp</welcome-file>
  </welcome-file-list>
  
</web-app>



4. struts-config.xml



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">


<struts-config>
<form-beans>
<form-bean name="searchForm" type="com.search.SerachForm"></form-bean>
</form-beans>
  <action-mappings>
  <action path="/search" name="searchForm" type="com.search.SearchAction">
  <forward name="success" path="/search.jsp"></forward>
  </action>
  </action-mappings>
</struts-config>


5. SearchForm.java



package com.search;


import org.apache.struts.action.ActionForm;


public class SerachForm extends ActionForm {
private String name;


public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}


6. SearchAction.java



package com.search;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;


public class SearchAction extends Action{
/*
 * author : Chandrasekhara Kota
 * Date   : 03-Dec-2011
 * Email  : chandunaidu.kota@gmail.com
 * */

public ActionForward execute(ActionMapping am, ActionForm af, HttpServletRequest req, HttpServletResponse res)throws Exception
{
System.out.println("---------------inside the action------------------"+req.getParameter("name"));

return am.findForward("success");
}
}

Monday, January 23, 2012

static variable

/*
static most powerful and beautiful concept  in java .if use static, jvm will load at the time of class load.
 if we use static for a variable it treated as class level variable for every new object will not create new variable existing only used.
*/

public class Static_Variable
{
static String collegename="ghandi college";
public void method1()
{
//incomplete
}
}

static NOT applicable with modifiers

/*
RULE: static keyword not applicable with the
1.final
2. abstract
and class

*/

static applicable

/*
RULE: static keyword only applicable for variables , methods and block but not for classes
*/

public class Static_Demo
{
static int x=10;
static
{
System.out.println(x);
}
public static void main(String arg[])
{
System.out.println("static main method")
}
}

public class

/*
RULE: if we declared a class as public, we can access that class from any where
*/

public class Public_Class
{

}

protected class

/*
RULE: a class declared as protected, than it can be visible or access in the child classes of the same package and out side of the child classes
*/

protected class Protected_Class
{

}

default class

/*
RULE: if not declared a with public or protected, it treated as default class. a default class can access with in the package of the child classes but not out side of  the package.
*/

package com.default.pack;
class Default_Class
{

}


package com.default.pack;
import com.default.pack;
class Default_Class_Use
{
Default_Class dc=new Default_Class();
}


//

package com.other.pack;
import com.default.pack;
class Default_Class_Use
{
Default_Class dc=new Default_Class(); //compile time error
}

abstract class

/*
RULE: we can declare a class as abstract, if we declare a class as abstract that means all the methods in that class need not be abstract. that abstract class may be not with abstract methods or normal methods 
*/

public abstract class Abstract_Class
{
abstract method1();
abstract method2();
public void method3()
{
System.out.println("normal method");
}
}


Demo 2:

public abstract class Empty_Abstract
{

}

in final class

/*
RULE: if we declared a class as final that means in that class all the methods are by default final but variables are not final
And it can not support the inheritance concept. and run time polymorphism But it can support the static polymorphism
*/

public final class Final_Class
{
int x=10;
public void method1()
{
System.out.println(x);
x=20;
System.out.println(x);
}
public void method1(int x)
{
this.x=x;
System.out.println(x);
}
}
class Demo extends Final_Class
{
public void method1()
{
System.out.println("child");
}
}

class can applicable with modifiers


/*
RULE: class can applicable with the following modifiers are
1.public
2.final
3.abstract


*/

class canNOT applicable modifiers are

/*
RULE: class canNOT  applicable with the following modifiers are
1.private
2.protected
3.strictfp (only for methods)
4.synchronized (only for methods/blocks)
5.native (only for methods)
6.volatile (only for variables)
7. transient (only for variables)
8.static (only for methods/variables/blocks)


*/

class

/*
RULE : class is keyword by using class keyword we can achieve the encapsulation mechanism
in oops.
Definition: class is an way of creating user defined data types.
*/

class Class_Structure
{
static variables;
.
.
 instance variables;
.
.
{
//instance block
}
static
{
//static block
}
methods()
{
}
}

final NOT applicable 4


/*
RULE: final key word not applicable for the following modifiers only
1.abstract
2.
3

 in complete
*/

final applicable 4 only

/*
RULE: final key word applicable for the following modifiers only
1.public
2.private
3.protected
4.<<default>>
5.native
6.static
7.
 in complete
*/

final variable

/*
RULE: we can declare a variable as final and not necessary declare a variable until it will be use.
we can initialize the variable at the time of use it.
*/

public class Final_Variable
{
public static void main(String ar[])
{
final int x;
System.out.println("hello");   //no error its legal
x=10;
System.out.println(x);
}
}

final instance variable

/*
RULE:  we can declare instance variable as final but jvm wont provide any default values for instance variable, programmer have provide the values for final instance variables .
we can provide values in three ways
1. at the time of declaring the variable.
2. in constructor.
3.in instance block
*/

public class Final_Instance_Variable
{
final double d;
public static void main(String ar[])
{
System.out.println(x);     // compile time error
}
}

Way 1 : initialization value for final instance variable


public class Final_Instance_Variable
{
final double d=20.3;
public static void main(String ar[])
{
System.out.println(x);
}
}


Way 2 : initialization value for final instance variable


public class Final_Instance_Variable
{
final double d;
public Final_Instance_Variable()
{
d=20.3;
}
public static void main(String ar[])
{
System.out.println(x);
}
}



Way 3 : initialization value for final instance variable


public class Final_Instance_Variable
{
final double d;
{
d=20.3;
}
public static void main(String ar[])
{
System.out.println(x);
}
}



Final Static Variable

/*
RULE: we can declare a static variable as final , but jvm not provide any default values for final static variables
we have to provide before class load. we can provide in two ways in static block or by the time of declaring the variable.
*/

public class Final_Static_Variable
{
final static int x;
public static void main(String ar[])
{
System.out.println(x);   //error
}
}

Demo For Initialization for static final variable.(way 1)

 public class Final_Static_Variable
{
final static int x=10;
public static void main(String ar[])
{
System.out.println(x);   //error
}
}


Demo For Initialization for static final variable.(way 2)

 public class Final_Static_Variable
{
final static int x;
static{
x=10;
}
public static void main(String ar[])
{
System.out.println(x);   //error
}
}

abstract applicable for what

/*
RULE: abstract key word only applicable for CLASSES and METHODS not for variables
*/
public abstract class AbstractDemo
{
abstract int x;                             // illegal
abstract public void method1();
abstract public int method2();
}

Monday, October 3, 2011

servlet API


Servlet API:

To develop servlets we need SERVLET API support. We have 2 Packages for Developing Servlet.
  1. javax.servlet
  2. javax.servlet.http

servlet: 

  this interface provides life cycle methods for our servlets. The life cycle methods are
  1.   init(ServletConfig)
  2.   service(ServletRequest,ServletResponse)
  3.     destroy()

  in our Servlet class we override these methods. Servlet engine calls these methods implicity.servlet interface           has 2 more methods, which are non life cycle methods


  1.               getServletConfig():- it return ServletConfig object
  2.               getServletInfo():- it returns a string that gives servlet information

GenericServlet:-

This is an abstract class. This class implements servlet interface. It defined init(ServletConfig) and destroy() methods of the servlet interface. The third life cycle method service() is not defined in the GenericServlet class. This class also implements the ServletConfig interface. Therefore all the methods of ServletConfig interface can be called directly on the servlet interface itself. GenericServlet class defines one zero argument init method. Parameterized init method defined by the GenericServlet calls this zero argument init method. Therefore servlet developers can override only zero argument method in their servlet classes.

HttpServlet:-

                This is an abstract  class. It is a sub class of GenericServlet class. Servlet developers always defines their servlet class by extending this class. service method of the GenericServlet is implemented in this class. in addition to the public service method ,HttpServlet class has defined the following methods.

  1.                 protected void service(HttpServletRequest, HttpServletResponse)
  2.                 protected void doGet(HttpServletRequest, HttpServletResponse)
  3.                 protected void doPost(HttpServletRequest, HttpServletResponse)
servlet engine calls only public service method, within the public service method protected service method is called. Within the protected service method of the HttpServlet class , either doGet or doPost method is called depending upon thetype of request (GET or  Post) coming from the client. In our servlet class we always overrides either doGet() or doPost() .we never overrides the public service() or protected service().

  
ServletConfig:-

                This is an interface in java.servlet package.  Servlet engine writes a sub class of  ServletConfig interface and creates its instance. But we call it as ServletConfig object only.

                Methods:

  1.  String getInitParameter(String): this method is used to get init param value by supplying param name as input.
  2. ServletContext getServletContext() :-when we will call this method it returns the ServletContext object.              

 ServletContext:-

                This is an interface in java.servlet package.  Servlet engine writes a sub class of  ServletContext interface and creates its instance. But we call it as ServletContext object only. In the servlet programming this object is very widely used. For a servlet this object is directly available. We call a method in servlet to get the ServletContext object.

ServletContext sc=getServletContext();

In the above statement we are calling getServletContext() on the servlet interface. But internally it is called on the ServletConfig object.
            
    Methods:

  1. getInitParameter() :- it takes context param name and returns the corresponding value.
  2. setAttribute() : -stores a data item in context scope with name ,value pair.
  3. getAttribute() :-takes the attribute name and returns the value.
  4.  removeAttribute() :-delete the data item from the context scope.
  5. getRequestDispatcher() :-this method returns the RequestDispacher object.
  6. getServerInfo() :-it returns the web container information as a string .
  7. log() :-used for store the information into web container log files.

HttpServletRequest:

This is an interface in javax.servlet.http package. it as sub interface of ServletRequest interface. Servlet engine writes a sub class of HttpServletRequest interface and creates its instance. But we call it as HttpServletRequest object only.

                Methods:

  1.  getParameter() :- it takes html control name and returns the user input
  2.  setAttribute() : -stores a data item in request scope with name ,value pair.
  3. getAttribute() :-takes the attribute name and returns the value.
  4. removeAttribute() :-delete the data item from the request scope.
  5. getRequestDispatcher() :-this method returns the RequestDispacher object.
  6.  getCookies() :-it returns an array of Cookies coming from the browser.
  7. getSession(() :-returns the HttpSession Object which is unique for the client.
  8. getQueryString() :-Returns the query string that is contained in the request URL after the path.
  9. getHeaderNames() :-Returns an enumeration of all the header names this request contains.
  10. getHeader() :-it takes the header name and returns the header value.

HttpServletResponse:

This is an interface in javax.servlet.http package. it as sub interface of ServletResponse interface. Servlet engine writes a sub class of HttpServletResponse interface and creates its instance. But we call it as HttpServletResponse object only.
          
      Methods:
  1.  getWriter() :-it returns the PrinterWriter object.
  2.  setContentType() :-this method set the MIME type for the response.
  3. getOutputStream() :-returns the OutputStream object.
  4.  addCookie() :-it addsa cookie to the response header.
  5. encodeURL() :- this method is used to URL rewriting .
  6. sendRedirect() :-sends a temporary redirect response to the client.
  7.  sendError() :-sends an error response to the client using error status.
  8. setHeader() :- sets a response header with the given name and value.
  9.  addHeader() :-adds a response header with the given name and value.

RequestDispacher:-
         
       It is an interface. Servlet container writers a sub class for this interface. Servlet engine produces this sub class object when we call getRequestDispacher() on the request or context object. But we say that object as RequestDispacher object only.

                Methods:
  1.   forward()  :- it forwards the control from the servlet to another web resource.
  2.  Include() :-it includes the response of other web resource into the current servlet response.


Directory Structure:
                Root Directory
                                WEB-INF
                                                classes
                                                lib
                                                src
                                                web.xml
                                Resource files

Root directory name should be anything usually it is name of the project/application
classes directory used to keep the java class file(.class files)
lib directory contains the jar file(.jar files)
src or source directory for java files(.java)
web.xml file is call deployment descriptor file
the above files and directories are under “WEB-INF” directory
resource contains the image and html or jsp file …….etc.

Example Project