Servlet---实现简单的用户登录等功能

Servlet—实现简单的用户登录等功能

不同功能业务放在不同层下,实现功能业务和代码逻辑分开

1、entity层(创建表对应的实体类)

public class User {			//自己根据表属性创建需要的成员变量
    private int user_id;
    private String user_name;
    private String password;
...				//这里省略getters,setters方法
}

dao层(规定业务有哪些功能)
1、接口

package dao;

import entity.User;

public interface UserDao {
    //注册
    boolean createUser(String username,String password);
    //登录
    boolean login(String username,String password);
    //查询用户名是否存在
    boolean queryUserByName(String username);
    //登录方法
    boolean queryUserNamePwd(String username,String password);
    //修改密码
    boolean changePwd(String username,String oldPassword,String newPassword);
    //删除用户
    boolean deleteUser(String username,String password);
}

2、实现类

package dao.impl;

import dao.UserDao;
import entity.User;

import java.sql.SQLException;

public class UserDaoImpl extends BaseDaoImpl implements UserDao {

    private final String DRIVER = "com.mysql.jdbc.Driver";
    private final String URL = "jdbc:mysql://192.168.XXX.XXX:3306/bank";		//注意这里改成你的
    private final String USERNAME = "root";
    private final String PASSWORD = "root";

    @Override
    public boolean createUser(String username,String password) {
        getConn(DRIVER,URL,USERNAME,PASSWORD);
        String sql = "insert into user (user_name,password)values(?,?)";
        return update(sql,username,password);
    }

    @Override
    public boolean login(String username, String password) {
        return false;
    }

