javaweb的session.isNew ( )有疑惑,附代码
程序代码:
<%@ page contentType="text/html;charset=GB2312"%>
<%!//处理字符串的方法:
public String codeString ( String s )
{
String str = s;
try
{
byte b[] = str.getBytes ( "ISO-8859-1" );
str = new String ( b );
return str;
} catch ( Exception e )
{
return str;
}
}%>
<HTML>
<BODY>
<Font size=1> <%@ include file="head.jsp"%>
<Font size=1> <%
String string = response.encodeURL ( "userLogin.jsp" );
%>
<P>输入用户名和密码:
<FORM action="<%=string%>" Method="post">
<BR>登录名称<Input type=text name="logname"> <BR>输入密码<Input
type=password name="password"> <BR> <Input type=submit
name="g" value="提交">
</Form> <jsp:useBean id="login" class="a1.Login" scope="session">
</jsp:useBean> <%
//提交信息后,验证信息是否正确:
String message = "" , logname = "" , password = "";
if ( ! ( session.isNew ( ) ) )///////////这里有疑惑,为什么要加session.isNew ( )?
{
logname = request.getParameter ( "logname" );
if ( logname == null )
{
logname = "";
}
logname = codeString ( logname );
password = request.getParameter ( "password" );
if ( password == null )
{
password = "";
}
password = codeString ( password );
}
%> <%
if ( ! ( logname.equals ( "" ) ) )
{
%>
<jsp:setProperty name="login" property="logname" value="<%=logname%>" />
<jsp:setProperty name="login" property="password" value="<%=password%>" /> <%
message = login.getMessage ( );
if ( message == null )
{
message = "";
}
}
%> <%
if ( ! ( session.isNew ( ) ) )
{
if ( message.equals ( "ok" ) )
{
String str = response.encodeURL ( "buybook.jsp" );
response.sendRedirect ( str );
} else
{
out.print ( message );
}
}
%>
</Body>
</HTML>下面是Login.java
程序代码:package a1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Login
{
String logname , password , realname , phone , address;
String success = "false" , message = "";
Connection con;
Statement sql;
ResultSet rs;
public Login ( )
{ // 加载桥接器:
try
{
Class.forName ( "sun.jdbc.odbc.JdbcOdbcDriver" );
} catch ( ClassNotFoundException e )
{
}
}
// 设置属性值、获取属性值的方法:
public void setLogname ( String name )
{
logname = name;
}
public String getLogname ( )
{
return logname;
}
public void setPassword ( String pw )
{
password = pw;
}
public String getPassword ( )
{
return password;
}
public void setRealname ( String name )
{
realname = name;
}
public String getRealname ( )
{
return realname;
}
public void setPhone ( String ph )
{
phone = ph;
}
public String getPhone ( )
{
return phone;
}
public void setAddress ( String ad )
{
address = ad;
}
public String getAddress ( )
{
return address;
}
public String getSuccess ( )
{
return success;
}
// 查询数据库的user表:
public String getMessage ( )
{
try
{
con = DriverManager.getConnection ( "jdbc:odbc:shop" , "" , "" );
sql = con.createStatement ( );
String condition = "SELECT * FROM user WHERE logname = " + "'" + logname + "'";
rs = sql.executeQuery ( condition );
int rowcount = 0;
String ps = null;
while ( rs.next ( ) )
{
rowcount ++ ;
logname = rs.getString ( "logname" );
realname = rs.getString ( "realname" );
ps = rs.getString ( "password" );
phone = rs.getString ( "phone" );
address = rs.getString ( "address" );
}
if ( ( rowcount == 1 ) && ( password.equals ( ps ) ) )
{
message = "ok";
success = "ok";
} else
{
message = "输入的用户名或密码不正确";
success = "false";
}
con.close ( );
return message;
} catch ( SQLException e )
{
message = "输入的用户名或密码不正确";
success = "false";
return message;
}
}
}
这是书上的例题,代码中已经标明疑惑处,session.isNew()
session不是打开留言其对话才新建的么,那么如果是这样的话应该在第一次打开登陆界面的时候session.isNew()是成立的,也就是不应该进入if语句,不能给相应的String的帐号、密码字段赋值,但是实测代码是没问题的,确实能进入到if ( ! ( session.isNew ( ) ) )这个判断语句里面,请问为什么?我哪里理解错了?他原本if ( ! ( session.isNew ( ) ) )是为了判断什么?






