每次收到来自客户端的特定 post 请求时,服务器都应该生成一个唯一的整数来生成一个链接(uri:website/question/id/details),并将该整数作为索引(主键)存储在数据库中。我已经尝试过int idForUri = UniqueInteger.uri.incrementAndGet();
但是如果服务器重新启动,这不起作用。我该如何解决这个问题?
class UniqueInteger {
public static AtomicInteger uri = new AtomicInteger(212043);
}
添加
表格 文章
------------
id int(11) 无符号auto_increment主键
标题 瓦尔查尔(50) 内容文本
乌里瓦尔查尔(50)
来自浏览器的每个特定 post 请求都会导致服务器生成新的 URI。用户通过 uri 访问该页面,该 uri 由"网站/问题/ID/详细信息"组成(id 是主键)。但是在不知道新 id 的情况下,uri 也是未知的。例如,21000 是表项目中当前存在的最大 id。所以需要insert into article(title, content, uri) values (?, ?, 'website/questions/21001/details')
。但是服务器不知道 21001 的值,因为自动增量(可能会导致在执行insert
之前出现 sqlselect
语句)。
用户通过在浏览器中键入特定的uri来访问每个文章页面,一个HTTP请求。服务器应该知道仅通过接收链接发送哪篇文章。所以我在uri中添加了id(就像SO中的uri一样,即问题/问题ID/标题)。然后通过解析 uri 中归档的 id,服务器可以找到特定的文章。
如何修复设计?
使用数据库中的 SEQUENCE 或等效概念。
根据您的评论,最简单的方法是让数据库插入正常使用自动生成的键,
并且更改 getUri 方法以在其中追加或插入 id 字段
return String.format ("website/question/%d/details", id);