首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

session记录的有关问题,大家帮帮忙

2011-12-18 
session记录的问题,大家帮帮忙本人原意是成功登陆以后就把登陆的人次数加1,但是我发现就算已经登陆的人再

session记录的问题,大家帮帮忙
本人原意是成功登陆以后就把登陆的人次数加1,但是我发现就算已经登陆的人再一次登陆还是可以登陆的,如何才能禁止他只能登陆一次.我用session无法做到,大家帮帮我用session怎么搞.
源代码:
<%@   page   contentType= "text/html;charset=GB2312 "   %>
<%@   page   import= "java.sql.* "   %>
<%@   page   import= "java.util.* "%>
<html>
<link   href= "css/wenzi.css "   rel= "stylesheet "   type= "text/css ">

<body>
<%  
String   driverName= "com.microsoft.jdbc.sqlserver.SQLServerDriver ";
String   dbURL= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=login ";
String   userName= "sa ";
String   passWord= " ";
Connection   con=null;
Statement   sql=null;
ResultSet   rs=null;
String   Name=request.getParameter( "username ");
byte[]   b=Name.getBytes( "ISO-8859-1 ");
Name=new   String(b);
String   PassWord=request.getParameter( "password ");
byte[]   b1=PassWord.getBytes( "ISO-8859-1 ");
PassWord=new   String(b1);
int   sum=0;
String   str=null;
try
{
Class.forName(driverName);
}
catch(ClassNotFoundException   e)
{
out.print(e.toString());
}
try
{
con=DriverManager.getConnection(dbURL,userName,passWord);
sql=con.createStatement();
String   execute= "select   *   from   login   where   UserName= ' "+Name+ " '   and   PassWord= "+PassWord+ " ";
rs=sql.executeQuery(execute);
if(rs.next())
{
sum=rs.getInt( "count ");
sum++;

%>
<table   width= "42% "   border= "0 "   align= "center ">
    <tr>  
        <td   class= "wenzi ">
<div   align= "center "> 个人信息 </div> </td>
    </tr>
    <tr>  
        <td   class= "wenzi ">
<div   align= "center "> 登陆成功,你是第 <%=sum%> 次登陆 </div> </td>
    </tr>
    <tr>  
        <td> &nbsp; </td>
    </tr>
</table>
<%
String   execute1= "update   login   set   count= "+sum+ "   where   UserName= "+ " ' "+Name+ " ' ";
sql.executeUpdate(execute1);
}
else
{
out.print( " <font   size=1> 登陆错误 ");
}
con.close();
}
catch(SQLException   e)
{
out.print(e.toString());
}
  %>
</body>
</html>

[解决办法]
怎么还有这么一句话--登陆成功,你是第 <%=sum%> 次登陆?
你不是只想让用户登陆一次的吗?
用户表中还有sum字段,什么意思呢?
---------------------------------
本人原意是成功登陆以后就把登陆的人次数加1,但是我发现就算已经登陆的人再一次登陆还是可以登陆的,如何才能禁止他只能登陆一次.我用session无法做到,大家帮帮我用session怎么搞.
[解决办法]
你是想把整个站点的总登陆次数加一,还是想把该用户在该站点的总登陆次数加一?

无论是前者还是后者,如果不把上次的数字记录下来,一旦服务器重启,数据都会消失,所以这个时候一般会使用数据库记录这个次数,有的系统使用文件。所以是总登陆次数的话,一定要从数据库里面取。每登陆一次,更新数据库加一。

至于如何让用户不能同时登陆两次。jsp里有个application对象,它的生命周期和web服务器的生命周期一样,只要服务器不重启,它都会存在不会变。所以可以把登陆了的用户记录在里面,登出的时候再消去,用户登陆的时候在里面找当前用户有没有被记录,如果记录了表示已经登陆,然后就不能登陆了。不过这都存在异常退出的问题,所以最好也同时把当前用户的session也存进去,同时也要判断session是否有效,有效才不能登陆。当然也可以通过数据库记录用户的登陆情况,需要解决的问题是一样的。

热点排行