根据Java Web 使用Servlet +Mysql 实现简易的登录及注册功能以及项目间的分层

这篇具有很好参考价值的文章主要介绍了根据Java Web 使用Servlet +Mysql 实现简易的登录及注册功能以及项目间的分层。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、代码的分层

1、概述

        一个好的层次划分不仅可以能使代码结构更加清楚,还可以使项目分工更加明确,可读性大大提升,跟回家有利于后期的维护和升级。从另一个角度来看,好的代码分层架构,应该使可以很好的匹配上单一职责原则的。这样就可以降低层与层之间的依赖,还能最大承兑的复用各层的逻辑。

2、分层的好处

  • 高内聚:分层的设计可以简化系统设计,让不同的层专注做某一模块的事
  • 低耦合:层与层之间通过接口或API来交互,依赖方不用知道被依赖方的细节
  • 复用:分层之后可以做到很高的复用
  • 扩展性:分层架构可以让我们更容易做横向扩展

 如果系统没有分层,当业务规模增加或流量增大时我们只能针对整体系统来做扩展。分层之后可以很方便的把一些模块抽离出来,独立成一个系统。

3、建包

我们需要建三个包,分别是:bean、dao、util

        dao层(数据访问层)这里与数据库进行数据的访问,service则是业务逻辑层,与数据访问层进行数据的交互,而controller则是控制层对前端的请求进行处理和响应。
       bean包(实体类)里面都是实体类,更加方便的对数据进行操作。

        uitl包(工具包)则是对经常用到的方法 进行封装。

二、首页的编写

在web项目下建一个index.jsp项目,用来编写首页

index.jsp位置所如下图所示:

servlet编写登录注册页面,java,开发语言

 

我在首页设置两个超链接实现页面跳转,分别指向登录页面和注册页面。

如图下所示:

servlet编写登录注册页面,java,开发语言

 实现代码如下:

<html>
  <head>
    <title>Java Web</title>
  </head>
  <body>
    <a href="Login.jsp"><h2>去登录</h2></a>
    <a href="Enroll.jsp"><h2>去注册</h2></a>
  </body>
</html>

三、前端登录页面的编写

在登录页面中我们需要用到JDBC连接数据库进行数据查询操作(判断用户输入的账号密码是否正确)

首先我们在web项目下建一个Login.jsp项目,用来编写登录页面。

Login.jsp位置如下图所示:

servlet编写登录注册页面,java,开发语言

 登录页面的展示:

servlet编写登录注册页面,java,开发语言

 实现登录页面代码如下:

<html>
<head>
    <title>登录</title>
</head>
<style type="text/css">
    .login-card {
        width: 300px;
        margin: 0 auto;
        padding: 20px;
        border: 1px solid #ccc;
        border-radius: 10px;
        background-color: #e8e8e8;
        box-shadow: 2px 2px 10px #ccc;
    }

    .card-header {
        text-align: center;
        margin-bottom: 20px
    }

    .card-header .log {
        margin: 0;
        font-size: 24px;
        color: black;
    }

    .form-group {
        margin-bottom: 15px;
    }

    label {
        font-size: 18px;
        margin-bottom: 5px;
    }

    input[type="text"], input[type="password"] {
        width: 100%;
        padding: 12px 20px;
        font-size: 16px;
        border: 1px solid #ccc;
        border-radius: 4px;
        box-sizing: border-box;
        transition: 0.5s;
    }

    input[type="submit"] {
        width: 100%;
        background-color: #333;
        color: white;
        padding: 14px 20px;
        margin: 8px 0;
        border: none;
        border-radius: 4px;
        cursor: pointer;
    }

    input[type="submit"]:hover {
        background-color: #ccc;
        color: black;
    }

</style>
<body>
<div class="login-card">
    <div class="card-header">
        <div class="log">登录</div>
    </div>
    <form action="login" method="post">
        <div class="form-group">
            <label for="user">账号:</label>
            <input required="" name="user" id="user" type="text">
        </div>
        <div class="form-group">
            <label for="pwd">密码:</label>
            <input required="" name="pwd" id="pwd" type="password">
        </div>
        <div class="form-group">
            <input value="登录" type="submit">&nbsp;&nbsp;&nbsp;
            <a href="Enroll.jsp">没有账号?去注册</a>
        </div>
    </form>
</div>

</body>
</html>

四、前端注册页面的编写

