简单粗暴JavaWeb-第四篇:通过数据库实现用户注册、登录

来源:互联网 发布:免费升级至windows 10 编辑:程序博客网 时间:2024/06/08 17:30

现在我们通过jdbc进行数据库操作,将第三步的登录功能升级为登录、注册两个功能,并且基于mysql数据库,经过这一步,最最基本的工程就有雏形了,后面就可以根据需求进行优化,譬如使用mybatis(方便好多)等。


1、修改登录注册界面

首先,改进首页index.jsp,增加注册功能,代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>        首页    </title></head><body>    <form action="" method="post">        <input name="userName" type="text" />        <br/>        <input name="password" type="password"/>        <br/>        <input id="submitButton"  type="submit" value="登录" onclick="javascript:this.form.action='login.html'"/>        <input id="registerButton" type="submit" value="注册" onclick="javascript:this.form.action='register.html'"/>    </form></body></html>

界面如图



2、引入jdbc包及实现查询和插入方法

引入jdbc包,在pom.xml文件中添加相关依赖

<!--jdbc链接mysql的包--><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency>  <groupId>mysql</groupId>  <artifactId>mysql-connector-java</artifactId>  <version>5.1.38</version></dependency>

然后编写jdbc的方法,主要有两个

//适用于select操作public ResultSet executeQuery(String sql){    Connection connection = null;    Statement statement = null;    ResultSet resultSet = null;    try {        Class.forName("com.mysql.jdbc.Driver");        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/ahellospringmvcdemodb","root","nopassword");        statement = connection.createStatement();        resultSet = statement.executeQuery(sql);    } catch (ClassNotFoundException e) {        e.printStackTrace();    } catch (SQLException e){        e.printStackTrace();    }    return resultSet;}//适用于insert、update、delete等操作public int executeUpdate(String sql){    Connection connection = null;    Statement statement = null;    int result = -1;    try{        Class.forName("com.mysql.jdbc.Driver");        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/ahellospringmvcdemodb","root","
nopassword
"); statement = connection.createStatement(); result = statement.executeUpdate(sql); return result; } catch(ClassNotFoundException e){ e.printStackTrace(); } catch (SQLException e){ e.printStackTrace(); } return result;}


关于jdbc执行的流程可以查询其他相关资料,大体流程是对数据库进行连接,然后执行sql获得结果并处理,关闭链接。这里为了方便,直接采用了ResultSet作为返回结果,正常使用的时候应该将其转化为其他容器类型,如果在获取ResultSet之后把数据库链接关闭了,那这个ResultSet就失效了。另外这里采用了一些硬编码,只是为了方便~


3、实现登录、注册的service方法

登录和注册按键会提交不同的url请求,由不同controller进行控制,以注册为例,实现过程的service如下:

public CheckRegisterEnum checkRegisterParam(String userName,String password){    StringBuilder sql = new StringBuilder("");    sql.append("select * from tbl_user_info where user_name=\'")            .append(userName)            .append("\'");    ResultSet resultSet = null;    JDBCServiceImpl jdbcService = new JDBCServiceImpl();    resultSet = jdbcService.executeQuery(sql.toString());    try {        if (resultSet.next()){            return CheckRegisterEnum.DUPLICATE_USERNAME;        }        else{            StringBuilder registerSql = new StringBuilder("");            registerSql.append("insert into tbl_user_info (user_name,password) value (\'")                    .append(userName)                    .append("\',\'")                    .append(password)                    .append("\')");            System.out.println(registerSql);            if (jdbcService.executeUpdate(registerSql.toString())==1){                return CheckRegisterEnum.REGISTER_SUCCESS;            }        }    } catch (SQLException e){        e.printStackTrace();    }    return CheckRegisterEnum.FAIL_SYS;}

根据结果不同返回用户名占用、注册成功等信息,同时在数据库中进行相应的更新。



阅读全文
0 0
原创粉丝点击