我编写了一段代码,我希望管理员能够通过单选按钮将用户更改为 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='+optedval;
}
function pageupdatecti(emailid, optedval) {
location.href='changeToInactive.jsp?email='+emailid+'&optedval='+optedval;
}
</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/