JAVA问题,请问这句User user =(User)session.getAttribute("user");的具体意思和作用,能删掉这句吗?
和这个方法publicUsercheckUser(Stringusername,Stringpassword){try{pstmt=conn.prepareStateme...
和这个方法
public User checkUser(String username,String password){
try{
pstmt = conn.prepareStatement("select * from usertable where username=?and password=?");
pstmt.setString(1, username);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
User user = new User();
while(rs.next()){
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
return user;
}
return null;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
的意思, pstmt.setString(1, username);
pstmt.setString(2, password);
其中这两句是什么意思,我有点不能理解,希望高手们的详细解答,感谢 展开
public User checkUser(String username,String password){
try{
pstmt = conn.prepareStatement("select * from usertable where username=?and password=?");
pstmt.setString(1, username);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
User user = new User();
while(rs.next()){
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
return user;
}
return null;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
的意思, pstmt.setString(1, username);
pstmt.setString(2, password);
其中这两句是什么意思,我有点不能理解,希望高手们的详细解答,感谢 展开
展开全部
User user =(User)session.getAttribute("user");这句的意思就是所从Session中取出key为user的对象。然后强制转换为User对象。然后赋值给user
和这个方法
public User checkUser(String username,String password){
try{
pstmt = conn.prepareStatement("select * from usertable where username=?and password=?");
//这句的意思是从连接中获得一个preparestatement
pstmt.setString(1, username);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
User user = new User();
while(rs.next()){//查找知道的User
user.setId(rs.getInt(1))
//将获得的ResultSet中的第一个参数赋值给user对象的id。下面两个的意思类似
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
return user;//返回User对象
}
return null;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
这个方法的意思就是查找出你给定的User对象,其中username和password是你指定的username和password
pstmt.setString(1, username);//这一句和下一句一起解释,
//他的意思是把你pstmt中的sql语句中的第一个“?”号用这个username代替,那么下一句的意思就是什么你应该知道了吧
pstmt.setString(2, password);
和这个方法
public User checkUser(String username,String password){
try{
pstmt = conn.prepareStatement("select * from usertable where username=?and password=?");
//这句的意思是从连接中获得一个preparestatement
pstmt.setString(1, username);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
User user = new User();
while(rs.next()){//查找知道的User
user.setId(rs.getInt(1))
//将获得的ResultSet中的第一个参数赋值给user对象的id。下面两个的意思类似
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
return user;//返回User对象
}
return null;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
这个方法的意思就是查找出你给定的User对象,其中username和password是你指定的username和password
pstmt.setString(1, username);//这一句和下一句一起解释,
//他的意思是把你pstmt中的sql语句中的第一个“?”号用这个username代替,那么下一句的意思就是什么你应该知道了吧
pstmt.setString(2, password);
展开全部
User user =(User)session.getAttribute("user");//意思是从页面的session中读取一下,是不是已经通过验证了,如果已经通过验证,user就会有值,如果没有通过验证,user=null。这样做是为了防止重复验证。
pstmt.setString(1, username);
这句话和上面的pstmt = conn.prepareStatement("select * from usertable where username=?and password=?");对应,这个sql语句中有几个“?”,就应该有几个 pstmt.setString(),按照顺序把“?”替换成相应的值,以供sql执行,否则的话,sql就不完整。
之所以不直接拼成sql,是因为使用prepareStatement可以把这句sql的解析保存起来,下次执行的时候速度会很快。比直接执行sql要快。一般用在需要重复使用的sql中,比如上面的登录sql,肯定是要多次使用的。
pstmt.setString(1, username);
这句话和上面的pstmt = conn.prepareStatement("select * from usertable where username=?and password=?");对应,这个sql语句中有几个“?”,就应该有几个 pstmt.setString(),按照顺序把“?”替换成相应的值,以供sql执行,否则的话,sql就不完整。
之所以不直接拼成sql,是因为使用prepareStatement可以把这句sql的解析保存起来,下次执行的时候速度会很快。比直接执行sql要快。一般用在需要重复使用的sql中,比如上面的登录sql,肯定是要多次使用的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、User user =(User)session.getAttribute("user"); 是从Session中获取名称为user的值,一般用于登录后的身份验证!
2、pstmt = conn.prepareStatement("select * from usertable where username=?and password=?");中的两个问号 通过:
pstmt.setString(1, username);
pstmt.setString(2, password);
赋值
2、pstmt = conn.prepareStatement("select * from usertable where username=?and password=?");中的两个问号 通过:
pstmt.setString(1, username);
pstmt.setString(2, password);
赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-07-04
展开全部
select * from usertable where username=?and password=?
这不是打了两个问号吗,这是占位符,后面给这两个问号赋实际的置,pstmt.setString(1, username);
pstmt.setString(2, password);
这是定位参数或者占位参数查询
这不是打了两个问号吗,这是占位符,后面给这两个问号赋实际的置,pstmt.setString(1, username);
pstmt.setString(2, password);
这是定位参数或者占位参数查询
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-07-04
展开全部
这个和你自己写完整的sql语句一样,pstmt.setString(1, username); ,你用?占为了就在后面不上占位的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询