Date post: | 23-Oct-2014 |
Category: |
Documents |
Upload: | soumya-burra |
View: | 6 times |
Download: | 3 times |
Social Networking Site for Social Responsibility
A Project Report submitted in partial fulfillment of the degree of the Bachelor of
Technology in Jayamukhi Institute of Technological and Sciences
By
SUNCHU MAMATHA 08C41A0568
THANDRA YESULATHA 08C41A05B7
MIRYALKAR KRISHNAKANNAIAH 08C41A05B6
PULI KIRAN 08C41A05
Under the Guidance of
T.RAMAKRISHNA
Department of INFORMATION TECHNOLOGY
Jayamukhi institute of technological Sciences
Narsampet, warangal-506 332
(Affiliated to JNTUH, Accredited by NBA)
MARCH 2012
Jayamukhi institute of technological Sciences
Narsampet, warangal – 506 332
(Affiliated to JNTUH, Accredited by NBA)
CERTIFICATE
This is to certify that the Project Report entitled “Social Networking Site for Social
Responsibility” is a bonafide work of the students SUNCHU MAMATHA, POLA
APARNA, ,MIRYALKAR KRISHNAKANNAIAH, PULI KIRAN bearing Roll
No’s 08C41A0568, 08C41A05B7, 08C41A05B6, 08C41A1298 submitted in partial
fulfillment of the requirements for the award of the degree of Bachelor of
Technology in IT during the academic year 2011-12.
Guide Head of the Department
Principal
ACKNOWLEDGEMENT
At first we express sincere thanks to Prof. G.srihari, principal,
JAYAMUKHI INSTITUTE OF TECHNOLOGICAL SCIENCES for providing
his valuable suggestions and advices to complete our project.
We are extremely grateful to Dr. JAYADEV GYANI, Head of the
Department (C.S.E) for extending his cooperation and guiding us to proceed with our
project. We are indebted to extend our heartfelt thanks to his, for the freedom of our
thought and action we enjoyed during this project work.
We extend our thanks to our guide T.RAMAKRISHNA for the guidance and
assistance for us provided in completing our project.
We express our heart full gratitude, to all the faculty members of computer science
engineering department, JITS for their ethical support and to one and all who have
directly or indirectly helped us in completing this work successfully.
Finally I would thank all my friends for their cooperation in completion of our
project.
SUNCHU MAMATHA
POLA APARNA
,IRYALKAR KRISHNAKANNAIAH
PULI KIRAN
ABSTRACT
1. Title of the project : SOCIAL NETWORKING SITE FOR SOCIAL
RESPONSIBILITY
SOCIAL NETWORKING SYSTEM
Our project social networking site for social responsibility is a dream being
developed. We are in a fast paced world today; Social Networking sites are
forming a big part of our daily lives. We also do stuff here like announcements of
reunions, events or anything under the sun. Some also use to join contest, promote
sites and even sell products. While for most, these sites serve as a way to gain
more friends, acquaintances and networks. But while this is becoming a regular
thing for us, we should always think that what we post reflects who we are. We
should be held responsible for the things we utter and things we tell since what we
type in and post is going to be seen not just by our friends but the entire country
and even the whole world.
Often times we turn to these sites to share emotions much like traffic rules,
public hygiene, aversion to bribery etc. The purpose of introduction is to provide a
conceptual, historical, and scholarly context of how a social networking system is
the most powerful media in the present era and to provide a truly Indian social-
networking website that is to promote social responsibility like traffic rules, public
hygiene, aversion to bribery etc.
CONTENTS
1. Introduction 01
1. Requirements specifications2. Use case diagram
3. References
4. Technologies
2. Design 08
2.1 Activity diagram
2.2 Database schema design
2.3 Sequence diagrams
2.4 Collaboration diagrams
2.5 Class diagrams
2.6 E-R diagrams
3. Module Description 34
4. Testing including test cases and results 41
5. User manual including snapshots 51
6. Conclusion 60
7. Future scope 62
8. Bibliography 62
1. Introduction
We are in a fast paced world today; Social Networking sites are forming a big part of
our daily lives. There's Face book, Twitter, MySpace, Blogger, Word press, multiply
and a whole lot of other networking sites.
We also do stuff here like announcements of reunions, events or anything under the
sun. Some also use to join contest, promote sites and even sell products. While for
most, these sites serve as a way to gain more friends, acquaintances and networks.
But while this is becoming a regular thing for us, we should always think that what
we post reflects who we are. We should be held responsible for the things we utter
and things we tell since what we type in and post is Gonne be seen not just by our
friends but the entire country and even the whole world.
Often times we turn to these sites to share emotions much like traffic rules, public
hygiene, aversion to bribery etc.
There are hundreds of SNSs, with various technological affordances, supporting a
wide range of interests and practices. Most sites support the maintenance of pre-
existing social networks, but others help strangers connect based on shared interests,
political views, or activities. Some sites cater to diverse audiences, while others attract
people based on common language or shared racial, sexual, religious, or nationality-
based identities.
Sites also vary in the extent to which they incorporate new information and
communication tools, such as mobile connectivity, blogging, and photo/video-sharing.
The purpose of this introduction is to provide a conceptual, historical, and scholarly
context of how a social networking system is the most powerful media in the present
era and to provide a truly Indian social-networking website that is to promote social
responsibility like traffic rules, public hygiene, aversion to bribery etc.
1. Requirements Specification
Software Interface
ROSE/RSA / Web Sphere Modeler
Eclipse/ RAD / Lotus Forms Designer / Port let Factory
Web Sphere Portal/ WAS/ WAS CE / WPS
DB2 Express – ‘C’ or DB2 UDB
Tivoli CDP/TSM / Tivoli Directory Server Linux will be the preferred OS
Hardware Interface
Client Side
Processor RAM Disk Space
Internet Explorer
6.0
Pentium IV at 500 MHz
256 MB 1 GB
Server Side
Web Sphere Application Server
Pentium core2duo 2.2 GHz
1 GB 2 GB
DB 2 Pentium core2duo 2.2 GHz
1 GB 1 GB (Excluding data size)
Product Functionalities
1. Authorization: Entire authority of the system is of the Administrator.
2. User authentication: A newly created user is authenticated against the
given email Address.
3. User form: The system offers a simple, attractive, user friendly user
interface easily understandable by the users of the system. Entries of the
user form are under the authority of the administrator only. Some of the
entries in the form are mandatory in order to authenticate the user,
describe the user thoroughly etc.
4. Administrator Functions:o Authentication of the users after registration.
o Mails to the users regarding the approval as a registered user or
disapproval mentioning the appropriate reasons.
o Accepts the concerns from users.
o Receives various proof for a respective concerns from users.
o Posts various News feeds regarding social responsibilities.
o Updating the account details on the request of the users.
o Answering the user queries.
o Notification to the end users regarding proposals.
o Mentioning the security measures for the system’s safety.
o Deleting an account/user from the system’s databases on request of the
user.
5) Website Information:
Displaying History: Mentions the history about the system such as founder of
the system, number of users using the system.
Comments: Mentions the comments on the system by the existing users and
their experiences of using the system. It does not include the FAQs.
Contact details: Contact details about personnel related to the system for
personal or vocal assistance.
Advertisements: Website will contain advertisements related to all various
products present for auctioning.
Other Non-functional Requirements Scalability: System should be able to handle a number of users. For e.g.
handling around thousand users at the same time.
Usability: Simple user interfaces that a layman can understand.
Speed: Speed of the system should be responsive i.e. response to a particular
action should be available in short period of time. For e.g. on registering as a
new user, the notification about the approval is sent immediately to the
respective user through email. Updating the account takes few seconds for the
changes if the entry is not starred.
Basic features
Provides a common platform where people of India can Voice out violations,
injustice, inhumanity, corruption happening in their vicinity.
Allows Endorsements of someone else’s concern and accepts augment with
more proofs, details etc.
Provides online debate or discussion on certain topics of broad applicability.
Highly dynamic, with minimal static content as framework and maximum
content created by site participants.
Being dependent highly on dynamic content collaborated by users, the site has
the features to auto analyze topics, group discussions, auto recommend threads
based on searches etc.
Here is the ability to tag social discipline violators using their identity.
A highly Authenticity defined website for adding users. Where one cannot be
allowed to have more than one profile.
Additional features
Secure access of confidential data (user’s details). SSL can be used.
24 X 7 availability.
Better component design to get better performance at peak time.
Flexible service based architecture will be highly desirable for future
extension.
2. Use case Diagram:
A Use case is a description of set of sequence of actions. Graphically it is rendered as
an ellipse with solid line including only its name. Use case diagram is a behavioral
diagram that shows a set of use cases and actors and their relationship. It is an
association between the use cases and actors. An actor represents a real-world object.
3. References
IEEE SRS format
Problem Definition (Provided by IBM)
4. Technologies to used
IBM RAD
DB2
UML
J2EE
e-Forms
Web 2.0
Web-services
2. Design
2.1 Activity Diagrams:
Name of the use case: New user registration.
Description: Allows user to register for new account.
Pre-conditions: 1) should not have registered earlier.
2) Should have a valid e-mail ID
Normal flow of events:
Access new user registration form.
Furnish the details.
Post Condition: User should remember the username and password that were
furnished in the registration form.
Name of the use case: User account verification.
Description: The username & password entered by the user are accessed and verified.
If they are found to be valid then the user is allowed to access his/her account.
Pre condition: The user should be a valid one and must have a username and
password.
Normal flow of events:
User (s) logs in.
Verification is done.
Access the account.
Alternate flow of events: If the validation is found invalid then intimates the user to
enter a valid username and password.
Post condition: Logout successfully.
Name of the use case: Updating user’s profile.
Description: Allows the user to update respective portions of the profile.
Pre condition: User should have already been registered & should have a valid
account.
Normal flow of events:
Login.
Modify required details.
Submit.
Alternate flow of events: None
Post condition: User’s profile is updated.
Name of the use case: Validating user’s registrations by administrator.
Description: Allows the administrator to verify & validate the registrations of user.
Pre condition: If the user is further interested in an account.
Normal flow of events:
Administrator logs in.
Verifies the profile of user.
Maintains the profile of the user in database.
Issues a user account to the respective user.
Alternate flow of events: If the user is not valid then intimate him/her with the
invalid details entered.
Post condition: An account is created on the name of the user.
Name of the use case: Discussion - online chatting.
Description: Allows the users to communicate with each other.
Pre condition: All the users should have a valid account.
Normal flow of events:
Login
Enter the message.
Submit
Alternate flow of events: None
Post condition: Message is displayed in the blog.
Name of the use case: Publishing the concern
Description: Allows the users to user to voice out violations, injustice, inhumanity,
corruption happening in their vicinity.
Pre condition: All the users should have a valid account.
Normal flow of events:
Login
Enter the concern.
Submit
Alternate flow of events: None
Post condition: concern is submitted.
Name of the use case: Augmentation of the concern
Description: Allows the users to user to augment with more proofs like photographs,
videos, documents etc. of the respective concern.
Pre condition: All the users should have a valid account and a posted concern.
Normal flow of events:
Login
Enter the proofs.
Submit
Alternate flow of events: None
Post condition: Augmented proof for the respective concern.
2.2 Database Schema Design
REGISTRATION TABLE
LOGIN TABLE
EVENTS_TABLE
TOPIC_TABLE:
RATING_TABLE:
POLICY_TABLE:
TOPIC DISCUSSION_TABLE:
2.3 Sequence Diagrams:
Sequence diagram and collaboration diagram are called INTERACTION
DIAGRAMS. An interaction diagram shows an interaction, consisting of set of
objects and their relationship including the messages that may be dispatched among
them.
Sequence diagram for Admininstrator:
14. Video management Add/Delete Update
8Adds Posted to All users
19. Add/Delete/Update users
15FeedBack Forms
Sequence diagram for User:
14. Add complaints/Messages
19. Videos, photos upload /Post proofs
2.4 Collaboration Diagram:
A collaboration diagram is an introduction diagram that emphasizes the structural
organization of the objects that send and receive messages. Graphically a
collaboration diagram is a collection of vertices and arcs.
Collaboration Diagram for Admin:
Collaboration Diagram for User:
2.5 Class Diagrams:
Class diagram for Admin:
Class diagram for user:
2.6 E-R diagram
Foreign key
Primary key
3. Modules Description
Administrator : An Admin can login in to the Admin Home Page by Typing
Admin Username and Password, and he can create, update and delete a Users
accounts.
He can manage the website and give new Queries. And he can search for
anything from anywhere and can post the query and he can modify the entire
website as well.
NGO organizations. Reports various social flaws and voices out violations,
injustice, inhumanity, corruption happening in the society.
Government bodies: Resolves the concerns published by the users and
provides remedies for the social flaws.
User: Responsible for registering their nominations online. Need to update
their profile in case of any changes. Should voice out violations, injustice,
inhumanity, corruption happening in the vicinity.
Every user should be comfortable of working with computer and net browsing. He/she
must have basic knowledge of English too.
Sample code for registration:
<%@ include file= "Header.jsp" %>
<head>
<script language="javascript">
function validateForm(formObj)
{
if(formObj.fname.value.length==0)
{
alert("Please enter First Name...!");
formObj.fname.focus();
return false;
}
if(formObj.lname.value.length==0)
{
alert("Please enter Last Name...!");
formObj.lname.focus();
return false;
}
if(formObj.name.value.length==0)
{
alert("Please enter User Name...!");
formObj.name.focus();
return false;
}
if(formObj.pwd.value.length==0)
{
alert("Please enter PassWord...!");
formObj.pwd.focus();
return false;
}
if(formObj.cpwd.value.length==0)
{
alert("Please Enter confirm Password...!");
formObj.cpwd.focus();
return false;
}
if(formObj.pwd.value != formObj.cpwd.value)
{
alert("Both passwords Should be equal!");
formObj.pwd.focus();
return false;
}
if(formObj.email.value.length==0)
{
alert("Enter Email ID .....!");
formObj.email.focus();
return false;
}
if(formObj.phno.value.length==0)
{
alert("Please enter MobileNumber...!");
formObj.phno.focus();
return false;
}
if(formObj.city.value.length==0)
{
alert("Please enter City...!");
formObj.city.focus();
return false;
}
if(formObj.state.value.length==0)
{
alert("Please enter State...!");
formObj.state.focus();
return false;
}
if(formObj.country.value.length==0)
{
alert("Please enter Country...!");
formObj.country.focus();
return false;
}
if(formObj.question.value.length==0)
{
alert("Please enter Security Question...!");
formObj.question.focus();
return false;
}
if(formObj.ans.value.length==0)
{
alert("Please enter Answer...!");
formObj.ans.focus();
return false;
}
}
</script>
<script type="text/javascript">
function check(value){
xmlHttp=GetXmlHttpObject()
var url="checkajax.jsp";
url=url+"?name="+value;
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged(){
if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
var showdata = xmlHttp.responseText;
document.getElementById("mydiv").innerHTML= showdata;
}
}
function GetXmlHttpObject(){
var xmlHttp=null;
try{
xmlHttp=new XMLHttpRequest();
}
catch (e) {
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
</script>
</head>
<body>
<form method = "post" action = "Faction.jsp" name = "formobj"
onsubmit="return validateForm(this);"><center>
<h3 align ="center">
<font color = "red">WELCOME TO REGISTRATION PAGE</font></h3>
<p>All (<font color = "red">*</font>)are mandatory</p>
<table>
<tr><td>First Name</td>
<td><input type = "text" name = "fname">
<sup><font color = "red">*</font></sup>
</td></tr><tr></tr><tr></tr>
<tr><td>Last Name</td>
<td><input type = "text" name = "lname">
<sup><font color = "red">*</font></sup>
</td></tr><tr></tr>
<tr><td>User Name</td>
<td><input type = "text" name = "name">
<sup><font color = "red">*(It will shown to all users)</font></sup>
</td></tr><tr></tr>
<tr><td>Password</td>
<td><input type="password" name = "pwd">
<sup><font color = "red">*</font></sup>
</td></tr><tr></tr>
<tr><td>Confirm Password</td>
<td><input type="password" name="cpwd">
<sup><font color = "red">*</font></sup>
</td></tr><tr></tr>
<tr><td>Email Id</td>
<td><input type = "text" name = "email"
onkeyup="check(this.value);"><font color="red"><div
id="mydiv"></div></font>
<sup><font color = "red">*(By using this only you can
login)</font></sup>
</td></tr><tr></tr><tr></tr>
<tr><td>DOB</td><td>
<select name="day" STYLE="width:40px">
<option>1</option> <option>2</option>
<option>3</option> <option>4</option>
<option>5</option> <option>6</option>
<option>7</option> <option>8</option>
<option>9</option> <option>10</option>
<option>11</option> <option>12</option>
<option>13</option> <option>14</option>
<option>15</option> <option>16</option>
<option>17</option> <option>18</option>
<option>19</option> <option>20</option>
<option>21</option> <option>22</option>
<option>23</option> <option>24</option>
<option>25</option> <option>26</option>
<option>27</option> <option>28</option>
<option>29</option> <option>30</option>
<option>31</option>
</select>
<select name="month" STYLE="width:50px">
<option>JAN</option> <option>FEB</option>
<option>MAR</option> <option>APR</option>
<option>MAY</option> <option>JUN</option>
<option>JUL</option> <option>AUG</option>
<option>SEP</option> <option>OCT</option>
<option>NOV</option> <option>DEC</option>
</select>
<select name="year" STYLE="width:50px">
<option>2005</option><option>2004</option>
<option>2003</option><option>2002</option>
<option>2001</option><option>2000</option>
<option>1999</option><option>1998</option>
<option>1997</option><option>1996</option>
<option>1995</option><option>1994</option>
<option>1993</option><option>1992</option>
<option>1991</option><option>1990</option>
<option>1989</option><option>1988</option>
<option>1987</option><option>1986</option>
<option>1985</option><option>1984</option>
<option>1983</option><option>1982</option>
<option>1981</option><option>1980</option>
<option>1979</option><option>1978</option>
<option>1977</option><option>1976</option>
<option>1975</option><option>1974</option>
<option>1973</option><option>1972</option>
<option>1971</option><option>1970</option>
<option>1969</option><option>1968</option>
<option>1967</option><option>1966</option>
<option>1965</option><option>1964</option>
<option>1963</option><option>1962</option>
<option>1961</option><option>1960</option>
<option>1959</option><option>1958</option>
<option>1957</option><option>1956</option>
<option>1955</option><option>1954</option>
<option>1953</option><option>1952</option>
<option>1951</option><option>1950</option>
</select>
</td></tr><tr></tr>
<tr><td>Sex</td><td>
<input type = "radio" name= "sex" value="male" checked>Male
<input type = "radio" name = "sex" value="female">Female
</td></tr><tr></tr>
<tr><td>Phone No</td>
<td><input type="text" name="phno">
<sup><font color="red">*</font></sup></td></tr>
<tr></tr>
<tr><td>City</td>
<td><input type="text" name="city">
<sup><font color = "red">*</font></sup>
</td></tr><tr></tr>
<tr><td>State</td>
<td><input type="text" name="state">
<sup><font color = "red">*</font></sup>
</td></tr><tr></tr>
<tr><td>Country</td>
<td><input type="text" name="country">
<sup><font color = "red">*</font></sup>
</td></tr><tr></tr>
<tr><td>Secrete Question</td>
<td><input type="text" name="question">
<sup><font color = "red">*</font></sup>
</td></tr><tr></tr>
<tr><td>Answer</td>
<td><input type="text" name="ans">
<sup><font color = "red">*</font></sup>
</td></tr><tr></tr>
<tr>
<td align = "center">
<input type = "submit" value = "Submit" name = "B1"></td>
<td>
<input type = "reset" value = "Reset" name = "B1"></td></tr>
</table></center>
</form>
</body>
</html>
<%@ include file= "Footer.jsp" %>
Sample code for login page :
<%@ page import = "java.sql.*" %>
<%@ include file="DB.jsp"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="container">
<div id="header">
<div id="logo"><span class="orange"><h1><marquee behavior="alternate">COLLECTIVE BEHAVIOR</h1></marquee></span> </div>
<div id="menu">
<ul>
<li><a href="" class="active">Home</a></li>
<li><a href="createvent.jsp">CreateEvent</a></li>
<li><a href="viewtopic.jsp">ViewEvent</a></li>
<li><a href="Flogout.jsp">Logout</a></li>
<li><a href="active.jsp">Who is Online</a></li>
</ul>
</div>
</div>
<div id="main">
<div id="content">
<div id="head_image">
<div id="slogan"><strong>Come and Share Your Thougts , Feelings and Emotions </strong> </div>
</div>
<%
String loginName = session.getAttribute("username").toString();
%><input type="hidden" name="loginname" value=<%=loginName%>>
<h1>welcome to Dear: <%=loginName%><i></i></h1>
<%
Statement st = con.createStatement();
Statement st1=con.createStatement();
ResultSet rs1=st1.executeQuery("select * from login ");
/*String sql = "SELECT * FROM registration WHERE username!='"+uname+"'";
*/
String sql="select * from registration";
ResultSet rs = st.executeQuery(sql);
%><table><h1><tr><td>Username</h1></td></tr>
<%
String n,ln,s;
int i=1;
while(rs.next())
{ n=rs.getString(3);
if(rs1.next())
{ ln=rs1.getString(1);
s=rs1.getString(4);
if(ln.equals(n)&&s.equals("on"))
{
%><tr><td><font color="green">**<a href="data.jsp?name=<%=n%>&&lName=<%=loginName%>">
<%=n%>
</a></font></td></tr>
<%
}
else
{
%>
<tr><td><font color="red">**<a href="data.jsp?name=<%=n%>&&lName=<%=loginName%>">
<%=n%>
</a></font></td></tr>
<%
}
}
else
{
%><tr><td><font color="red">**<a href="data.jsp?name=<%=n%>&&lName=<%=loginName%>">
<%=n%>
</a></font></td></tr>
<%
}
}
%>
</div>
</div>
</div>
</div></body></html>
4. Testing Including Test Cases and Results
1. TEST CASES :
INTRODUCTION PAGE :
LOGINPAGE :
REGISTRATION PAGE :
HOME PAGE :
COMMENTING ON THE EVENTS :
CREATING EVENTS :
USER PROFILE :
VIEW EVENTS :
WHO IS ONLINE:
CONTACT US:
5. USER MANUAL
Initially the user has to register in our site with the specified submission of details.
Then the registered user should submit his valid username and password in the login
page. The username and password should match with the pre entered username and
password in the registration page.
After the successful login the user enters the home page of our project, which is
displayed as shown below.
Profile Update:
A hyper link to profile is displayed in the left table’s column. After clicking the hyper
link a web page with profile table is displayed, which looks as shown below.
The user needs to update all the profile details present in the profile webpage to
update his current profile. After the successful profile updating, the user enters back
to the home page.
6. Conclusion
Online social networking offers people great convenience for social networking. It
allows people to voice out the Voice out violations, injustice, inhumanity, corruption
happening in their vicinity with the click of a few buttons. You can find people with similar
interests as you and get to know them better of the society, even if they are in a different
country without having to worry about an enormous phone bill or going over the restricted
minutes on a phone card.
However, like all things, nothing can be too good to be true. With an increased amount of
time spent on the Internet comes with consequences. People slowly become disembodied
with real life and believe they live in a virtual world with virtual friends. As they begin to
lose touch with other people, they increasingly isolate themselves, and according to
Durkheim’s theory of egoistic suicide, being socially isolated leads to suicide. Though
suicide is quite drastic in this sense, it explains how people can become depressed. Therefore,
even though it has its benefits in the virtual world, the real world is greatly impeded by the
increasing use of online social networking for social responsibilities.
In my opinion, I feel that this site can provide various measures for fellow citizens to control
and monitor the social responsibility of a given individual.
Hence, here by we conclude that our attempt to build a sterilized society can be possible
through our website.
We firmly believe that this is a, FOCUC ON HOW TO BE SOCIAL, NOT ON HOW
TO DO SOCIAL.
7. Future Scope
To extend the dynamic content collaborated by users, such as the site should have the features to auto analyze topics, group discussions, auto recommend threads based on searches etc.
Increasing the Authenticity of the users, as this is the at most important for a social networking website. Definitely one should not be allowed to have more than one profile.
8. Bibliography
Beginning JSP 2: From Novice to Professional
The complete reference to JSP
Making Use of JSP - Ganguli, Madhushree
Java Servlet & JSP Cookbook - Perry, Bruce W.