Thursday, 28 April 2011

15) Simple Project to invalidate session

In this project we:
1)invalidate session using: session.invalidate();   (MySessionInval.java)
2)invalidate session using: session.setMaxInactiveInterval(0);  (MySessionTo.java)


Also in web.xml we added

  <session-config>
       <session-timeout>1 </session-timeout> 
  </session-config>
This "1" is in minutes. This says if the client doesn't makes any request for 1 minute, then kill the session.


To run this project we need following files:
1)web.xml
2)index.jsp
3)MySessionInval.java
4)MySessionTo.java



1)web.xml



<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  
  <servlet>
       <servlet-name>Session Inv</servlet-name>
       <servlet-class>com.jexamples.web.MySessionInval</servlet-class>
  </servlet>
  <servlet-mapping>
       <servlet-name>Session Inv</servlet-name>
       <url-pattern>/SessionInval.do</url-pattern>
  </servlet-mapping>
  <servlet>
       <servlet-name>Session Ex2</servlet-name>
       <servlet-class>com.jexamples.web.MySessionTo</servlet-class>
  </servlet>
  <servlet-mapping>
       <servlet-name>Session Ex2</servlet-name>
       <url-pattern>/SessionSetmax.do</url-pattern>
  </servlet-mapping>
  <session-config>
       <session-timeout>1 </session-timeout> 
  </session-config>
  
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

2)index.jsp



<%@ 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>
    <title>My JSP 'index.jsp' starting page</title>

  </head>
  <body bgcolor="skyblue">
    <h3> <a href="SessionInval.do"> click here to invalidate session using: session.invalidate(); </a></h3>
    <h3> <a href="SessionSetmax.do"> click here to invalidate session using: session.setMaxInactiveInterval(0); </a></h3>
  </body>
</html>

3)MySessionInval.java



package com.jexamples.web;


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


import java.text.SimpleDateFormat;
import java.util.Date;




import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;




public class MySessionInval extends HttpServlet
{
  private static final long serialVersionUID = 1L;


public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
  {   
 long cTime;
 response.setContentType("text/html");
 PrintWriter out = response.getWriter();
 out.println("<body bgcolor='blue'><h1> Session Invalidate Example1<h1> ");
 
 HttpSession session = request.getSession();
 
 cTime = session.getCreationTime();
 
 SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm:ss");
 Date resultdate = new Date(cTime);



 out.println("<h1>you logged at : "+ (sdf.format(resultdate))+"</h1>");
 

 
 
 session.setAttribute("foo", "42");
 session.setAttribute("bar", "420");
 session.invalidate();
 // String foo = (String) session.getAttribute("foo");
 //Note: now u cant use session.getAttribute("foo"); bcoz session is already invalidated
 //Error: java.lang.IllegalStateException: getAttribute: Session already invalidated
 out.println("</body>");
 
  }






}

4)MySessionTo.java



package com.jexamples.web;


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




import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;




public class MySessionTo extends HttpServlet
{
  private static final long serialVersionUID = 1L;


public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
  {
 response.setContentType("text/html");
 PrintWriter out = response.getWriter();
 out.println("<body bgcolor='blue'><h1>Session Invalidate Example2<h1> ");
 
 HttpSession session = request.getSession();
 session.setAttribute("foo", "42");
 session.setMaxInactiveInterval(5); //0 is in seconds, while in web.xml its in minutes
                                    //try using 1/10 and then see o/p
 //String foo = (String) session.getAttribute("foo");
 //Note: now u cant use session.getAttribute("foo"); bcoz session is already invalidated
 //Error: java.lang.IllegalStateException: getAttribute: Session already invalidated
 
 /*
  if(session.isNew())
 {
 out.println("This is a new session");
 }
 else
 {
 out.println("Welcome back");
 }
 */
 //Note: now u cant use session.isNew() bcoz session is already invalidated
 //java.lang.IllegalStateException: isNew: Session already invalidated


 
 out.println("</body>");
 
  }
}


14) Simple Project to check session exist or not and also to return only preexisting session

In this project we:
1)check whether the session already existed or was just created. (MySession.java)
2)ask for ONLY a pre-existing session. (MySessionChk.java)

To run this project we need following files:
1)web.xml
2)index.jsp
3)MySession.java
4)MySessionChk.java



1)web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  
  <servlet>
       <servlet-name>Session Ex1</servlet-name>
       <servlet-class>com.jexamples.web.MySession</servlet-class>
  </servlet>
  <servlet-mapping>
       <servlet-name>Session Ex1</servlet-name>
       <url-pattern>/SessionTest.do</url-pattern>
  </servlet-mapping>
  <servlet>
       <servlet-name>Session Ex2</servlet-name>
       <servlet-class>com.jexamples.web.MySessionChk</servlet-class>
  </servlet>
  <servlet-mapping>
       <servlet-name>Session Ex2</servlet-name>
       <url-pattern>/SessionTestChk.do</url-pattern>
  </servlet-mapping>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


2)index.jsp

<%@ 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>
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  <body bgcolor="skyblue">
    <h3> <a href="SessionTest.do"> click to check whether the session already existed or was just created </a></h3>
    <h3> <a href="SessionTestChk.do"> click here if you want ONLY a pre-existing session </a></h3>
  </body>
</html>


3)MySession.java

package com.jexamples.web;

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


