Jsp、Servlet、MySQL实现网页注册、查找账号操作

本文档介绍了如何使用JSP、Servlet和MySQL实现网页上的账号注册和查询功能。首先,讲解了环境配置,包括IDEA、JDK、Tomcat和Navicat的安装及破解。接着,创建了名为`test`的数据库和`user`表。然后,详细阐述了JavaWeb项目的创建过程,包括jsp网页编写、各类文件夹的用途、数据库连接类、实体类、DAO类、Service类和Servlet类的编写。最后,展示了项目的部署和运行结果。
摘要由CSDN通过智能技术生成

作者想说的话

本篇作品为自己为了学业所做作业,如果有帮助到你,一起加油。如果有什么说错的,因为本人也没查什么资料,纯凭自我理解的,还请见谅。
(Tomcat连接、部署、JavaWeb项目初始创建部署请查看之前的博客,文章地址:https://blog.csdn.net/Zzve_Takui/article/details/107030034)

环境配置要求

1、IDEA(本人用的是2019.2,大家可下载别的新版本)
2、JDK1.8(推荐用此版本)
3、Tomcat 8.5.32
下载链接:https://pan.baidu.com/s/1E_Pnnnhu3usyXVwcMjPXwA
提取码:1i8j
4、Navicat for MySQL
下载链接:https://pan.baidu.com/s/1uXImn-3UrE4TVEAXzq67MA
提取码:j2fd
5、MySQL Server(这边是用的是5.7.10,最好版本号是5开头)

具体上述软件的安装使用配置,等后期有空了会补上推文的,真的猴急可以私聊我啊。

Navicat for MySQL安装破解

1、安装

傻瓜式安装一键到位,按下一步就完事了
在这里插入图片描述

2、破解

安装完毕后双击压缩包中的另外一个程序
在这里插入图片描述
根据如下图片选择路径,点击打开,破解完毕!
在这里插入图片描述

创建user数据表

关于MySQL安装,其他人的博客写的更加详细,可以查看,这边后期可能会写一篇关于MySQL安装的博客。

1、新建数据库(此处创建test数据库)

打开安装好的Navicat for MySQL
在这里插入图片描述
在这里插入图片描述

2、新建user表

在这里插入图片描述
填写如下数据
在这里插入图片描述
在这里插入图片描述
新建成功!!
在这里插入图片描述
填写数据
在这里插入图片描述

项目新建各种文件夹及其介绍

(注意:本次项目为上篇文章的延续,具体项目创建、搭建可看上篇文章,文章地址:https://blog.csdn.net/Zzve_Takui/article/details/107030034)
在这里插入图片描述

开始编写项目

前期准备

1、添加依赖包

jstl 1.2依赖包
下载链接:https://pan.baidu.com/s/1yXk2G1jJxHTjaDa-Af_UGQ
提取码:7qw4

mysql-connector-java-5.1.47-bin依赖包
下载链接:https://pan.baidu.com/s/1a7nK6FCMM4l3ZIDaZ-abcw
提取码:q9pn
在这里插入图片描述

2、启动依赖包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

jsp网页编写

在这里插入图片描述

1、添加账户网页

在这里插入图片描述
代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册页面</title>
</head>
<body>
    <form action="/add?method=save" method="post">
        name:<input name="name" type="text">
        password:<input name="password" type="password">
        age:<input name="age" type="text">
        <input type="submit" value="注册">
    </form>
</body>
</html>

2、查询账户网页

在这里插入图片描述
代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>查询</title>
</head>
<body>
<form action="/add?method=search" method="post">
    <input type="text" name="name" placeholder="请输入需要查找的名字">
    <input type="submit" value="查找">
</form>
</body>
</html>

3、页面跳转

记得在index.jsp主页添加两个a标签实现跳转。
在这里插入图片描述

类的编写

1、编写数据库连接(utill)类编写

数据库连接类中应包括连接方法getConnection(),以及使用结束后的关闭方法closeAll()。
在这里插入图片描述
代码如下:

package com.util;

import java.sql.*;

public class DBUtil {
    //数据库连接方法
    public static Connection getConnection() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("连接数据库");
        //创建连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/abc?useSSL=false", "root", "123456");
        return conn;
    }
    //关闭接口方法
    public static void closeAll(ResultSet rs, Statement stmt, Connection conn) throws SQLException {
        if (rs != null) rs.close();
        if (stmt != null) stmt.close();
        if (conn != null) conn.close();
    }
}

2、底层(modle)实体类编写

实体类即为,数据库中表元素为被调用,所需封装在java类中的对象。
我们需要:
1、添加类中的对象及其属性
2、创建get、set方法
3、重写toString()方法
在这里插入图片描述

3、底层(dao)操作执行方法类编写

操作方法执行类,需要添加对数据库执行操作的方法,其中应该包括:添加账户、账户查询(用于登录)。
在这里插入图片描述
在这里插入图片描述
类代码如下:

package com.dao;

import com.modle.User;
import com.util.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UserDao {
    public int add(User user) throws SQLException {
        Connection connection = null;
        PreparedStatement pstmt = null;
        int count = 0;
        try {
            connection = DBUtil.getConnection();     //创建数据库连接
            //获得执行sql语句的Statement对象
            pstmt = connection.prepareStatement("INSERT into user(name,password,age) values (?,?,?)");
            pstmt.setString(1, user.getName());
            pstmt.setString(2, user.getPassword());
            pstmt.setString(3, user.getAge());
            //上方执行sql语句后,返回结果
            count = pstmt.executeUpdate();
            System.out.println("add操作:" + count);
            return count;
        } catch (Exception e) {
            e.printStackTrace();        //异常抛出
        } finally {
            DBUtil.closeAll(null, pstmt, connection);   //最后finally关闭所有创建的接口
        }
        return count;
    }

    public User selectByName(String name) {
        ResultSet rs = null;
        Connection connection = null;
        PreparedStatement pstmt = null;
        DBUtil util = new DBUtil();
        User user = new User();
        try {
            connection = util.getConnection();
            pstmt = connection.prepareStatement("select * from user where name = ?");
            pstmt.setString(1, name);

            rs = pstmt.executeQuery();
            //处理结果集
            while (rs.next()) {
                user.setId(rs.getInt(1));
                user.setName(rs.getString(2));
                user.setPassword(rs.getString(3));
                user.setAge(rs.getString(4));
            }
            return user;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                util.closeAll(rs, pstmt, connection);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return user;
    }
}

4、逻辑层(Service)类编写

逻辑层就是三层架构中的一个概念,简单来说就是找个地方执行底层数据库操作类的一个地方,别问为什么要多此一举,和你吃了饭之后才去上厕所一个道理。
在这里插入图片描述

5、中间层(Servlet)实现层类编写

实现层代码包括了dopost主要执行模块、自定义添加方法insert、自定义查询方法search。
其中dopost主要执行模块中主要是通过从jsp页面中接受method所传输出来的字段值,来判断操作是添加还是查询。
代码如下:

package com.Servlet;

import com.service.UserService;
import com.modle.User;

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

public class AddServlet extends HttpServlet {
    UserService userService = new UserService();

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("执行了doPost");
        String method = req.getParameter("method");   //语句意思:从jsp页面中接受名为method的字段值
        if (method.equals("save")) {	//如若传进来的method字段置为save,则使用添加方法
            try {
                insert(req, resp);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else if (method.equals("search")) {		//如若传进来的method字段置为search,则使用search方法
            try {
                search(req, resp);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public void insert(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException, SQLException {
        User user = new User();
        //将提交上来的表单元素输入给user
        user.setName(req.getParameter("name"));
        user.setPassword(req.getParameter("password"));
        user.setAge(req.getParameter("age"));
        System.out.println(user);
        //add方法成功后将传出1,对其捕获
        int count = userService.add(user);
        if (count > 0) {
            resp.sendRedirect("/index.jsp");    //成功则跳转至首页
        } else {
            resp.getWriter().write("<h2>Failed!</h2>");     //失败则添加一个h2标签
        }
    }

    public void search(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException, SQLException {
        //撰写编码格式,防止中文乱码
        resp.setContentType("text/html;charset=GBK");
        resp.setContentType("text/html");
        //获取表单提交上来的name
        String name = req.getParameter("name");
        //执行查询语句方法
        User user = userService.selectByName(name);
        if (user != null) {     //如果user不为空,即存在此名字的用户,进行输出
            resp.getWriter().write("用户名:" + user.getName() +
                    "密码:" + user.getPassword() +
                    "年龄:" + user.getAge());
        } else {    //否则user为空,不存在
            resp.getWriter().write("错误!");
        }
    }
}

web文件部署

对web文件进行部署配置,实现地址部署。
在这里插入图片描述
添加的代码如下:

    <servlet>
        <servlet-name>addServlet</servlet-name>
        <servlet-class>com.Servlet.AddServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>addServlet</servlet-name>
        <url-pattern>/add</url-pattern>
    </servlet-mapping>

结果运行

index主页面:在这里插入图片描述
insert注册页面:
在这里插入图片描述
注册结果
在这里插入图片描述
search页面:
在这里插入图片描述
查询结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值