【发布时间】:2014-08-18 14:01:33
【问题描述】:
我正在开发一个从数据库中提取所有消息的 Web 服务,作为 json 响应 这是我的 ws,它获取用户的密码并登录,搜索他们的 ID 并从数据库中提取用户的消息:
@GET
@Path("/historiquemethod")
@Produces("application/json")
public msgTabl historique(
@QueryParam("pseudo") String pseudo,
@QueryParam("motDePasse") String motDePasse
) {
msgTabl tab = new msgTabl();
MsgBean ms = new MsgBean();
int i = 0;
int id = 0;
// extraire l'id de la personne selon le pseudo & le mot de passe
try {
ResultSet rs1 = conn.createStatement().executeQuery("select id_u from utilisateur where pseudo='" + pseudo + "'and motdepasse='" + motDePasse + "' ");
if (rs1.next()) {
id = rs1.getInt(1);
}
} catch (SQLException ex) {
}
// extraire les messages et les mettre dans le tableau
try {
ResultSet rs2 = conn.createStatement().executeQuery("select * from message where idUser='" +id+ "'");
while (rs2.next()) {
tab.setTest("ok");
String from2 = rs2.getString("fromm");
String contenu2 = rs2.getString("contenu");
String dateenvoi2 = rs2.getString("DateEnvoi");
String numexp2 = rs2.getString("NumExp");
ms.setFrommm(from2);
ms.setContenu(contenu2);
ms.setDateEnvoi(dateenvoi2);
ms.setNumExp(numexp2);
tab.m[i] = ms;
i = i + 1;
}
} catch (SQLException ex) {
tab.setTest("Catch error");
}
return tab;
}
每条消息都是一个“msgbean”,其中包含一些信息(from、to、content、id、idUser、Date...)
WS 的响应是一个“msgTabl”,它是一个包含 msgbean 表和一个字符串的对象,
问题是我的 ws 总是只返回最后一条消息! 这意味着如果用户有 3 条消息,则只有最后一条返回 3 次的消息!
{
"msgTabl": {
"m": [
{
"contenu": 3333333333,
"dateEnvoi": 3333333333,
"frommm": 333333333,
"id": 3,
"idu": 1,
"numExp": 33333333333
},
{
"contenu": 3333333333,
"dateEnvoi": 3333333333,
"frommm": 333333333,
"id": 3,
"idu": 1,
"numExp": 33333333333
},
{
"contenu": 3333333333,
"dateEnvoi": 3333333333,
"frommm": 333333333,
"id": 3,
"idu": 1,
"numExp": 33333333333
}
],
"test": "ok"
}
}
你能告诉我错误在哪里吗???他们有我的代码的任何prb吗? 另外,我想知道为什么 msgTabl 出现在 json 响应中? 我的意思是为什么我没有得到
{
"m": [
{
"contenu": 3333333333,
"dateEnvoi": 3333333333,
"frommm": 333333333,
"id": 3,
"idu": 1,
"numExp": 33333333333
},
{
"contenu": 3333333333,
"dateEnvoi": 3333333333,
"frommm": 333333333,
"id": 3,
"idu": 1,
"numExp": 33333333333
},
{
"contenu": 3333333333,
"dateEnvoi": 3333333333,
"frommm": 333333333,
"id": 3,
"idu": 1,
"numExp": 33333333333
}
],
"test": "ok"
}
直接?
【问题讨论】:
-
请将该代码放入问题中,并正确格式化为代码。
-
完成!你现在可以阅读了
-
sql 注入,它们烧毁了!请请请修复sql注入! stackoverflow.com/questions/332365/…
-
@JohnGardner 我不明白这是什么意思??
-
您正在使用字符串连接直接构建查询,这使得恶意的人可以做非常糟糕的事情。例如,如果我将“' or 1=1”作为密码传递,你的代码会发生什么?你真的应该使用参数标记来构建查询,并且从不通过字符串连接。见en.wikipedia.org/wiki/Sql_injection
标签: java json web-services http get