当前位置:   article > 正文

java登录界面 sql数据库_JavaWeb连接SQLServer数据库并完成一个登录界面及其功能设计。...

java创建控制层用户登录界面数据库在

一、JDBC连接SQLserver数据库的步骤:

1.下载SQLserver的JDBC驱动文件——Microsoft JDBC Driver 4.0 for SQL Server

2.例如下载得到的文件是sqljdbc_4.0.2206.100_chs.exe,解压文件,将解压缩文件中的sqljdbc4.jar放到eclipse-workspace\User_Message(新建的JavaWeb项目)\WebContent\WEB-INF\lib目录下

3.加载JDBC驱动程序:在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String  className)实现,成功加载后,会将Driver类的实例注册到DriverManager类中

示例语句:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

4.创建连接对象:要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象, 该对象就代表一个数据库的连接,使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码,其中url定义了连接数据库时的协议、子协议、数据源标识,协议——在JDBC中总是以jdbc开始,子协议——是桥连接的驱动程序或是数据库管理系统名称,数据源标识——标记找到数据库来源的地址与连接端口。

示例语句:

String user="sa";

String password="woshizcy0919";

String url=

"jdbc:sqlserver://127.0.0.1:1433;DatabaseName=User_DB";

Connection connection=DriverManager.getConnection(url, user, password);

5.准备SQL语句:

示例语句:

String sql="select count(*) from t_user where username=?";

6.执行SQL语句:先将SQL语句赋给preparedStatement对象,下面有两种执行SQL语句的方法executeQuery 、executeUpdate

(1)ResultSet executeQuery():执行查询数据库的SQL语句,返回值为一个结果集(ResultSet)对象。

(2)int executeUpdate():执行INSERT、UPDATE或DELETE语句以及SQL DDL语句(如:CREATE TABLE和DROP TABLE等),并更新数据库,返回值为本次操作影响的行数,即记录数。

示例语句:

PreparedStatement preparedStatement=connection.prepareStatement(sql);

preparedStatement.setString(1, user.getUsername());

resultSet=preparedStatement.executeQuery();

preparedStatement.executeUpdate();

7.操作结果集对象:

结果集中包含符合SQL语句查询条件的所有行,即所有记录,并且它通过一套get方法提供了对这些行中数据的访问,使用结果集对象(resultSet)的访问方法获取数据。

(1)resultSet.next():读取结果集中的下一行,即下一条记录。

(2)resultSet.getInt(int index)

resultSet.getInt(String columName):

通过索引或者列名来获得查询结果集中的某一列的值。

示例语句:

//例:现有表User:列有id,name

String sql="select * from User";

ResultSet resultSet= null;

resultSet=preparedStatement.executeQuery(sql);while(resultSet.next)

{

resultSet.getInt(1)//等价于resultSet.getInt("id");

resultSet.getString(2)//等价于resultSet.getInt("name");

}

8.关闭JDBC对象:

示例语句:

DBUtil.close(resultSet);

DBUtil.close(preparedStatement);

DBUtil.close(connection);

二、登录界面及其功能设计

1.对数据库操作方法的接口

packagecom.jaovo.msg.dao;importjava.util.List;importcom.jaovo.msg.model.User;public interfaceIUserDao

{public voidadd(User user);public void delete(intid);public voidupdate(User user);public User load(intid);publicUser load(String username);public Listload();

}

2.实现接口的类

packagecom.jaovo.msg.dao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.List;importcom.jaovo.msg.Util.DBUtil;importcom.jaovo.msg.Util.UserException;importcom.jaovo.msg.model.User;public class UserDaoImpl implementsIUserDao

