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 diagram3. 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.