我希望jsp中的代码从1000开始生成唯一的id。我可以使用哪种数据类型,以及如何使用它。任何人都可以请我......“
答案 0 :(得分:3)
如果要生成特定范围内的随机整数,可以使用以下代码段:
public int generateRandomNumber(int start, int end ){
Random random = new Random();
long fraction = (long) ((end - start + 1 ) * random.nextDouble());
return ((int)(fraction + start));
}
例如,要获得1000和8888之间的随机整数,可以调用generateRandomNumber(1000, 8888);
如果你想在JSP中编写所有java代码(很难,我也不建议使用这种方法),你可以创建一个这样的JSP页面。你可以在每次刷新后获得一个随机整数。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.util.Random"%>
<%!
public int generateRandomNumber(int start, int end ){
Random random = new Random();
long fraction = (long) ((end - start + 1 ) * random.nextDouble());
return ((int)(fraction + start));
}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>TEST RANDOM NUMBER</title>
</head>
<body>
<h1>Generate Random Number:<%=generateRandomNumber(1000,8888)%></h1>
</body>
</html>
答案 1 :(得分:2)
您可以使用java.util.Random
,使用nextInt()
方法,只需添加1000
即可,如果您希望从1000
开始,则可以先使用1000
作为{{1}}
另见
答案 2 :(得分:2)
这些答案都涉及随机数 - OP询问的是唯一数字。使用随机数,你仍然有可能重复(虽然这个机会很小)
获取唯一编号的简单方法是让一个具有一个静态同步方法的类,该方法增加静态声明的计数器并返回它。将计数器播种到1000开始。
我会在java类中实现它,而不是JSP。正如Jogar早先指出的那样,将原始java放入JSP中很快就会失控。
如果您的应用程序可能最终在多个JVM上运行(例如在应用程序服务器群集中),并且该数量在整个群集中需要唯一,那么此解决方案将无法运行。您需要使用外部计数器,例如上面提到的基于数据库的解决方案。
答案 3 :(得分:0)
您可以使用db的AUT_INCREMENT功能。 mysql db生成唯一的id。
create table `TableName`(
`v` int UNSIGNED NOT NULL AUTO_INCREMENT ,
PRIMARY KEY (`v`)
) Engine='Default' auto_increment=1000 comment='' row_format=Default