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

标签 javascript java mysql jsp

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

}

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

最佳答案

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

在这里,一旦您将状态从 Activity 更改为非 Activity 或将非 Activity 更改为 Activity ,这些更改将成功反射(reflect)在数据库中。

index.jsp 页面:

<%@ 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 表中显示分配记录。

关于javascript - 从其他 JSP 中创建的 JS 函数接收 JSP 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39717222/

相关文章:

javascript - 带有正则表达式的 JavaScript 中的第三个嵌套引用级别

javascript - 在 Adob​​e Acrobat 中使用 Javascript 生成 5 个随机数字

java - Cordova 6.2.3 没有 WebChromeClient,我如何覆盖 onJsPrompt()?

java - 在java中扫描图像以获得特定像素颜色

php - 按最常见的类别(Mysql、Php)选择顺序

javascript - "TOP N WITH TIES"用于 MongoDB

java - 使用 Java 进行负载测试 - 计时器任务与调度程序

ADD 附近的 SQL 语法错误

php - 遵循教程时连接到数据库时遇到问题

javascript - setTimeout 函数不适用于 for 循环