Tomcat+Servlet+mysql登录注册

1:先写登录的jsp文件  ,文件名叫做index.jsp

<%--
  Created by IntelliJ IDEA.
  User: Acer
  Date: 2022/9/28
  Time: 21:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>登录</title>
  </head>
  <body>
  <a href="Register.jsp">注册</a>
  <form  action="LogoServet" method="post">
    账号:<input type="text" name="id" ><br>

    密码: <input type="password"  name="pwd"><br>

    <input type="submit" value="登录"><input type="reset" value="重新输入">
  </form>
  </body>
</html>

2.再写注册的jsp文件,文件名叫Register.jsp

<%--
  Created by IntelliJ IDEA.
  User: Acer
  Date: 2022/9/28
  Time: 21:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>注册</title>
  </head>

  <body>
  <form  action="RegisterServet" method="post">
    用户名:<input type="text" name="name" ><br>

    密&nbsp&nbsp码: <input type="password"  name="pwd"><br>
    确认密码: <input type="password"  name="pwd2"><br>

    <input type="submit" value="注册"><input type="reset" value="重新输入">
  </form>
  </body>
</html>

3:再写转跳3秒钟,文件名叫jump.jsp

<%--
  Created by IntelliJ IDEA.
  User: Acer
  Date: 2022/9/24
  Time: 17:36
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>跳转页面</title>
    <script type="text/javascript">
        function fun1(){
            var span1 = document.getElementById("span1");
            var count = span1.innerText;
            if (count>0){
                count--;
                span1.innerText=count;
            }
        }
    window.onload= function(){
        window.setInterval("fun1()",1000);
    }

    </script>

</head>
<body>
登录成功.<span id="span1" style="color:red">3</span>秒钟自动跳转.如果没有跳转,请<a href="main.jsp">点击</a>

<%
response.setHeader("refresh","3;url=main.jsp");
%>

</body>
</html>

4:main的页面可以是你的网页主页,我只写了个登录成功

 

5在项目中的src,新建一个叫com的软件包,然后再里面新建一个controller的软件包

 

6.在controller中写登录的Select,文件名叫做LogoServet

package com.controller;

import com.db.Database;
import com.model.Userdata;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

@WebServlet("/LogoServet")
public class LogoServet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
       int id=Integer.parseInt(request.getParameter("id"));
        String pwd=request.getParameter("pwd");
       PrintWriter out=response.getWriter();
       //out.println("你的账号:"+id+"你的密码:"+pwd);

        try {
            Database database = new Database();
            Userdata userdata = database.login(id,pwd);
            if (userdata == null) {
            out.println("该用户不存在或者密码错误"+"<a href=\"index.jsp\"> 返回登录</a>");
            }else {
               out.println("欢迎登录"+userdata.getName()+"点击转跳-->"+"<a href=\"jump.jsp\"> 进入网页</a>");
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
            out.println("注册失败");
        }

    }

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

7:在controller中写注册的Servlet,文件名叫RegisterServet

package com.controller;

import com.db.Database;
import com.model.Userdata;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

@WebServlet("/LogoServet")
public class LogoServet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
       int id=Integer.parseInt(request.getParameter("id"));
        String pwd=request.getParameter("pwd");
       PrintWriter out=response.getWriter();
       //out.println("你的账号:"+id+"你的密码:"+pwd);

        try {
            Database database = new Database();
            Userdata userdata = database.login(id,pwd);
            if (userdata == null) {
            out.println("该用户不存在或者密码错误"+"<a href=\"index.jsp\"> 返回登录</a>");
            }else {
               out.println("欢迎登录"+userdata.getName()+"点击转跳-->"+"<a href=\"jump.jsp\"> 进入网页</a>");
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
            out.println("注册失败");
        }

    }

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

8:在com的软件包下新建一个加db的软件包,在包里新建一个叫Database文件,这个文件有连接数据库和查询数据和添加数据,我自己的数据库名叫web001,记住一定要用MySQL的jar包

