Java 如何填充JSP中的所有数组值(如果为空)
我正在为大学做我刚开始的第一个WEB项目,我需要JSP文件将信息发送到我的数据库,但要发送所有复选框值,我需要处理一个字符串数组变量,该变量应该在SQL命令中输入正确的值,但只有在所有3个复选框都选中的情况下,它才能工作,我知道这是因为我在SQL comand中调用了3个列表iten,所以如果用户只检查2,那么3ºiten就不存在了,所以我尝试放置类似于(如果数组[1]==null){在该数组上放置一个“XXX”值}的东西,但我无法使其工作 我尝试了这样的方法,只是为了给空的值加上一些值: `字符串vserv1; 字符串vserv2; 串vserv3Java 如何填充JSP中的所有数组值(如果为空),java,mysql,jsp,Java,Mysql,Jsp,我正在为大学做我刚开始的第一个WEB项目,我需要JSP文件将信息发送到我的数据库,但要发送所有复选框值,我需要处理一个字符串数组变量,该变量应该在SQL命令中输入正确的值,但只有在所有3个复选框都选中的情况下,它才能工作,我知道这是因为我在SQL comand中调用了3个列表iten,所以如果用户只检查2,那么3ºiten就不存在了,所以我尝试放置类似于(如果数组[1]==null){在该数组上放置一个“XXX”值}的东西,但我无法使其工作 我尝试了这样的方法,只是为了给空的值加上一些值: `字
if(vservA[0] == null){
String vserv1 = "XXX";
}
else{
String vserv1 = vservA[0];
}
if(vservA[1] == null){
String vserv2 = "XXX";
}
else{
String vserv2 = vservA[1];
}
if(vservA[2] == null){
String vserv3 = "XXX";
}
else{
String vserv3 = vservA[2];
}
`
到现在为止,我只知道一些关于HTML、CSS的知识,还有一点关于JavaScript和JSP的知识
我还在学英语,所以。。。如果我写错了,我很抱歉
这是我的密码:
<head>
<link rel="shortcut icon" href="img/ico/top.ico">
<meta name="viewport" content="device=device-width, initial-scale=1.0">
<title>Crie sua conta Top Show Pet </title>
<meta charset = "UTF-8">
<!--<meta http-equiv="refresh" content="0; URL='http://localhost:9999/TopPet/Pagina-Pet/Top-Pet-(PetForm).html'"/>-->
</head>
<body>
<%@page language="java" import="java.sql.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
// cria as variaveis e obtem os dados digitados pelo usuario
String[] vservA = request.getParameterValues("checkservico");
String vanimal = request.getParameter("PetEsc");
String vdia = request.getParameter("Data");
String vhora = request.getParameter("Hora");
// variaveis para acessar o banco de dados
String banco = "toppetcadastro";
String usuario = "root";
String senha = "";
String url = "jdbc:mysql://localhost:3306/" + banco;
String driver = "com.mysql.jdbc.Driver";
// carrega o driver na memoria
Class.forName( driver );
// criar variavel para conectar com banco de dados
Connection conexao ;
// abrir a conexao com o banco
conexao = DriverManager.getConnection( url , usuario , senha ) ;
String select = "SELECT cliente.cpf, cliente.Nome, pet.id from cliente join pet on cliente.CPF = pet.Dono WHERE Email = '"+session.getAttribute("user")+"' and pet.Nome = '"+vanimal+"';";
// cria o statement
Statement stm = conexao.createStatement() ;
// executa o comando do SQL
ResultSet rs = stm.executeQuery(select);
rs.next();
String insert = "INSERT INTO agendado (Servico, Proprietario, Nome_Dono, Animal, Nome_Animal, Dia, Hora) VALUES('"+vservA[0]+" - "+vservA[1]+" - "+vservA[2]+"','"+rs.getString("CPF")+"','"+rs.getString("Nome")+"',"+rs.getString("id")+",'"+vanimal+"','"+vdia+"','"+vhora+"');";
// executa o comando do SQL
stm.executeUpdate( insert ) ;
rs.close();
stm.close() ;
conexao.close() ;
out.print("<br><br>") ;
out.print("Dados gravados com sucesso!!!") ;
out.print("<br><br>") ;
out.print("<a href='http://localhost:9999/TopPet/Pagina-Agendar/Agendamento.jsp'>Continuar</a>") ;
%>
</body>
</html>```
Crie sua conta顶级宠物秀
```
您可以使用此方法将数组的所有null
元素设置为XXX
演示:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] arr = { "Hello", null, "World", null, "Great" };
System.out.println("Before: " + Arrays.toString(arr));
Arrays.setAll(arr, i -> arr[i] == null ? "XXX" : arr[i]);
System.out.println("After: " + Arrays.toString(arr));
}
}
Before: [Hello, null, World, null, Great]
After: [Hello, XXX, World, XXX, Great]
Before: [Hello, null, World, null, Great]
After: [Hello, XXX, World, XXX, Great]
输出:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] arr = { "Hello", null, "World", null, "Great" };
System.out.println("Before: " + Arrays.toString(arr));
Arrays.setAll(arr, i -> arr[i] == null ? "XXX" : arr[i]);
System.out.println("After: " + Arrays.toString(arr));
}
}
Before: [Hello, null, World, null, Great]
After: [Hello, XXX, World, XXX, Great]
Before: [Hello, null, World, null, Great]
After: [Hello, XXX, World, XXX, Great]
传统方式:
警告:这段代码迫切需要占位符值,因为你只是。我想这在任何方面都不安全,但这并不意味着在一个真正的网站上工作,甚至不上网,只是做最基本的,但感谢你的警告!帮助很大!=值得学习正确的方法这样做,因为如果你点击t在你的代码中留下了一堆bug。我会搜索更多关于它的信息,再次感谢!@Jônatasoares-有更新吗?我想我实现得不错:更改了
Arrays.setAll(arr,I->arr[I]==null?:XXX:arr[I]);
到vservA.setAll(vservA,I->vservA[I]==null?:XXX:vservA[I])
这是我的数组,输出。打印我删除的行,因为我不需要显示,但我不认为它导入了我放在
中的import=“java.util.Arrays”
,不知道为什么,但我正在搜索。我还尝试将导入放在一起:import=“java.sql.*,java.util.Arrays”
但似乎不起作用,现在页面异常显示:-本地类Main的修饰符非法;只允许使用abstract或final-方法Main不能声明为静态;静态方法只能声明为静态或顶级类型-不能调用数组类型String[]上的setAll(String[],(i)->{}不,您的实现不正确。它应该是Arrays.setAll(vservA,i->vservA[i]==null?“XXX”:vservA[i])
同样,
工作正常。检查您是否输入了一些错误。本地类Main的非法修饰符…
-不要在JSP中创建类Main
。我编写了class Main
只是一个示例。您只需使用数组.setAll(vservA,I->vservA[I]==null?/XXX]:vservA[I]);
。如有任何疑问/问题,请随时发表评论。