{public voidadd(User user)

{//获得连接的对象

Connection connection=DBUtil.getConnection();//准备sql语句

String sql="select count(*) from t_user where username=?";//创建语句传输对象

PreparedStatement preparedStatement=null;

ResultSet resultSet=null;try{

preparedStatement=connection.prepareStatement(sql);

preparedStatement.setString(1, user.getUsername());//接收结果集

resultSet=preparedStatement.executeQuery();//遍历结果集

while(resultSet.next())

{if(resultSet.getInt(1)>0)

{throw new UserException("用户已存在!");

}

}

sql="insert into t_user(username,nickname,password) values(?,?,?)";

preparedStatement=connection.prepareStatement(sql);

preparedStatement.setString(1, user.getUsername());

preparedStatement.setString(2, user.getNickname());

preparedStatement.setString(3, user.getPassword());

preparedStatement.executeUpdate();//重写底层代码:

/*sql="insert into t_user(id,username,userpassword,nickname)values('"+user.getId()+"','"+user.getUsername()+"','"+user.getPassword()+"','"+user.getNickname()+"')";

Statement stmt;

Connection con=DBUtil.getConnection();

stmt=con.createStatement();

stmt.executeUpdate(sql);*/

//重写结束

}catch(SQLException e)

{

e.printStackTrace();

}finally{//关闭JDBC对象

DBUtil.close(resultSet);

DBUtil.close(preparedStatement);

DBUtil.close(connection);

}

}public void delete(intid)

{//获得连接的对象

Connection connection=DBUtil.getConnection();//准备sql语句

String sql="delete from t_user where id=?";//创建语句传输对象

PreparedStatement preparedStatement=null;try{

preparedStatement=connection.prepareStatement(sql);

preparedStatement.setInt(1, id);

preparedStatement.executeUpdate();

}catch(SQLException e)

{

e.printStackTrace();

}finally{

DBUtil.close(preparedStatement);

DBUtil.close(connection);

}

}public voidupdate(User user)

{//获得连接的对象

Connection connection=DBUtil.getConnection();//准备sql语句

String sql="delete from t_user where id=?";//创建语句传输对象

PreparedStatement preparedStatement=null;try{

preparedStatement=connection.prepareStatement(sql);

preparedStatement.setString(1, user.getUsername());

preparedStatement.setString(2, user.getNickname());

preparedStatement.setInt(3, user.getId());

preparedStatement.executeUpdate();

}catch(SQLException e)

{

e.printStackTrace();

}finally{

DBUtil.close(preparedStatement);

DBUtil.close(connection);

}

}public User load(intid)

{//获得连接的对象

Connection connection=DBUtil.getConnection();//准备sql语句

String sql="select * from t_user where id=?";//创建语句传输对象

PreparedStatement preparedStatement=null;

ResultSet resultSet=null;

User user=null;try{

preparedStatement=connection.prepareStatement(sql);

preparedStatement.setInt(1, id);

resultSet=preparedStatement.executeQuery();while(resultSet.next())

{

user=newUser();

user.setId(id);

user.setUsername(resultSet.getString("username"));

user.setPassword(resultSet.getString("password"));

user.setNickname(resultSet.getString("nickname"));

}

}catch(SQLException e)

{

e.printStackTrace();

}finally{

DBUtil.close(resultSet);

DBUtil.close(preparedStatement);

DBUtil.close(connection);

}returnuser;

}publicUser load(String username)

{//获得连接的对象

Connection connection=DBUtil.getConnection();//准备sql语句

String sql="select * from t_user where username=?";//创建语句传输对象

PreparedStatement preparedStatement=null;

ResultSet resultSet=null;

User user=null;try{

preparedStatement=connection.prepareStatement(sql);

preparedStatement.setString(1, username);

resultSet=preparedStatement.executeQuery();while(resultSet.next())

{

user=newUser();

user.setId(resultSet.getInt("id"));

user.setUsername(username);

user.setPassword(resultSet.getString("password"));

user.setNickname(resultSet.getString("nickname"));

}

}catch(SQLException e)

{

e.printStackTrace();

}finally{

DBUtil.close(resultSet);

DBUtil.close(preparedStatement);

DBUtil.close(connection);

}returnuser;

}public Listload()

{//获得连接的对象

Connection connection=DBUtil.getConnection();//准备sql语句

String sql="delete from t_user where id=?";//创建语句传输对象

PreparedStatement preparedStatement=null;

ResultSet resultSet=null;

List users=new ArrayList();

User user=null;try{

preparedStatement=connection.prepareStatement(sql);

resultSet=preparedStatement.executeQuery();while(resultSet.next())

{

user=newUser();

user.setId(resultSet.getInt("id"));

user.setUsername(resultSet.getString("username"));

user.setNickname(resultSet.getString("nickname"));

user.setPassword(resultSet.getString("password"));

users.add(user);

}

}catch(SQLException e)

{

e.printStackTrace();

}finally{

DBUtil.close(resultSet);

DBUtil.close(preparedStatement);

DBUtil.close(connection);

}returnusers;

}//检查密码是不是错误

public booleancheck(User user)

{boolean flag=false;

Connection connection=DBUtil.getConnection();

String sql="select * from t_user where username=?";

PreparedStatement preparedStatement= null;

ResultSet resultSet=null;try{

preparedStatement=connection.prepareStatement(sql);

preparedStatement.setString(1,user.getUsername());

resultSet=preparedStatement.executeQuery();while(resultSet.next())

{if(resultSet.getString("password").equals(user.getPassword().toString().trim()))

{

flag=true;break;

}

}

}catch(SQLException e)

{

e.printStackTrace();

}returnflag;

}

}

