怎么用纯JSP实现用户名是否存在的检测?
我是个彻彻底底的菜鸟,但现在又赶时间,没时间去深学ajax那个,只想用个简单的搜索加判断语句就实现,就是搜索后台数据,判读是否存在这个用户名,如果存在,则弹出个小框框提示,如果不存在,则继续注册
我思路是这样,但是弄了两天多了,就是实现不了,哪位大大能帮帮忙,说下,简单点就行
我的数据库名叫 db_bbs
表名叫 tb_user
用户名 username
[ 本帖最后由 xd922 于 2011-3-24 20:23 编辑 ]
搜索更多相关主题的帖子:
数据库 用户名 时间
----------------解决方案--------------------------------------------------------
首先我们将数据库操作方法发封装在userdao类中
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.lyq.model.User;
/**
* 用户数据库操作类
* @作者 徐逸徽 */
public class UserDao {
/**
* 添加用户
* @param user 用户对象
*/
public void saveUser(User user){
// 获取数据库连接Connection对象
Connection conn = DataBaseUtil.getConnection();
// 插入用户注册信息的SQL语句
String sql = "insert into tb_user(username,password,sex,tel,photo,email) values(?,?,?,?,?,?)";
try {
// 获取PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
//然后我们 对SQL语句的占位符参数进行动态赋值
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
ps.setString(3, user.getSex());
ps.setString(4, user.getTel());
ps.setString(5, user.getPhoto());
ps.setString(6, user.getEmail());
// 执行更新操作
ps.executeUpdate();
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
ps.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
// 关闭数据库连接
DataBaseUtil.closeConnection(conn);
}
}
/**
* 用户登录
* @param username 用户名
* @param password 密码
* @return 用户对象
*/
public User login(String username, String password){
User user = null;
// 获取数据库连接Connection对象
Connection conn = DataBaseUtil.getConnection();
// 根据用户名及密码查询用户信息
String sql = "select * from tb_user where username = ? and password = ?";
try {
// 获取PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
// 对SQL语句的占位符参数进行动态赋值
ps.setString(1, username);
ps.setString(2, password);
// 执行查询获取结果集
ResultSet rs = ps.executeQuery();
// 判断结果集是否有效
if(rs.next()){
// 实例化一个用户对象
user = new User();
// 对用户对象属性赋值
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setSex(rs.getString("sex"));
user.setTel(rs.getString("tel"));
user.setPhoto(rs.getString("photo"));
user.setEmail(rs.getString("email"));
}
// 释放此 ResultSet 对象的数据库和 JDBC 资源
rs.close();
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
ps.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
// 关闭数据库连接
DataBaseUtil.closeConnection(conn);
}
return user;
}
/**
* 判断用户名在数据库中是否存在
* @param username 用户名
* @return 布尔值
*/
public boolean userIsExist(String username){
// 获取数据库连接Connection对象
Connection conn = DataBaseUtil.getConnection();
// 根据指定用户名查询用户信息
String sql = "select * from tb_user where username = ?";
try {
// 获取PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
// 对用户对象属性赋值
ps.setString(1, username);
// 执行查询获取结果集
ResultSet rs = ps.executeQuery();
// 判断结果集是否有效
if(!rs.next()){
// 如果无效则证明此用户名可用
return true;
}
// 释放此 ResultSet 对象的数据库和 JDBC 资源
rs.close();
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
// 关闭数据库连接
DataBaseUtil.closeConnection(conn);
}
return false;
}
}
这是针对你的问题编写的一个javabean 是一个Dao类,希望对你有所帮助
----------------解决方案--------------------------------------------------------
对以上代码进行一些说明:首先我们在用户提交注册信息的时候需要判断所提交的用户名是否已经被注册了,如果我们的用户名已经被注册了,则,我们
不能再次对其进行注册,然,用户名是用户信息的标识,在提交信息的时候我们可以使用userIsExist()进行判断
如果lz想保证用户凭借其信息可以登录则需要对用户信息进行持久化操作就需要在userdao中提供持久化的方法就是下面代码
public void saveUser(User user){
// 获取数据库连接Connection对象
Connection conn = DataBaseUtil.getConnection();
// 插入用户注册信息的SQL语句
String sql = "insert into tb_user(username,password,sex,tel,photo,email) values(?,?,?,?,?,?)";
try {
// 获取PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
//然后我们 对SQL语句的占位符参数进行动态赋值
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
ps.setString(3, user.getSex());
ps.setString(4, user.getTel());
ps.setString(5, user.getPhoto());
ps.setString(6, user.getEmail());
// 执行更新操作
ps.executeUpdate();
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
ps.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
// 关闭数据库连接
DataBaseUtil.closeConnection(conn);
}
}
在注册成功后用户可以通过注册的用户及对应的秘密进行登录,对于程序而言此操作实质上根据用户的用户名和密码查询用户信息,如果查询成功则与数据库进行匹配
这一操作我们用login()方法来实现七代码如下
*/
public User login(String username, String password){
User user = null;
// 获取数据库连接Connection对象
Connection conn = DataBaseUtil.getConnection();
// 根据用户名及密码查询用户信息
String sql = "select * from tb_user where username = ? and password = ?";
try {
// 获取PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
// 对SQL语句的占位符参数进行动态赋值
ps.setString(1, username);
ps.setString(2, password);
// 执行查询获取结果集
ResultSet rs = ps.executeQuery();
// 判断结果集是否有效
if(rs.next()){
// 实例化一个用户对象
user = new User();
// 对用户对象属性赋值
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setSex(rs.getString("sex"));
user.setTel(rs.getString("tel"));
user.setPhoto(rs.getString("photo"));
user.setEmail(rs.getString("email"));
}
// 释放此 ResultSet 对象的数据库和 JDBC 资源
rs.close();
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
ps.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
// 关闭数据库连接
DataBaseUtil.closeConnection(conn);
}
return user;
}
/**
* 判断用户名在数据库中是否存在
* @param username 用户名
* @return 布尔值
*/
public boolean userIsExist(String username){
// 获取数据库连接Connection对象
Connection conn = DataBaseUtil.getConnection();
// 根据指定用户名查询用户信息
String sql = "select * from tb_user where username = ?";
try {
// 获取PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
// 对用户对象属性赋值
ps.setString(1, username);
// 执行查询获取结果集
ResultSet rs = ps.executeQuery();
// 判断结果集是否有效
if(!rs.next()){
// 如果无效则证明此用户名可用
return true;
}
// 释放此 ResultSet 对象的数据库和 JDBC 资源
rs.close();
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
// 关闭数据库连接
DataBaseUtil.closeConnection(conn);
}
return false;
}
}
若有什么疑问请继续跟帖,我会继续关注这个问题!
----------------解决方案--------------------------------------------------------
回复 3楼 tomjava
谢谢,最近一直在做其他的问题,没上来看看,现在正在学习JAVABEAN的用法,等学的差不多了,我再用你的实现一下, ----------------解决方案--------------------------------------------------------