import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class MySession extends HttpServlet
{
  private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
  {
 response.setContentType("text/html");
 PrintWriter out = response.getWriter();
 out.println("<body bgcolor='blue'><h1> WELCOME!!!!<h1> ");
 
 HttpSession session = request.getSession();
 
 String sId;
 if(session.isNew())
 {
 sId = session.getId();
 out.println("<h2>Session Id is = "+sId+"</h2>");
 out.println("<h2> This is a new session </h2>");
 }
 else
 {
 sId = session.getId();
 out.println("<h2>Session Id is = "+sId+"</h2>");
 out.println("<h2>Welcome back</h2>");
 }
 out.println("</body>");
 
  }
}


4)MySessionChk.java

package com.jexamples.web;

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


import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class MySessionChk extends HttpServlet
{
  private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
  {
 response.setContentType("text/html");
 PrintWriter out = response.getWriter();
 out.println("<body bgcolor='blue'><h1> WELCOME!!!!<h1> ");
 
 HttpSession session = request.getSession(false);
 
 String sId;
 if(session==null)
 {   
 out.println("<h2> No session was available</h2>");
 out.println("<h2> making new one .. </h2>");
 session = request.getSession();
 sId = session.getId();
 out.println("<h2>Session Id is = "+sId+"</h2>");
 
 }
 else
 {   out.println("<h2>There was a session</h2>");
 sId = session.getId();
 out.println("<h2>Session Id is = "+sId+"</h2>");
 out.println("<h2>Welcome back</h2>");
 }
 out.println("</body>");
 
  }
}



13) Simple Project using JSP and SERVLET (session attribute used)



  1. Project name: Simple Beer Project using JSP and SERVLET.
  2. Web server: Apache Tomcat 6.0.
Details:  In this project you send beer color choice to servlet (server),  servlet BeerSelect.java calculates price according to the color choosed and it displays config init parameters and it sets session attribute. The session attribute is retrieved by LCost.jsp and result cost and color is displayed by it. We used include method of RequestDispatcher to include the resource (LCost.jsp) in a response. 


To run this project u need these files:
1)web.xml
2)LForm.jsp
3)BeerSelect.java
4)LCost.java



1)web.xml



<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
       <servlet-name>Ch3 Beer</servlet-name>
       <servlet-class>com.jexamples.web.BeerSelect</servlet-class>
       <init-param>
            <param-name>adminEmail</param-name>
            <param-value>likewecare@kingbeer.com</param-value>
       </init-param>
       <init-param>
            <param-name>mainEmail</param-name>
            <param-value>blooper@kingbeer.com</param-value>
       </init-param>     
  </servlet>
  
  <servlet-mapping>
       <servlet-name>Ch3 Beer</servlet-name>
       <url-pattern>/SelectBeer.do</url-pattern>
  </servlet-mapping>
  
  <welcome-file-list>
       <welcome-file>LForm.jsp</welcome-file>
  </welcome-file-list>
</web-app>

2)LForm.jsp



<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
    <title>Beer Choice</title>
    
  </head>
  <br>
  
  <body>
   <h1 align="center"> Beer Selection Page</h1>
   <hr>
   <form name="beerForm" method="post" action="SelectBeer.do">
   <p> Select Beer Characteristics <br>
   Color:
     <select name="color" size="1">
       <option value="yellow"> yellow </option>
       <option value="blue"> blue </option>
       <option value="brown"> brown </option>
       <option value="red"> red </option>
     </select>
     <br>
      <input type="submit" name="submitc" value="Submit Color" />
     </form>"
  </body>
</html>

3)BeerSelect.java



package com.jexamples.web;


import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;


import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;




public class BeerSelect extends HttpServlet
{

private static final long serialVersionUID = 1L;


public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{   float cst=0;
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Beer Selection Advice <br>");
String c = request.getParameter("color");
out.println("<br> Got Beer Color "+c);

out.println("<hr> <h3>access init parameters</h3>");
Enumeration e = getServletConfig().getInitParameterNames();
while(e.hasMoreElements())
{
out.println("<br> param name ="+e.nextElement()+"<br>");
}

out.println("<hr> <hr>main email is "+ getServletConfig().getInitParameter("mainEmail"));
out.println("<br>");
out.println("admin email is "+ getServletConfig().getInitParameter("adminEmail"));

String cl[]={"yellow","blue","brown","red"};
for(int i=0;i<4;i++)
{
 if(c.equals(cl[i]))
 {
 cst=(i+1)*125;
 }
}
//Setting Session attribute
HttpSession session = request.getSession();
session.setAttribute("color", c);
session.setAttribute("cost",String.valueOf(cst));


out.println("<hr> cost="+cst+"<hr>");

RequestDispatcher view = request.getRequestDispatcher("LCost.jsp");
view.include(request,response);
//view.forward(request,response); // try this too n see diff in include n forward

}
}

4)LCost.java



<%@ page language="java" import="java.util.*,javax.servlet.*,javax.servlet.http.*" pageEncoding="ISO-8859-1"%>




<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'WCost.jsp' starting page</title>
    
  </head>
  <%
        HttpSession sess = request.getSession();
        String colr = (String) sess.getAttribute("color");
        String cost = (String) sess.getAttribute("cost");
    %>
  <body bgcolor="<%=colr%>">
    
    <table bgcolor="<%=colr%>">
       <tr>
           <td>Brand Chosen is <%=colr%></td>
           <td>Cost inclusive of all taxes <%=cost%></td>
       </tr>
    </table>
  </body>
</html>