我根据页面的访问次数增加了录取号码....但每次重启服务器时,录取号码都会被初始化。这是一份申请表。我需要的是每次用户打开表单时自动递增并显示在表单上的入场号码 我是java的新手jsp请帮忙。这是代码:
<p>Admission for
<input type= "radio" name="whichclass" id="wc1" value="daycare">
<label for="wc1">DayCare</label>
<input type="radio" name="whichclass" id="wc2" value="nursery">
<label for="wc2">Nursery</label>
<input type="radio" name="whichclass" id="wc3" value="pp1" >
<label for="wc3">PP1</label>
<input type="radio" name="whichclass" id="wc4" value="pp2">
<label for="wc4">PP2</label></p>
<%
//Get creation time
Date createTime = new Date(session.getCreationTime());
// Get last access time of this web page
Date lastAccessTime = new Date(session.getLastAccessedTime());
String title= "Welcome back";
Integer visitCount = new Integer(0);
String visitCountKey= new String("vistCount");
//Create a variable for Admission number
Integer adNumber = new Integer(20150);
String adNumberKey = new String("adNumber");
//Check if user is new
if(session.isNew())
{
String title1 = "Welcome to Application form";
session.setAttribute(visitCountKey, visitCount);
session.setAttribute(adNumberKey, adNumber);
}
visitCount= (Integer)session.getAttribute(visitCountKey);
visitCount= visitCount + 1;
adNumber= (Integer)session.getAttribute(adNumberKey);
adNumber = adNumber+1;
session.setAttribute(visitCountKey,visitCount);
session.setAttribute(adNumberKey, adNumber);
%>
<p>Admission number <input type="text" name="adNum" value= <%=adNumber %> /></p>
答案 0 :(得分:0)
我从你的问题中理解的是,
块引用
您希望跟踪浏览页面的次数并每次生成一个表单编号(自动递增),但问题是您每次重新启动服务器时都会重新初始化该数字。
块引用
首先,您使用会话来存储号码。会话特定于每个用户。不要使用它,因为对于不同的用户,其特定会话中将存在不同的adNumbers。因此,您最终可能会有两个具有相同adNumber的不同用户。
更好的方法是使用每个JVM的ServletContext。因此,所有用户只能有一个adNumber(忽略并发和分布式系统)。
但是,使用ServletContext时,重启服务器后计数也会重置。
更好的方法是将ServletContext与数据库或基于文件的系统结合使用。每次计数递增时,如果数据库不可用,您可以将值存储在数据库或文件中。
当服务器重新启动时,您可以检查上下文中是否存在名为“adNumberKey”的属性,如果没有,则从数据库或基于文件的源读取值并将其加载到上下文对象中。
希望它有所帮助!!