    @Override
    public boolean queryUserByName(String username) {
        String sql = "select * from user where user_name=?";
        getConn(DRIVER,URL,USERNAME,PASSWORD);
        query(sql,username);
        try {
            if(getRs().next()){
                return true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

    @Override
    public boolean queryUserNamePwd(String username, String password) {
        String sql = "select user_name,password from user where user_name=? and password=? limit 1";
        getConn(DRIVER,URL,USERNAME,PASSWORD);
        query(sql,username,password);
        try {
            if(getRs().next()){
                return true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

    @Override
    public ArrayList<User> queryAll() {
        return null;
    }

    @Override
    public boolean changePwd(String username, String oldPassword,String newPassword) {
        getConn(DRIVER,URL,USERNAME,PASSWORD);
        String sql1 = "select * from user where user_name=? and password = ?";
        query(sql1,username,oldPassword);
        try {
            if(getRs().next()){
                String sql2 = "update user set password = ? where user_name = ?";
                update(sql2,newPassword,username);
                return true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

    @Override
    public boolean deleteUser(String username, String password) {
        getConn(DRIVER,URL,USERNAME,PASSWORD);
        String sql = "delete from user where user_name = ? and password = ? limit 1";
        return update(sql,username,password);
    }
}

service层(实现业务代码功能)
1、接口

package service;

import entity.User;

public interface UserService {
    boolean register(String username, String password,String cfmPwd);
    boolean login(String username, String password);
    boolean modify(String username, String oldPassword,String newPassword);
    boolean delete(String username, String password);
}

2、实现类

package service.Impl;

import dao.UserDao;
import dao.impl.UserDaoImpl;
import entity.User;
import service.UserService;

/**
 * @Author shall潇
 * @Date 2021/3/9
 * @Description     业务代码放在 service层
 */
public class UserServiceImpl implements UserService {
    UserDao dao = new UserDaoImpl();

    @Override
    public boolean register(String username, String password, String cfmPwd) {	//注册
        if(null==username || null==password)
            return false;
        boolean exists = dao.queryUserByName(username);
        if(exists)                     //如果用户名已存在,不允许创建
            return false;
        if(!password.equals(cfmPwd))
            return false;
        if("马化腾".equals(username))  //实际这里应该是白名单
            return false;
        return dao.createUser(username,password);
    }

    @Override
    public boolean login(String username, String password) {		//登录
        if(null==username || null==password)
            return false;
        return dao.queryUserNamePwd(username,password);
    }

    @Override
    public boolean modify(String username, String oldPassword,String newPassword) {	//修改密码
        if(null==username || null==oldPassword |null == newPassword)
            return false;
        return dao.changePwd(username,oldPassword,newPassword);
    }

    @Override
    public boolean delete(String username, String password) {			//注销
        if(null==username || null==password)
            return false;
        return dao.deleteUser(username,password);
    }
}

Servlet层(前后台传递数据)

package servlet;

import service.Impl.UserServiceImpl;
import service.UserService;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @Author shall潇
 * @Date 2021/3/9
 * @Description
 */
public class UserServlet extends HttpServlet {
    UserService service = new UserServiceImpl();

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

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

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        if("create".equals(req.getParameter("type"))){
            create(req,resp);
        }else if("login".equals(req.getParameter("type"))){
            login(req,resp);
        }else if("updatepwd".equals(req.getParameter("type"))){
            update(req,resp);
        }else if("delete".equals(req.getParameter("type"))){
            delete(req,resp);
        }
    }

    void create(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
        String user = req.getParameter("user");
        String pwd = req.getParameter("pwd");
        String cfmPwd = req.getParameter("cfmPwd");
        boolean isSuccess = service.register(user, pwd, cfmPwd);
        if(isSuccess){  //注册成功跳转到登录页面
            req.getRequestDispatcher("/login/home.jsp").forward(req,resp);
        }else {
            //req.getRequestDispatcher("/login/createUser.jsp").forward(req,resp);
            resp.sendRedirect("/login/createUser.jsp");
        }
    }

    void login(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
        String user = req.getParameter("user");
        String pwd = req.getParameter("pwd");
        boolean isSuccess = service.login(user, pwd);
        if(isSuccess){              //登录成功跳转
            resp.sendRedirect("/login/Login.jsp");
        }else {
            req.getRequestDispatcher("/login/home.jsp").forward(req,resp);
        }
    }

    void update(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
        String user = req.getParameter("username");
        String oldpwd = req.getParameter("oldpassword");
        String newpwd = req.getParameter("newpassword");
        boolean isSuccess = service.modify(user,oldpwd,newpwd);
        if(isSuccess){
            resp.sendRedirect("/login/home.jsp");
        }else {
            req.getRequestDispatcher("/login/updatepwd.jsp").forward(req,resp);
        }

    }

    void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String user = req.getParameter("user");
        String pwd = req.getParameter("pwd");
        boolean isSuccess = service.delete(user,pwd);
        if(isSuccess){
            req.getRequestDispatcher("login/createUser.jsp").forward(req,resp);
        }else {
            resp.sendRedirect("/login/delete.jsp");
        }
    }
}

前台各个界面

注册界面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册页面</title>
    <style>
        #warp{text-align:center}
    </style>
</head>
<body background="wallhaven-zxqwmg.jpg">
<div id="warp">
<form action="/doCreate" >
    <h1>欢迎来到注册界面</h1>
    <hr/>
    <p><input type="text" name="type" value="create" hidden></p>
    <p>用户名<input type="text" name="user"></p>
    <p>密&nbsp&nbsp&nbsp&nbsp码<input type="password" name="pwd"></p>
    <p>确认密码<input type="password" name="cfmPwd"></p>
    <p><input type="submit" value="注册"></p>
</form>
</div>>
</body>
</html>

登录页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录首页</title>
    <style>
        #warp{text-align:center}
    </style>
</head>
<body background="wallhaven-zxqwmg.jpg">
<div id="warp">
<form action="/Login">
    <h1>欢迎来到登录页面</h1>
    <p><input type="text"  name="type" value="login" hidden></p>
    <p>用户名<input type="text" name="user"></p>
    <p>密&nbsp&nbsp&nbsp&nbsp码<input type="password" name="pwd"></p>
    <p><input type="submit"></p>
</form>
</div>
</body>
</html>

登录成功界面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录成功页面</title>
    <style>
        #warp{text-align:center}
    </style>
</head>
<body background="wallhaven-zxqwmg.jpg">
<h1>欢迎登录!!!</h1>
<div id="warp">
<a href="updatepwd.jsp" >修改密码</a>
<a href="delete.jsp" >注销</a>
<%--<a href="updatepwd.jsp" >查询所有用户</a>--%>
</div>
</body>
</html>

修改密码界面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>修改密码</title>
    <style>
        #warp{text-align:center}
    </style>
</head>
<body>
<div id="warp">
<form action="/Login">
    <h1>修改密码页面</h1>
    <p><input type="text" name="type" value="updatepwd" hidden></p>
    <p>用户名<input type="text" name="username"></p>
    <p>原密码<input type="text" name="oldpassword"></p>
    <p>新密码<input type="password" name="newpassword"></p>
    <p><input type="submit"></p>
</form>
</div>
</body>
</html>

注销界面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注销页面</title>
    <style>
        #warp{text-align:center}
    </style>
</head>
<body>
<div id="warp">
<form action="/doCreate">
    <h1>用户注销页面</h1>
    <p><input type="text"  name="type" value="delete" hidden></p>
    <p>用户名<input type="text" name="user"></p>
    <p>密&nbsp&nbsp&nbsp&nbsp码<input type="password" name="pwd"></p>
    <p><input type="submit"></p>
</form>
</div>
</body>
</html>

【注意:还包括之前文章写的BaseDao接口和BaseImpl实现类和db.properties文件等,在这里就不一一写出了,想要看可以翻看之前的博客,或者直接下载这个工程(已经上传)】

猜你喜欢

转载自blog.csdn.net/qq_43288259/article/details/114595845