3.用户模型类

packagecom.jaovo.msg.model;public classUser

{private intid;privateString username;privateString nickname;privateString password;public intgetId()

{returnid;

}public void setId(intid)

{this.id =id;

}publicString getUsername()

{returnusername;

}public voidsetUsername(String username)

{this.username =username;

}publicString getNickname()

{returnnickname;

}public voidsetNickname(String nickname)

{this.nickname =nickname;

}publicString getPassword()

{returnpassword;

}public voidsetPassword(String password)

{this.password =password;

}

}

4.工具类(用于连接数据库和关闭JDBC对象)

packagecom.jaovo.msg.Util;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;public classDBUtil

{public staticConnection getConnection()

{try{//加载驱动

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();

System.out.println("驱动加载成功!");

}catch(ClassNotFoundException | InstantiationException |IllegalAccessException e)

{

System.out.println("驱动加载失败!");

e.printStackTrace();

}

String user="sa";

String password="woshizcy0919";

String url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=User_DB";

Connection connection=null;try{//创建链接对象connection

connection=DriverManager.getConnection(url, user, password);

System.out.println("数据库连接成功!");

}catch(SQLException e)

{

System.out.println("数据库连接失败!");

e.printStackTrace();

}returnconnection;

}//关闭资源的方法

public static voidclose(Connection connection)

{if(connection!=null)

{try{

connection.close();

}catch(SQLException e)

{

e.printStackTrace();

}

}

}public static voidclose(PreparedStatement preparedStatement)

{if(preparedStatement !=null)

{try{

preparedStatement.close();

}catch(SQLException e)

{

e.printStackTrace();

}

}

}public static voidclose(ResultSet resultSet)

{if(resultSet!=null)

{try{

resultSet.close();

}catch(SQLException e)

{

e.printStackTrace();

}

}

}

}

5.异常抛出类

packagecom.jaovo.msg.Util;public class UserException extendsRuntimeException

{publicUserException()

{super();

}public UserException(String message, Throwable cause, boolean enableSuppression, booleanwritableStackTrace)

{super(message, cause, enableSuppression, writableStackTrace);

}publicUserException(String message, Throwable cause)

{super(message, cause);

}publicUserException(String message)

{super(message);

}publicUserException(Throwable cause)

{super(cause);

}

}

6.jsp界面代码

(1)登录界面

欢迎来到登录界面用户登录账号:密码:

(2)登录验证界面

用户身份验证

//接收客户端传递过来的参数Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");if(username== null||"".equals(username.trim())||password== null||"".equals(password.trim()))

{

request.setAttribute("error","用户名和密码不能为空!");%>

user.setUsername(username);

user.setPassword(password);

UserDaoImpl userDao= newUserDaoImpl();

try

{if(userDao.load(username)==null)

{

thrownewUserException();

}if(userDao.check(user)==true)

{%>登录成功!

密码输入错误!

}

catch(UserException e)

{%>

该用户名不存在

(3)用户注册界面

用户添加页面用户名称 : 用户密码:用户昵称:

(4)注册结果界面

用户添加页面

//接收客户端传递过来的参数Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");Stringnickname=request.getParameter("nickname");if(username== null||"".equals(username.trim())||password== null||"".equals(password.trim())){

request.setAttribute("error","用户名和密码不能为空!");%>

user.setUsername(username);

user.setPassword(password);

user.setNickname(nickname);

UserDaoImpl userDao= newUserDaoImpl();

try{

userDao.add(user);%>注册成功!

返回

用户列表

发生错误 :

7.运行结果界面截图:

(1)登录界面

bbafe4aa4f5c2503ea01b1c4b8b1f88a.png

(2)登录成功

14ce4992b5e31725e9cc8fb0b2c77f3d.png

(3)用户名或密码为空

0417a40bf9a13d9081445756e8827dfd.png

(4)用户名不存在

0e3d9c92097ab505d3b353e969eeff0b.png

(5)密码错误

832849c0e2d78f729e2968fc61832682.png

(6)注册界面

58cd32e3353bf0d3dcb7744711ac5e83.png

(7)注册成功

99d814c246755ed4ddc98ad2fc42ab6a.png

(8)注册重复

67a37a6434b8a7a675af8f3a770b8cea.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/66972
推荐阅读
相关标签
  

闽ICP备14008679号