Lavina Chhabra Lavina Chhabra - 2 months ago 12
Java Question

Receive values in JSP from JS function created in other JSP

I have written a code where I want the admin to be able to change the user as active or inactive through radio button. For that I am using JSP, MySQL and JS.

admin.jsp:

<tr>
<td>
Name: <% out.println(firstname); %> <% out.println(lastname); %>

</td>
<td>
<% if (flag.equals("A")){ %>

Active: <input type="radio" value="A" name="<% out.println(email); %>" id="<% out.println(email); %>" onchange="pageupdatecta('<% out.println(email); %>', this.value);" checked>
Inactive: <input type="radio" value="I" name="<% out.println(email); %>" id="<% out.println(email); %>" onchange="pageupdatecti('<% out.println(email); %>', this.value);">
<%
}else if(flag.equals("I")){%>

Active: <input type="radio" value="A" name="<% out.println(email); %>" id="<% out.println(email); %>" onchange="pageupdatecta('<% out.println(email); %>', this.value);">
Inactive: <input type="radio" value="I" name="<% out.println(email); %>" id="<% out.println(email); %>" onchange="pageupdatecti('<% out.println(email); %>', this.value);" checked>
<%
} %>
<script type="text/javascript">
function pageupdatecta(emailid, optedval) {
location.href='changeToActive.jsp?email='+emailid+'&optedval='+o‌​ptedval;
}
function pageupdatecti(emailid, optedval) {
location.href='changeToInactive.jsp?email='+emailid+'&optedval='+o‌​ptedval;
}
</script>


changeToActive.jsp:

try{

Class.forName("com.mysql.jdbc.Driver");
System.err.println("Driver loaded!");

Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/work", "root", "MyNewPass");
System.err.println("Database Connected..");

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);

stmt.executeUpdate("update assignment set flag='A' where email='"+email+"'");
System.err.println("A"+email);

}


Can you tell me how to receive values from the function, and make my code work?

Answer

The below code will fetch a record from assignment table of work database for id=1.
The checked status of the radio button will be decided by the existing checked status in the DB.

Here, as soon as you change the status from active to inactive OR inactive to active the changes will be reflected successfully in the database.

index.jsp Page:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" %>
<%@ page import="java.sql.*,stack.filter.JDBCConnector" %>  
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Radio Select</title>
</head>
<body>
<%
Connection con = null;
String firstname = null;
String lastname = null;
String email = null;
String flag = null;
try {
    con = JDBCConnector.connect_database();
    Statement stmt = con.createStatement();
    ResultSet rs=stmt.executeQuery("select * from assignment where id=1");

    while(rs.next()){
        firstname=rs.getString(2);
        lastname=rs.getString(3);
        email=rs.getString(4);
        flag=rs.getString(5);
    }
    System.out.println(""+firstname+" "+lastname+" "+email+" "+flag);
} catch (Exception e) {
    e.printStackTrace();
} finally {
    con.close();
}
%>
<table>
    <tr>
        <td>
              Name:  <% out.println(firstname); %> <% out.println(lastname);          %>
        </td>
        <td> 
         <%
            if(flag.equals("A")){
                %> Active: <input type="radio" name="<%=email%>" id="r1" value="A" onclick="updateStatus()" checked="checked"/> 
                 In active: <input type="radio" name="<%=email%>" id="r2" value="I" onclick="updateStatus()"/>
                 <%
            }else if(flag.equals("I")){
                %> Active: <input type="radio" name="<%=email%>" id="r1" value="A" onclick="updateStatus()"/> 
                 In active: <input type="radio" name="<%=email%>" id="r2" value="I" onclick="updateStatus()" checked="checked"/>
                 <%
            }
         %>
        </td>
    </tr>
</table>
<script type="text/javascript">
        function updateStatus(){
            if (document.getElementById('r1').checked) {
                location.href='changeToActive.jsp?email='+'${email}'+'&status=A';
            }else if (document.getElementById('r2').checked) {
                location.href='changeToActive.jsp?email='+'${email}'+'&status=I';
            }       
        }
</script>
</body>
</html>

changeToActive.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="java.sql.*,stack.filter.JDBCConnector" %>  
<%
Connection con = null;
try {
    con = JDBCConnector.connect_database();
    System.err.println("Database Connected..");

    Statement stmt = con.createStatement();
    String status = request.getParameter("status");
    String email = request.getParameter("email");
    int i= stmt.executeUpdate("UPDATE assignment SET status='"+status+"' where email='"+email+"'");
    if(i==1){
        out.println("Successfully updated the status");
    }

} catch (Exception e) {
    e.printStackTrace();
}finally{
    con.close();
}
%>

JDBCConnector.java class: created for centrally creating connection object in your app.

package stack.filter;

import java.sql.Connection;
import java.sql.DriverManager;
public class JDBCConnector {        
public static Connection connect_database(){
    Connection con = null;
    try{
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost/work", "root", "root");
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if(con!=null)
        {
            System.out.println("Connected...");
        }
    }
    return con;
}
}

Assignment Table:

CREATE TABLE `assignment` (
`id` INT(11) NOT NULL,
`firstname` VARCHAR(30) DEFAULT NULL,
`lastname` VARCHAR(30) DEFAULT NULL,
`email` VARCHAR(30) DEFAULT NULL,
`status` CHAR(1) DEFAULT NULL,
PRIMARY KEY (`id`)
) 

/*Data for the table `assignment` */

INSERT  INTO `assignment`(`id`,`firstname`,`lastname`,`email`,`status`) VALUES (1,'rohit','gaikwad','rohitgaikwad@xyz.com','I');

Note: The id=1 primary key is hardcoded, I guess you have some logic that displays a record of assignment in your html table.