Servlet---Realize simple user login and other functions

Servlet—Realize simple user login and other functions

Different functional businesses are placed under different layers to achieve separation of functional businesses and code logic

1, the entity layer (create the entity class corresponding to the table)

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

Dao layer (specify the functions of the business)
1. Interface

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. Implementation class

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 layer (implement business code function)
1. Interface

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. Implementation class

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 layer (forward and backend data transfer)

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");
        }
    }
}

Front desk interfaces

Registration interface

<%@ 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>

log in page

<%@ 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>

Login success interface

<%@ 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>

Modify password interface

<%@ 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>

Logout interface

<%@ 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>

[Note: It also includes the BaseDao interface and the BaseImpl implementation class and the db.properties file written in the previous article. I will not write it out here. If you want to read it, you can read the previous blog or download the project directly (uploaded) )】

Guess you like

Origin blog.csdn.net/qq_43288259/article/details/114595845