在注册页面中我们需要用到JDBC连接数据库进行数据的添加操作(通过servlet获取浏览器发出请求中的数据添加到数据库中)

在实现添加数据之前我们先在web项目下建一个Enroll.jsp项目

Enroll.jsp位置如下图所示:

servlet编写登录注册页面,java,开发语言

 注册页面的展示:

servlet编写登录注册页面,java,开发语言

 实现注册页面的代码如下:

<html>
<head>
    <title>注册账号</title>
</head>
<style type="text/css">
    .login-card {
        width: 300px;
        margin: 0 auto;
        padding: 20px;
        border: 1px solid #ccc;
        border-radius: 10px;
        background-color: #e8e8e8;
        box-shadow: 2px 2px 10px #ccc;
    }

    .card-header {
        text-align: center;
        margin-bottom: 20px
    }

    .card-header .log {
        margin: 0;
        font-size: 24px;
        color: black;
    }

    .form-group {
        margin-bottom: 15px;
    }

    label {
        font-size: 18px;
        margin-bottom: 5px;
    }

    input[type="text"], input[type="password"] {
        width: 100%;
        padding: 12px 20px;
        font-size: 16px;
        border: 1px solid #ccc;
        border-radius: 4px;
        box-sizing: border-box;
        transition: 0.5s;
    }

    input[type="submit"] {
        width: 100%;
        background-color: #333;
        color: white;
        padding: 14px 20px;
        margin: 8px 0;
        border: none;
        border-radius: 4px;
        cursor: pointer;
    }

    input[type="submit"]:hover {
        background-color: #ccc;
        color: black;
    }

</style>
<body>
<div class="login-card">
    <div class="card-header">
        <div class="log">注册</div>
    </div>
    <form action="enroll" method="post">
        <div class="form-group">
            <label for="zhangh">添加账号:</label>
            <input required="" name="zhangh" id="zhangh" type="text">
        </div>
        <div class="form-group">
            <label for="pwd">设置密码:</label>
            <input required="" name="pwd" id="pwd" type="password">
        </div>
        <div class="form-group">
            <label for="dell">添加电话:</label>
            <input required="" name="dell" id="dell" type="text">
        </div>
        <div class="form-group">
            <label for="address">添加地址:</label>
            <input required="" name="address" id="address" type="text">
        </div>
        <div class="form-group">
            <input value="注册" type="submit">&nbsp;&nbsp;&nbsp;
            <a href="Login.jsp">已有账号?去注册</a>
        </div>
    </form>
</div>

</body>
</html>

五、登录成功首页的编写

首先我们在web项目下建一个ShouYe.jsp

ShouYe.jsp位置如图下所示:

servlet编写登录注册页面,java,开发语言

 

登录成功首页的展示:

servlet编写登录注册页面,java,开发语言

实现代码如下:

<html>
<head>
  <meta charset="utf-8">
  <title>首页</title>
  <style type="text/css">
    div{
      position: relative;
      width: 360px;
      height: 511px;
    }
    img{
      border-radius: 5px; /* 设置圆角 */
    }
    p{
      width: 500px;
      height: 300px;
      position: absolute;/* 绝对定位 */
      left: 0;
      top: 0;
      background-color: rgba(0 ,0 ,0 , 0.709);
      color: white;
      padding: 10px;
      display: none;/* 隐藏 */
      pointer-events: none; /* 不对鼠标事件做出反应
			}
		</style>
</head>
<body>
<div id="div_1">
  <img src="img/mhl.jpg" alt="">
  <p>
    <strong>简介</strong>
    <span>
					在钱塘开茶铺的赵盼儿惊闻未婚夫、新科谈话欧阳旭要另娶当朝高官之女,不甘命运的她誓要上京讨个公道。在途中她遇到了出自
					权门但生性正直的皇城司指挥顾千帆,并卷入江南一场大案,两人不打不相识从而结缘。赵盼儿凭借智慧解救了被骗婚而惨遭虐待的“江南第一琵琶高手”宋印章与被苛刻
					家人逼得离家出走的豪爽厨娘孙三娘,三位姐妹从此结伴而行,终抵东京见识世间繁华。为了不被另攀高枝的欧阳旭从京城赶走,赵盼儿与宋引章、孙三娘一起历尽艰辛,将小小茶坊一步步发展最大的酒楼,揭露了
					负心人的真面目,收获了各自的真挚感情和人生感悟,也为无数平凡女子推开了一扇平等救赎之门。
				</span>
  </p>
</div>
<script type="text/javascript">
  //获取div标签
  var div_1=document.getElementById("div_1")
  //给div_1绑定事件:onmouseover:鼠标移入的事件
  div_1.onmouseover=function(){
    //将p标签显示出来,故需要将display的值设置为block
    document.querySelector("p").style.display="block"
  }
  // onmouseout:鼠标从元素上移开时触发的事件
  div_1.onmouseout=function(){
    //将p标签隐藏,故需要将display的值设置为none
    document.querySelector("p").style.display="none"
  }
  //onmousemove:鼠标在元素上移动时触发的事件
  div_1.onmousemove=function(){
    document.querySelector("p").style.left=event.offsetX+"px"
    document.querySelector("p").style.top=event.offsetY+"px"
  }
</script>
</body>
</html>

六、异常页面的编写

我们在web项目下建一个Error.jsp

Error.jsp位置如图下所示:

servlet编写登录注册页面,java,开发语言

 出错页面的展示:

servlet编写登录注册页面,java,开发语言

实现出错页面的代码如下:

<html>
<head>
    <title>404</title>
</head>
<body>
<H2>出错了</H2>
<a href="Login.jsp">返回登录界面</a>
</body>
</html>

七、web.xml配置Servlet类

    <!--配置Servlet类-->
    <servlet>
        <!-- 起别名 -->
        <servlet-name>login</servlet-name>
        <!-- servlet类所在的位置:类的全类名就是 包名.类名 -->
        <servlet-class>com.hp.Servlet.Login</servlet-class>
    </servlet>
    <!-- Servlet类的映射:Servlet用来处理哪个请求 -->
    <servlet-mapping>
        <servlet-name>login</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>

八、在bean包下建立一个user实体类

建立user实体类的位置:

servlet编写登录注册页面,java,开发语言

 user实体类中的代码如下:

public class User {
    private Integer uid;
    private String username;
    private String password;
    private String phone;
    private String address;

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    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 getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", phone='" + phone + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

九、在Util包下实现JDBC连接方法

在Util包下建一个JDBCUtil类

JDBCUtil类位置如下:

servlet编写登录注册页面,java,开发语言

 JDBCUtil类中实现 获取连接 和 关闭资源 的代码如下:

public class JDBCUtil {
    private static String driver = "com.mysql.cj.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
    private static String user = "root";
    private static String pwd = "123456";
    private static Connection con = null;
    //测试
    public static void main(String[] args) {
        System.out.println(getCon());
    }
    //获取数据库连接方法
    public static Connection getCon(){
        try {
            //加载驱动
            Class.forName(driver);
            //获取连接
            con = DriverManager.getConnection(url, user, pwd);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //返回连接
        return con;
    }

    //关闭资源方法
    public static void loginClose(ResultSet rs, PreparedStatement pstm, Connection con){
        try {
            if (rs!=null){
                rs.close();
            }
            if (pstm!=null){
                pstm.close();
            }
            if (con!=null){
                con.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

十、实现数据库的操作

首先我们在dao包下建一个UserDao接口类,用来实现登录和注册功能。

UserDao接口类位置如下:

servlet编写登录注册页面,java,开发语言

 UserDao接口类中的代码如下:

public interface UserDao {
    //登录方法
    public User login(String username, String password);

    //注册方法
    public int enroll(User user);
}

然后我们在dao包先再建一个DaoImpl包,再impl包内建一个UserDaoImpl类,用来实现数据库的操作。

UserDaoImpl类位置如下:

servlet编写登录注册页面,java,开发语言

 UserDaoImpl类中的代码如下:

/**
 * 数据库数据类
 */
public class UserDaoImpl implements UserDao {
    //数据库连接对象
    Connection con = null;//连接对象
    //预处理对象
    PreparedStatement pstm = null;//与处理对象
    //结果集对象
    ResultSet rs = null;//结果集对象
    int row ;//受影响的行数
    //实例化对象
    User register = null;

    //数据库登录操作
    public User login (String username,String password){
        User login = null;
        //下面的代码完成的事情: 需要用户名和密码  返回一个user对象
        try {
            //调用util包下的jdbc连接方法
            con = JDBCUtil.getCon();
            //编写SQL语句
            String sql = "select * from t_user where username = ? and password = ?";
            //预处理SQL语句对象
            pstm = con.prepareStatement(sql);
            //传参
            pstm.setObject(1,username);
            pstm.setObject(2,password);
            //获取结果集对象 ,获取结果
            rs = pstm.executeQuery();
            if (rs.next()){
                //实例化对象
                login = new User();
                //获取结果及对象 把数据传入User对象中
                login.setUsername(rs.getString("username"));
                login.setPassword(rs.getString("password"));
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //调用关闭资源方法
            JDBCUtil.loginClose(rs,pstm,con);
        }
        //返回User结果
        return login;
    }

    //数据库注册操作
    @Override
    public int enroll(User register) {
        //下面的代码完成的事情: 获取用户输入的数据添加到数据库中
        try {
            //调用util包下的jdbc连接方法
            con = JDBCUtil.getCon();
            //编写SQL语句
            String sql = "insert into t_user(username,password,phone,address) values(?,?,?,?);";
            //预处理SQL语句对象
            pstm = con.prepareStatement(sql);
            //传参
            pstm.setObject(1,register.getUsername());
            pstm.setObject(2,register.getPassword());
            pstm.setObject(3,register.getPhone());
            pstm.setObject(4,register.getAddress());
            //获取结果集对象 ,获取结果
            row = pstm.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //调用关闭资源的方法
            JDBCUtil.loginClose(null,pstm,con);
        }
        //返回受影响的行数
        return row;
    }
}

十一、登录的业务处理

在Servlet包下建一个Login类用来处理登录业务

Login类位置如图下所示:

servlet编写登录注册页面,java,开发语言

 

Login类内的代码如下:

/**
 * 登录类
 */
public class Login extends HttpServlet {
    //数据库连接对象
    Connection con = null;
    //预处理对象
    PreparedStatement pstm = null;
    //结果集对象
    ResultSet rs = null;
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Login...get");
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Login...post");
        //1.从请求中获取用户提交的参数(数据)
        request.setCharacterEncoding("UTF-8");//设置请求的编码格式为中文
        String user = request.getParameter("user");//根据表单的name属性获取用户输入的值
        String pwd = request.getParameter("pwd");//根据表单的name属性获取用户输入的值

        System.out.println(user);
        System.out.println(pwd);

        //2.业务处理
        //调用数据库类
        UserDaoImpl userDao =new UserDaoImpl();
        //传参
        User user1 = userDao.login(user,pwd);

        //判断是否有该账号
        if (user1!=null){
            //登录成功跳转登录首页
            response.sendRedirect("ShouYe.jsp");
        }else {
            //登录失败跳转错误页面
            response.sendRedirect("Error.jsp");
        }

    }
}

十二、注册的业务处理

在Servlet包下建一个Enroll类用来处理登录业务

Enroll类位置如图下所示:

servlet编写登录注册页面,java,开发语言

 Enroll类内的代码如下:文章来源地址https://www.toymoban.com/news/detail-752593.html

/**
 * 注册类
 */
//设置当前类用来处理 /enroll 的请求
@WebServlet("/enroll")
public class Enroll extends HttpServlet {
    //数据库连接对象
    Connection con = null;
    //预处理对象
    PreparedStatement pstm = null;
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("enroll...get");
        //调用doPost方法
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("enroll...post");
        //设置请求的编码格式为UTF-8格式
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        //设置以文本或网页的形式响应
        response.setContentType("text/html;charset=UTF-8");//已什么样的格式(文本/网页)响应

        //从请求中获取用户提交的参数(数据)
        String zhangh = request.getParameter("zhangh");
        String pwd = request.getParameter("pwd");
        String dell = request.getParameter("dell");
        String address = request.getParameter("address");

        //实例化对象
        User enroll = new User();
        //给实体类user 赋值
        enroll.setUsername(zhangh);
        enroll.setPassword(pwd);
        enroll.setPhone(dell);
        enroll.setAddress(address);

        //实现UserDao接口的UserDaoImpl类
        UserDao userDao = new UserDaoImpl();
        //调用子类接口的enroll方法 返回受影响的行数
        int row = userDao.enroll(enroll);

        //判断受影响的行数大于零注册成功
        if (row>0){
            //注册成功 跳转登录页面
            response.sendRedirect("Login.jsp");
        }else {
            //注册失败 跳转错误页面
            response.sendRedirect("Error.jsp");
        }
    }
}

