如何从1000开始在jsp中生成唯一id的序列

时间:2011-04-19 05:37:17

标签: java jsp servlets

我希望jsp中的代码从1000开始生成唯一的id。我可以使用哪种数据类型,以及如何使用它。任何人都可以请我......“

4 个答案:

答案 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