实现登录和注册的功能

1、login页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户登录</title>
    <style type="text/css">
        .error{
            color:red;
            font-size: 14px;
        }
    </style>
    <script type="text/javascript">
        //窗体加载事件
        window.onload = function () {
            //判断在用户点击登录按钮是,文本框中的内容是否为空
            //1.获取登录表单对象
            var loginForm = document.getElementById("loginForm");

            //2.添加提交事件: onblur失去焦点/onfocus获得焦点
            loginForm.onsubmit = function(){
                var inputName = document.getElementsByName("username")[0].value;
                var inputPwd = document.getElementsByName("password")[0].value;

                var flag = true;
                if(inputName.trim()==""){
                    document.getElementsByClassName("error")[0].innerHTML = "用户名不能为空";
                    flag = false;
                }else{
                    document.getElementsByClassName("error")[0].innerHTML = "";
                }

                if(inputPwd.trim()==""){
                    document.getElementsByClassName("error")[1].innerHTML = "密码不能为空";
                    flag = false;
                }else{
                    document.getElementsByClassName("error")[1].innerHTML = "";
                }

                return flag;
            }
        }
    </script>
</head>
<body>
<form id="loginForm" action="/day18/user" method="post">
    <input type="hidden" name="action" value="login"/>
    用户名:<input type="text" name="username"/><span class="error"></span><br/>
    密码:<input type="password" name="password"/><span class="error"></span><br/>
    <input type="submit" value="登录">
</form>
</body>
</html>

2,register页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户登录</title>
    <style type="text/css">
        .error{
            color:red;
            font-size: 14px;
        }
    </style>
    <script type="text/javascript">
        //窗体加载事件
        window.onload = function () {
            //判断在用户点击登录按钮是,文本框中的内容是否为空

        }
    </script>
</head>
<body>
<h1>用户注册</h1>
<hr/>
<form id="registerForm" action="/day18/user" method="post">
    <input type="hidden" name="action" value="register"/>
    用户名:<input type="text" name="username"/><span class="error"></span><br/>
    密码:<input type="password" name="password"/><span class="error"></span><br/>
    性别:<input type="radio" name="gender" value="男">男 &nbsp;<input type="radio" name="gender" value="女">女<br/>
    生日:<input type="text" name="birthday"/><span class="error"></span><br/>
    <input type="submit" value="用户注册">
</form>
</body>
</html>

3、utils包

