我在我的应用程序中使用Jersey REST Webservices,就像一种博客网站(意味着不需要用户注册或身份验证)
我有一些webservices查询数据库并将数据发送到前端。
如您所知,用户可以在浏览器网络选项卡中查看Web服务调用并手动触发查询
我的问题是,如何保护服务器/服务不被连续命中(手动写入循环以破坏应用程序)
这就是我的服务的样子
@GET
@Produces("text/plain")
public String displaylatestnews() {
String latestnews = "";
PreparedStatement selectpstmt = null;
ResultSet selectRset = null;
Connection conn = null;
String selectsql = "SELECT rssjson from rssfeeds limit 1";
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
selectpstmt = conn.prepareStatement(selectsql);
selectRset = selectpstmt.executeQuery();
if (selectRset.next()) {
latestnews = selectRset.getString("rssjson");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
selectRset.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
selectpstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return "jsonCallback(" + latestnews.toString() + ")";
}
答案 0 :(得分:0)
每次有请求时,您都可以开始避免创建与mysql的连接,其次,您可以添加某种缓存。即使只持续几秒钟的缓存也可以节省大量的数据库访问。