后端开发日志(一):用户注册

大致要求是做一个台灯项目,三个专业各有分工,我们被派去做一个在线购物网站。组内本专业一共三名同学,都是妹子……看到这个情况我的直觉就是“糟糕,要去做后台开发了”……预感没错,果然是这个样子。

7月7、8两天,老师讲了一个简单的JavaWeb例子:用户登录。数据库里存有username和password,匹配成功之后才可以登录,跳转到欢迎界面,显示用户名。

架构如下:

|-jspServlet

  |-src

    |-jspservlet.dao//存放接口

      UserDAO.java

    |-jspservlet.dao.impl//存放接口的实现类

      UserDAOImpl.java

    |-jspservlet.db//数据库连接操作

      DBConnect.java

    |-jspservlet.servlet//用来连接前后端,不知道叫什么

      Loginservlet.java

    |-jspservlet.vo//用户属性,getter setter什么的,感觉像是JavaBean

      User.java

  |-WebRoot

    |-WEB-INF

      web.xml

    login.jsp

    error.jsp

    welcome.jsp

登录比较容易上手,老师昨天提了新要求:注册。

因为注册同样用到User类中的属性,所以我没有对其进行改动。UserDAO是接口,同样也没有改,而是添加了一个新的实现类UserDAOImpReg,连接部分添加新类Registerservlet.

package jspservlet.dao.impl;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import jspservlet.dao.UserDAO;
import jspservlet.db.DBConnect;
import jspservlet.vo.User;

public class UserDAOImpReg implements UserDAO{
    public int queryByUsername(User user) throws Exception {
        int flag = 1;
        String sql = "select * from userinfo where username=?";
        String sqlAdd="insert into javawebdb.userinfo values(?,?)";
        PreparedStatement pstmt = null;
        DBConnect dbc = null;
        //数据库连接
        try{
            dbc = new DBConnect();
            pstmt = dbc.getConnection().prepareStatement(sql);
            pstmt.setString(1,user.getUsername());
            //查询与输入信息对应的元组
            ResultSet rs = pstmt.executeQuery();
            //检验是否与数据库中已有用户名冲突
            if(rs.next()) {
                if(rs.getString("username").equals(user.getUsername())) {
                    flag = 0;
                }
            }
            if(flag == 1){
            //若不冲突,则向数据库中写入新的用户信息
                pstmt = dbc.getConnection().prepareStatement(sqlAdd);
                pstmt.setString(1,user.getUsername());
                pstmt.setString(2,user.getPassword());
                pstmt.executeUpdate();
            }
            rs.close();
            pstmt.close();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            //关闭数据库连接
            dbc.close();
        }
        return flag;
    }
}
            

之前一直没有加 executeUpdate() ,信息写不进去,后来才发现问题出在这里。

下午折腾折腾搞了一个产品数据库,准备做查询功能。

唉,主要是以前只学了Java,没有接触过JavaWeb,所以上手有些慢。不过万事开头难,明天估计就会顺利很多。

posted on 2015-07-10 18:40  小眼儿是挨踢人士  阅读(415)  评论(0编辑  收藏  举报

导航