到了这里,关于根据Java Web 使用Servlet +Mysql 实现简易的登录及注册功能以及项目间的分层的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java servlet 农机租赁网站系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

    一、源码特点     java servlet  农机租赁网站系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助 系统采用 serlvet+dao+bean 模式开发 ,系统具有完整的源代码和数 据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用

    2024年02月02日
    浏览(48)
  • java 宠物在线商城系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

    一、源码特点     java 宠物在线商城系统是一套完善的java web信息管理系统 servlet+dao+bean mvc模式,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S 模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。 java 宠物

    2024年02月20日
    浏览(41)
  • java 课程签到管理系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

    一、源码特点     java 课程签到管理系统是一套完善的java web信息管理系统 采用serlvet+dao+bean,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。 java 课程签

    2024年02月19日
    浏览(36)
  • 毕业设计——java web大作业,通过jsp+servlet实现宿舍管理系统

    宿舍管理系统实现的功能主要分三大类:系统用户的注册登录验证、对宿舍信息的增删改查、对学生信息的增删改查。 系统用户的登录注册验证 登录时,通过用户名和密码判断是否有此用户;注册时,不允许注册相同用户名的用户。为防止多次注册,设置邮箱验证码功能。

    2024年02月03日
    浏览(52)
  • java web期末课程设计 学生成绩管理系统(mysql,jstl+el,Javabean)+增删改查,session域+servlet(基础易理解)

    学生成绩管理系统(源码地址在评论区需要的小伙伴可以看看,大二时做的,做得不太好) 为了更好的学习理解JavaWeb,创建了此系统。此系统可以帮助学习Java web基础,特别是javaweb入门,此系统使用大部分Java web基础知识。Java web课程设计联系了前端的HTML、CSS、JAVASCRIPT、JSP等

    2024年02月09日
    浏览(68)
  • mysql+jdbc+servlet+java实现的学生在校疫情信息打卡系统

    摘 要 I Abstract II 主 要 符 号 表 i 1 绪论 1 1.1 研究背景 1 1.2 研究目的与意义 2 1.3 国内外的研究情况 2 1.4 研究内容 2 2 系统的开发方法和关键技术 4 2.1 开发方法 4 2.1.1 结构化开发方法 4 2.1.2 面向对象方法 4 2.2 开发技术 4 2.2.1 小程序开发MINA框架 4 2.2.2 微信开发者工具 4 2.2.3 Ja

    2024年02月12日
    浏览(37)
  • 【Servlet学习三】实现一个内存版本的简易计算器~

    目录 一、方式1:使用form表单的形式(不推荐) 🌈1、前端代码:HTML文件 🌈2、后端代码:Calculator_form.java文件 🌈3、最终效果 二、方式2:使用ajax形式(最常用重点!!!) 🌈1、前端代码:HTML文件 🌈2、后端代码:Calculator_ajax.java文件 🌈3、最终效果  注意: (1)前端

    2024年02月12日
    浏览(41)
  • 基于Java+Servlet+Mysql的人才招聘网站的设计与实现(附源码 调试 文档)

    摘要 本文介绍了一种基于Servlet人才招聘网站的设计与实现。该系统分为管理员、注册用户和企业用户三种角色,分别具有不同的功能。管理员主要负责用户管理、企业管理、新闻管理、职位管理和简历投递管理等;注册用户和企业在系统中的功能各不相同,注册用户可以查

    2024年02月05日
    浏览(51)
  • Java Web实现案例 :实现用户登录功能

    目录 零、本节学习目标 一、纯JSP方式实现用户登录功能 (一)实现思路 (二)实现步骤 1、创建Web项目  2、创建登录页面 3、创建登录处理页面 4、创建登录成功页面 5、创建登录失败页面 6、编辑项目首页 (三)测试结果 二、JSP+Servlet方式实现用户登录功能 (一)实现思

    2024年02月04日
    浏览(38)
  • Java Web实现用户登录功能

    登录页面login.jsp,输入用户名和密码后,跳转到登录处理页面doLogin.jsp进行业务逻辑处理,登录成功,跳转到登录成功页面success.jsp,否则跳转到登录失败页面failure.jsp。 (二)实现步骤 1、创建Web项目 创建 Java Enterprise 项目,添加Web Application功能 设置项目名与保存位置 单击

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包