package com.qf.user.utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DbUtils {
    private static DataSource dataSource;
    private static Properties pt;

    static {
        pt = new Properties();
        InputStream ins = DbUtils.class.getResourceAsStream("/db.properties");
        try {
            pt.load(ins);
            dataSource = DruidDataSourceFactory.createDataSource(pt);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static DataSource getDataSource() {
        return dataSource;
    }

    public static Connection getConnection() {
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void close(ResultSet res, Statement stm, Connection conn) {

        try {
            if (res != null) {
                res.close();
            }
            if (stm != null) {
                stm.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

}

4、entity包

package com.qf.user.entity;

import java.util.Date;

public class User {

    private Integer id;
    private String username;
    private String password;
    private String gender;
    private Date birthday;
    private Boolean lock;
    private Date lastLoginTime;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", gender='" + gender + '\'' +
                ", birthday=" + birthday +
                ", lock=" + lock +
                ", lastLoginTime=" + lastLoginTime +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Boolean getLock() {
        return lock;
    }

    public void setLock(Boolean lock) {
        this.lock = lock;
    }

    public Date getLastLoginTime() {
        return lastLoginTime;
    }

    public void setLastLoginTime(Date lastLoginTime) {
        this.lastLoginTime = lastLoginTime;
    }

    public User(Integer id, String username, String password, String gender, Date birthday, Boolean lock, Date lastLoginTime) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.gender = gender;
        this.birthday = birthday;
        this.lock = lock;
        this.lastLoginTime = lastLoginTime;
    }

    public User() {

    }
}

5、dao包(接口)

package com.qf.user.dao;

import com.qf.user.entity.User;

public interface UserDAO {

    /**
     * 根据用户名查询
     * @param username
     * @return
     */
    public abstract User findByName(String username);

    /**
     * 添加用户
     * @param user
     * @return
     */
    public abstract User add(User user);

}

6、dao包(实现类)

package com.qf.user.dao.impl;

import com.qf.user.dao.UserDAO;
import com.qf.user.entity.User;
import com.qf.user.utils.DbUtils;
import org.apache.commons.dbutils.BasicRowProcessor;
import org.apache.commons.dbutils.BeanProcessor;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

import java.math.BigInteger;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

public class UserDAOImpl implements UserDAO{
    private QueryRunner queryRunner = new QueryRunner(DbUtils.getDataSource());
    private Map<String,String> map = new HashMap<>();

    {
        map.put("last_login_time","lastLoginTime");
    }
    @Override
    public User findByName(String username) {
        String sql = "select * from users where username=?";
        try {
            User user = queryRunner.query(sql,new BeanHandler<User>(User.class,new BasicRowProcessor(new BeanProcessor(map))),username);
            return user;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public User add(User user) {
        String sql = "insert into users values(null,?,?,?,?,1,null);";
        Object[] param = {user.getUsername(),user.getPassword(),user.getGender(),user.getBirthday()};
        try {
            int rows = queryRunner.update(sql,param);
            if(rows > 0){
                sql = "select last_insert_id();";
                BigInteger id = queryRunner.query(sql,new ScalarHandler<BigInteger>());
                user.setId(id.intValue());
                return user;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}

7、service(接口)

package com.qf.user.service;

import com.qf.user.entity.User;

public interface UserService {

    /**
     * 实现用户登录
     * @param username
     * @param password
     * @return
     */
    public abstract User login(String username,String password);

    /**
     * 实现用户注册
     * @param user
     * @return
     */
    public abstract User register(User user);
}

8、service(实现类)

package com.qf.user.service.impl;

import com.qf.user.dao.UserDAO;
import com.qf.user.dao.impl.UserDAOImpl;
import com.qf.user.entity.User;
import com.qf.user.service.UserService;

public class UserServiceImpl implements UserService{
    private UserDAO userDAO = new UserDAOImpl();
    @Override
    public User login(String username, String password) {
       User user = userDAO.findByName(username);
        if(user!=null) {
            if (user.getPassword().equalsIgnoreCase(password)) {
                return user;
            }
        }
        return null;
    }

    @Override
    public User register(User user) {
        return userDAO.add(user);
    }
}

9、servlet包

package com.qf.user.servlet;

import com.qf.user.entity.User;
import com.qf.user.service.UserService;
import com.qf.user.service.impl.UserServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebServlet(urlPatterns = "/user")
public class UserServlet extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");//指定客户端传递给服务器的编码格式
        resp.setContentType("text/html;charset=utf-8");//MIME注意,该行要写在第一行
        String action = req.getParameter("action");//null
        UserService userService = new UserServiceImpl();
        PrintWriter printWriter = resp.getWriter();
        if("login".equalsIgnoreCase(action)){
            //1.获取表单数据
            String username = req.getParameter("username");
            String password = req.getParameter("password");
            //2.用户验证
            User login = userService.login(username, password);
            //3.显示用户信息
            if(login == null){
                printWriter.println("登录失败!用户名密码错误!<a href='/day18/register.html'>请注册</a>");
            }else{
                printWriter.print("恭喜,登录成功!");
                printWriter.println("用户信息如下:"+login);
            }
        }else if("register".equalsIgnoreCase(action)){
            //注册
            System.out.println("用户注册");
            //1.获取用户数据
            String username = req.getParameter("username");
            String password = req.getParameter("password");
            String gender = req.getParameter("gender");

            //2.封装对象
            User user = new User();
            user.setUsername(username);
            user.setPassword(password);
            user.setGender(gender);

            //将字符串转换成Date类型
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            Date birthday = null;
            try {
                birthday =  dateFormat.parse(req.getParameter("birthday"));
            } catch (ParseException e) {
                e.printStackTrace();
            }
            user.setBirthday(birthday);

            //3.用户注册
            User retUser = userService.register(user);

            //4.页面跳转
            printWriter.println("<script>alert('注册成功!');location.href='/day18/login.html';</script>");

        }

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值