package com.db;

import com.model.Userdata;

import java.sql.*;
import java.util.ArrayList;

public class Database {
    Connection conn=null;
    public  Database() throws ClassNotFoundException {

        Class.forName("com.mysql.jdbc.Driver");


        try {
            this.conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/web001?serverTimeZone=GMT%288","root","123456");
        } catch (SQLException e) {
            e.printStackTrace();
        }
       // System.out.println(conn);
    }
    public  void  showConnect(){
        if (conn==null){
            System.out.println("数据库连接失败");
        }else {
            System.out.println("数据库连接成功");
        }

    }
    //关闭链接
    public  void close() throws SQLException {
        conn.close();
    }
    //在login表里添加数据
    public  void inser(String name,String pwd) throws SQLException {
        PreparedStatement prep = conn.prepareStatement("insert into web001.login value(null,?,?) ");
        prep.setString(1,name);
        prep.setString(2,pwd);
        prep.execute();
    }
    public ArrayList<Userdata> getAllUser() throws SQLException {
        ArrayList<Userdata> uselist = new ArrayList<>();
        PreparedStatement prep = conn.prepareStatement("select * from web001.login");
        prep.execute();
        ResultSet resultSet=prep.executeQuery();
        while (resultSet.next()){
            int myid=resultSet.getInt("id");
            String myname=resultSet.getString("name");
            String mypwd=resultSet.getString("pwd");
            uselist.add(new Userdata(myid,myname,mypwd));
        }
        return uselist;
    }
    //在表里查询数据
    public  Userdata getUser(int id) throws SQLException {

            PreparedStatement prep = conn.prepareStatement("select * from web001.login where id=?");
            prep.setInt(1,id);
            prep.execute();
            ResultSet resultSet=prep.executeQuery();
            if (resultSet.next()){
                int myid=resultSet.getInt("id");
                String myname=resultSet.getString("Name");
                String mypwd=resultSet.getString("passwrod");
                return  new Userdata(myid,myname,mypwd);
            }


        return null;
    }
    public  Userdata login(int id,String pwd) throws SQLException {
        PreparedStatement prep = conn.prepareStatement("select  web001.login.passwrod from web001.login where id=? ");
        prep.setInt(1,id);
        prep.execute();
        ResultSet resultSet = prep.executeQuery();
        if (resultSet.next()) {
            String mypwd=resultSet.getString("passwrod");
            if (pwd.equals(mypwd)) {
            return getUser(id);
            }else {
                return null;
            }
        }else {
            return null;
        }
    }
}

