从其他JSP中创建的JS函数接收JSP中的值

时间:2016-09-27 06:11:47

标签: javascript java mysql jsp

我编写了一个代码,我希望管理员能够通过单选按钮将用户更改为活动或非活动状态。为此我使用JSP,MySQL和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);

}

你能告诉我如何从函数接收值,并让我的代码工作吗?

3 个答案:

答案 0 :(得分:1)

以下代码将从工作数据库的分配表中获取id = 1的记录 单选按钮的检查状态将由DB中现有的已检查状态决定。

此处,只要您将状态从活动状态更改为非活动状态或非活动状态更改为活动状态,更改将在数据库中成功反映出来。

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类:,用于在您的应用中集中创建连接对象。

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;
}
}

作业表:

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');

注意: id = 1主键是硬编码的,我猜你有一些逻辑可以在html表中显示赋值记录。

答案 1 :(得分:0)

您可以使用以下命令获取查询参数的值:

String email = request.getParameter("email");
String optedval = request.getParameter("optedval"); 

然后你可以在你的sql语句中使用它们。

答案 2 :(得分:0)

应该是这样的。你给了收音机同样的id。

Active: <input type="radio" value="A" name="<% out.println(email); %>" id="id1" onchange="pageupdatecta('<% out.println(email); %>');" checked>
Inactive: <input type="radio" value="I" name="<% out.println(email); %>" id="id2" onchange="pageupdatecti('<% out.println(email); %>');">


<script> 
function pageupdatecta(emailid) { 
alert('Hi');
location.href='changeToActive.jsp?email='+emailid; 
} 
function pageupdatecti(emailid) { 
alert('Hi'); 
location.href='changeToActive.jsp?email='+emailid;
} 
</script>

并在您的servlet中使用String email = request.getParameter("email");来获取电子邮件变量的值。