Display Sum of Table Column Using In JSP
In this section, we develop an application to Display the sum data
of a Table column for a specific Date. We created five file sum_count.jsp,
resultForm.jsp, result_count.jsp, sumcount.java
and
SumCountBean.java.
When a web page ("sum_count.jsp") run on browser then it will
insert the salary amount for a specific date and on this page having a link
"Click here To Show Total Salary" to show the total salary
between two specific date and result is display using Jsp
Bean..
Step 1: Create a web page(sum_count.jsp) to insert a Salary.
<%@ page import="java.sql.*" %>
<html>
<head>
<style>
A:hover {text-decoration: none;
border: 0px;
font-size:14pt;
color: #2d2b2b; }
</style>
<link rel="stylesheet" type="text/css" href="datepicker.css"/>
<script type="text/javascript" src="datepicker.js"></script>
<script>
function validate()
{
var sdate = document.frm.date.value;
var sdateAr=sdate.split("-");
if(document.frm.date.value=="")
{
alert("Please enter the date.");
document.frm.date.focus();
return false;
}
if(sdateAr.length!=3)
{
alert("Please enter valid Date in mm-dd-yyyy format.");
document.frm.date.value="";
document.frm.date.focus();
return false;
}
if(document.frm.salary.value=="")
{
alert("Please enter the salary.");
document.frm.salary.focus();
return false;
}
}
</script>
</head>
<body>
<%
String salary="";
String date="";
String success_msg="";
if(request.getParameter("salary")!=null && request.getParameter("date")!=null )
{
salary = request.getParameter("salary");
date = request.getParameter("date");
String strar[] = date.split("-");
if(salary !="" && date!="")
{
String cdate = strar[2]+"-" + strar[0]+"-"+ strar[1];
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/";
String dbName = "sumcount";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "root";
int sumcount=0;
Statement st;
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url+dbName,userName,password);
String query =
"insert into sumcount set emp_salary='"+salary+"',date='"+cdate+"'";
st = conn.createStatement();
int ir = st.executeUpdate(query);
if(ir>0)
{
success_msg ="You entered Successfully Salary.";
}
}
catch (Exception e) {
e.printStackTrace();
}
}
salary ="";
date ="";
}
%>
<br><br><br>
<form method="post" name="frm" onSubmit="validate();">
<table border="0" width="400px" align="center" bgcolor="#CDFFFF">
<tr>
<td colspan=2 style="font-size:10pt;color:#ff0000;" align="center"><%=success_msg%>
</td>
</tr>
<tr>
<td colspan=2 style="font-size:12pt;color:#00000;" align="center">
<h3>Enter Date and Salary</h3></td></tr>
<tr><td> </td></tr>
<tr><td ><b>Date:</b></td><td><input type="text" name="date" id="cdate">
<input type=button value="Select Date" onclick="displayDatePicker('date', this);">
</td></tr>
<tr><td><b>Salary:</b></td><td><input type="text" name="salary"></td></tr>
<tr><td> </td></tr>
<tr><td colspan=2 align="center">
<input type="submit" name="submit" value="Save"></td></tr>
</table>
</form>
<table border="0" width="100%" align="center">
<br>
<br>
<tr>
<td width="100%" align="center">
<a href="resultForm.jsp" style="font-size:14pt;color:blue;" >
Click here to Show Total Salary</a></td>
</tr>
</table>
</body>
</html>
Here is the output of this program:

Step 2:Create a web page (resultForm.jsp) to Select a Date.
<%@ page import="java.sql.*" %>
<html>
<head>
<style>
A:hover {text-decoration: none;
border: 0px;
font-size:14pt;
color: #2d2b2b; }
</style>
<link rel="stylesheet" type="text/css" href="datepicker.css"/>
<script type="text/javascript" src="datepicker.js"></script>
<script>
function validate()
{
var sdate = document.frm.date.value;
var sdateAr=sdate.split("-");
var ldate = document.frm.edate.value;
var ldateAr=ldate.split("-");
if(document.frm.date.value==""){
alert("Please enter Start Date.");
document.frm.date.focus();
return false;
}
if(document.frm.edate.value==""){
alert("Please enter End Date.");
document.frm.edate.focus();
return false;
}
if(sdateAr.length!=3){
alert("Please enter valid Start Date in mm-dd-yyyy format.");
document.frm.date.value="";
document.frm.date.focus();
return false;
}
if(ldateAr.length!=3){
alert("Please enter valid End Date in mm-dd-yyyy format.");
document.frm.edate.value="";
document.frm.edate.focus();
return false;
}
if(sdateAr[0]>ldateAr[0] || sdateAr[1]>ldateAr[1] || sdateAr[0]>ldateAr[0]){
alert("Start Date must be less then End date.");
document.frm.edate.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<br><br><br>
<form method="post" name="frm" action="sumcount" onSubmit="return validate();">
<table border="0" width="400" align="center" bgcolor="#CDFFFF">
<tr>
<td colspan=2 style="font-size:12pt;color:#00000;" align="center">
<h3>Please Select Start and End Date</h3>
</td>
</tr>
<tr><td ><b>Start Date:</b></td><td><input type="text" name="date" id="cdate">
<input type=button value="Select Date" onclick="displayDatePicker('date', this);">
</td></tr>
<tr><td ><b>End Date:</b></td><td><input type="text" name="edate" id="edate">
<input type=button value="Select Date" onclick="displayDatePicker('edate', this);">
</td></tr>
<tr><td> </td></tr>
<tr><td colspan=2 align="center"><input type="submit" name="submit" value="Submit"></td></tr>
</table>
</form>
</body>
</html>

Step 2:Create a Servlet (sumcount.java) to retrieve data.
In this Servlet retrieve the data using mysql Query
select sum(emp_salary)
from sumcount where date>='"+cdate+"' and date<='"+ldate+"'";
The cdate and ldate are the posted data from "resultForm.jsp".
After result set in a attribute variable "sumcount"
request.setAttribute("sumcount",sumcount);
and forward to "result_count.jsp" to show the output.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.sql.*;
import java.sql.*;
public class sumcount extends HttpServlet{
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
System.out.println("MySQL Connect Example.");
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/";
String dbName = "sumcount";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "root";
int sumcount=0;
Statement st;
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url+dbName,userName,password);
System.out.println("Connected to the database");
String date = request.getParameter("date");
String edate = request.getParameter("edate");
String strar[] = date.split("-");
String strar2[] = edate.split("-");
String cdate = strar[2]+"-" + strar[0]+"-"+ strar[1];
String ldate = strar2[2]+"-" + strar2[0]+"-"+ strar2[1];
String query =
"select sum(emp_salary)
from sumcount where date>='"+cdate+"' and date<='"+ldate+"'";
System.out.println("query " + query);
st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
if(rs.next())
{
sumcount = rs.getInt(1);
}
request.setAttribute("sumcount",sumcount);
request.setAttribute("sdate",date);
request.setAttribute("edate",edate);
String nextJSP = "/result_count.jsp";
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher(nextJSP);
dispatcher.forward(request,response);
out.println(query);
conn.close();
System.out.println("Disconnected from database");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Save the above file into "sum\WEB-INF\classes" directory.
Step 3: Mapping the servlet (sumcount.java) in to web.xml file:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 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_2_5.xsd"
version="2.5">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<servlet>
<servlet-name>sumcount</servlet-name>
<servlet-class>sumcount</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sumcount</servlet-name>
<url-pattern>/sumcount</url-pattern>
</servlet-mapping>
</web-app>
Step 4: Now compile the java code using javac command from command prompt.
Step 5:Create a Bean File (SumCountBean.java) for mapping the result data.
package com;
public class SumCountBean {
private int sumCount;
private String sdate="";
private String edate="";
public void setSumCount(int sumCount)
{
this.sumCount = sumCount;
}
public int getSumCount() {
return sumCount;
}
public void setSdate(String sdate)
{
this.sdate = sdate;
}
public String getSdate() {
return sdate;
}
public void setEdate(String edate)
{
this.edate = edate;
}
public String getEdate() {
return edate;
}
}
Successful Output of the program:
Download the full web application shows here.


