javascript - 发送/接收带参数的 GET 请求
问题描述
我有一种情况,我想从给定特定 ID 的数据库中选择所有记录。请求首先从 JavaScript 发送,然后由 Servlet 接收,该 Servlet 访问 DAO,DAO 依次查询数据库。然后,数据显然会回到前端。我只是在传递这些参数时有点模糊,以便正确查询数据库。
我目前收到 500 错误,这是由于我的参数未正确传递。
从带有初始请求的 JavaScript 开始:
let xhr = new XMLHttpRequest();
xhr.open('GET', 'http://localhost:8080/project1attempt/reimbursement?
employee_id=' + x._id, true);
xhr.send();
在 Servlet 接收参数是我最大的困惑,因此这里的代码是不完整的(rs
是一个报销服务):
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("application/json");
int id = ;
List<Reimbursement> reimbursements = rs.findAllReimbursements(id);
String json = new ObjectMapper().writeValueAsString(reimbursements);
resp.getWriter().write(json);
}
和查询:
public List<Reimbursement> findAllReimbursements(int id) {
List<Reimbursement> reimbursements = new ArrayList<>();
try
(Connection c = manager.getConnection()) {
String sql = "SELECT reimbursement_id, date, description, amount,
typing_id, employee_id" +
"FROM reimbursements" +
"WHERE reimbursement_id = ?";
PreparedStatement ps = c.prepareStatement(sql);
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
Reimbursement r = null;
while (rs.next()) {
r = new Reimbursement();
r.setId(rs.getInt("reimbursement_id"));
r.setDate(rs.getDate("date"));
r.setDescription(rs.getString("description"));
r.setAmount(rs.getDouble("amount"));
r.setTypingId(rs.getInt("typing_id"));
r.setEmployeeId(rs.getInt("employee_id"));
reimbursements.add(r);
}
return reimbursements;
} catch (SQLException e) {
throw new BlabApplicationDataException("Could not connect to
Reimbursement Repository" + id);
}
}
解决方案
您可以使用getParameter
方法HttpServletRequest
来获取您需要的 URL 参数。
可能,这就是您正在寻找的线路。
String idStr = req.getParameter('employee_id');
if(idStr != null) {
int id = Integer.parseInt(idStr);
}
推荐阅读
- java - 如何解决使用 Gradle 的 Java 项目的 Cobertura 不一致的代码覆盖率问题?
- regex - 用于在 Perl 中捕获 vcard 组的正则表达式
- c++ - 如何将 cpr 的 get 响应转换为 json 对象?
- javascript - 如何在没有 google plus 个人资料图片的情况下嵌入 Google Maps?
- php - 如何解决包含希伯来语文本的 Excel 工作表中的缓慢移动和滚动问题?
- html - 如何消除内容下的空间?
- pandas - 设置多个应用列
- javascript - 映射和传递 onClick 函数作为道具后如何定位特定元素
- swift - 如何编辑隐藏在 Xcode Storyboard 中其他视图后面的视图?
- ssl - 有什么方法可以在免费的 heroku dyno 上添加免费的 SSL 证书?