9:新建一个叫做web001的数据库

 10.在web001的数据库中新建一个叫做login的表内容如下

 然后一个简单的登录注册转跳主页就做好了

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用 IDEA + Tomcat + Servlet 实现登录注册的示例代码。 在这个示例代码中,我们使用了 MySQL 数据库来存储用户的信息。在使用该示例代码之前,您需要先在本地安装 MySQL 数据库,并创建一个名为 `user_info` 的数据库,在该数据库中创建一个名为 `users` 的表,表结构如下: ``` CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; ``` 该表用于存储用户的用户名和密码。 在开始编写代码之前,您需要先下载并安装 MySQL Connector/J,该驱动程序用于连接 MySQL 数据库。 接下来,我们将编写一个登录页面和一个注册页面。当用户提交登录或注册表单时,我们将使用 Servlet 处理用户的请求,并将用户的信息存储到数据库中。 登录页面 (`login.jsp`) 的代码如下: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login Page</title> </head> <body> <h1>Login Page</h1> <form action="login" method="post"> <label>Username:</label> <input type="text" name="username"><br> <label>Password:</label> <input type="password" name="password"><br> <input type="submit" value="Login"> </form> <p>Not registered yet? <a href="register.jsp">Register here</a>.</p> </body> </html> ``` 注册页面 (`register.jsp`) 的代码如下: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Register Page</title> </head> <body> <h1>Register Page</h1> <form action="register" method="post"> <label>Username:</label> <input type="text" name="username"><br> <label>Password:</label> <input type="password" name="password"><br> <input type="submit" value="Register"> </form> <p>Already registered? <a href="login.jsp">Login here</a>.</p> </body> </html> ``` 接下来,我们将编写 Servlet 处理用户的登录和注册请求。在 IDEA 中,可以使用 “File → New → Project” 命令创建一个新的 Web 应用程序项目,并选择 “JavaEE” 和 “Web Application” 作为项目类型。 在项目中,我们创建一个名为 `LoginServlet` 的 Java 类,用于处理用户的登录请求。代码如下: ```java package com.example; 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.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @WebServlet("/login") public class LoginServlet extends HttpServlet { private static final String DB_URL = "jdbc:mysql://localhost:3306/user_info"; private static final String DB_USER = "root"; private static final String DB_PASSWORD = "password"; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); PrintWriter out = response.getWriter(); try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { out.println("Error: unable to load driver class!"); return; } Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); String sql = "SELECT * FROM users WHERE username=? AND password=?"; stmt = conn.prepareStatement(sql); stmt.setString(1, username); stmt.setString(2, password); rs = stmt.executeQuery(); if (rs.next()) { out.println("Login successful!"); } else { out.println("Invalid username or password!"); } } catch (SQLException e) { out.println("Error: " + e.getMessage()); } finally { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { out.println("Error: " + e.getMessage()); } } } } ``` 在上面的代码中,我们首先获取用户提交的用户名和密码,然后使用 JDBC 连接到 MySQL 数据库,并查询表中是否存在该用户的信息。如果存在,则输出 “Login successful!”;否则,输出 “Invalid username or password!”。 接下来,我们创建一个名为 `RegisterServlet` 的 Java 类,用于处理用户的注册请求。代码如下: ```java package com.example; 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.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; @WebServlet("/register") public class RegisterServlet extends HttpServlet { private static final String DB_URL = "jdbc:mysql://localhost:3306/user_info"; private static final String DB_USER = "root"; private static final String DB_PASSWORD = "password"; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); PrintWriter out = response.getWriter(); try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { out.println("Error: unable to load driver class!"); return; } Connection conn = null; PreparedStatement stmt = null; try { conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); String sql = "INSERT INTO users (username, password) VALUES (?, ?)"; stmt = conn.prepareStatement(sql); stmt.setString(1, username); stmt.setString(2, password); stmt.executeUpdate(); out.println("Registration successful!"); } catch (SQLException e) { out.println("Error: " + e.getMessage()); } finally { try { if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { out.println("Error: " + e.getMessage()); } } } } ``` 在上面的代码中,我们首先获取用户提交的用户名和密码,然后使用 JDBC 连接到 MySQL 数据库,并将用户的信息插入到表中。如果插入成功,则输出 “Registration successful!”;否则,输出错误信息。 最后,我们需要将登录页面和注册页面链接到 Servlet 上。在 `web.xml` 文件中,添加以下内容: ```xml <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.example.LoginServlet</servlet-class> </servlet> <servlet> <servlet-name>RegisterServlet</servlet-name> <servlet-class>com.example.RegisterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>RegisterServlet</servlet-name> <url-pattern>/register</url-pattern> </servlet-mapping> ``` 在上面的配置中,我们将 `LoginServlet` 映射到 `/login` URL 上,将 `RegisterServlet` 映射到 `/register` URL 上。 现在,您可以使用 Tomcat 运行该应用程序,并在浏览器中打开登录页面 (`http://localhost:8080/login.jsp`) 或注册页面 (`http://localhost:8080/register.jsp`) 进行测试了。 希望这个示例代码能够帮助您使用 IDEA + Tomcat + Servlet 实现登录注册的小项目。如果您有任何疑问或需要进一步帮助,请随时回复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值