javaWeb:登录页面的实现1:利用mysql和连接池c3p0,servlet

1.目的:

输入用户名,密码,在数据库表中进行索引,索引到,则
跳转页面否则返回原来的页面.

2.登录页面的: login.jsp

<form action="/demo17_war/apple" method="get">//点击表单提交,页面跳转:网址:http://localhost:8080/demo17_war/index.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>登入页面</title>
</head>
<body>


<form action="/demo17_war/apple" method="get">

    <table border="1" width="500">



        <tr>
            <td>用户名:</td>
            <td><input type="textn" name="username"></td>
        </tr>


        <tr>
            <td>密码:</td>
            <td><input type="textn" name="password"></td>


        </tr>


        <tr>
            <td>验证码:</td>
            <td><input type="text" name="checkcode" size="6">


            </td>


        </tr>
        <tr>

            <td> <input type="checkbox" name="remember" value="true">    </td>
            <td>记住用户名</td></tr>
        <tr>


            <td  colspan="2"><input  type="submit" value="登入"></td>

        </tr>


    </table>




</form>









</body>
</html>

效果:
在这里插入图片描述

2.创建:User类:

private String password; //
private String username;

先创建成员变量,再生成get(),set(),方法
get():是返回成员变量值
set(); 传入值赋值给成员变量 ()

在这里插入图片描述

package com.example.demo17;

public class User {


  
    private String password;
    private String username;


   

    public String getPassword() {
        return password;
    }

   

    public void setPassword(String password) {
        this.password = password;
    }

    public void setUsername(String username) {
        this.username = username;


    }

    public String getUsername() {
        return username;
    }


}

3.创建UserModel类:

目的: 实现java和数据库的连接,且查找值。password,username.

queryRunner = new QueryRunner(JDBCUtils.getDataSource());//驱动了数据库,还连接了数据库


  User esistUser = queryRunner.query("select * from user where username=?and password=?", new BeanHandler<User>(User.class), user.getUsername(),user.getPassword());
//使用了:dbutils.QueryRunner,dbutils.handlers.BeanHandler.

//dbutil jar包
//查询user.getUsername(),user.getPassword(),这两个值,在数据库查询

注意:new BeanHandler<User>(User.class),写法
把值赋值给: esistUser(User对象)
// return esistUser;  如果:找到了返回一个User对象值,如果找不到返回
null值
package com.example.demo17;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import java.sql.SQLException;

public class UserModel {


public static void main(String[] args){



}


public User login(User user) throws SQLException {

    QueryRunner queryRunner = null;
    try {
        queryRunner = new QueryRunner(JDBCUtils.getDataSource());//驱动了数据库,还连接了
    } catch (Exception e) {
        e.printStackTrace();

        System.out.println("错误!");
    }
    User esistUser = queryRunner.query("select * from user where username=?and password=?", new BeanHandler<User>(User.class), user.getUsername(),user.getPassword());
//如果找不到就返回:null,判断语句


    return esistUser;


}}

4.创建 loginServlet extends HttpServlet:类

里面有doget(){},//每刷新类(这个网址)一次页面,就执行一次doget(){}

创建User类对象 existUser = userModel.login(user);//如果:查询成功,就返回类对象的地址值给existUser.
否则返回null,给existUser.

    if(existUser==null){ //如果:existUser==null,就执行重定向,跳转原来的页面,

            resp.sendRedirect("/demo17_war/login.jsp");//requset重定向

        }

        else {//如果不为null,就跳转成功页面。
            resp.sendRedirect("/demo17_war/index.jsp"); //resp的重定向
        }
package com.example.demo17;

import javax.servlet.ServletContext;
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 loginServlet extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //super.doGet(req, resp);(这里不能写,报错405)

//resp.getWriter().println("Success!");
//String username= ServletContext.g
        //String password=servletContext.getInitParameter("password");
        String username=req.getParameter("username");
        String  password=req.getParameter("password");
        System.out.println(username);
        System.out.println(password);

User user=new User();
user.setUsername(username); //封装
user.setPassword(password);
String eee=user.getUsername();
System.out.println(eee);

UserModel userModel=new UserModel();


        User existUser= null;
        try {
            existUser = userModel.login(user);

            System.out.println(existUser);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
            System.out.println("错误!");
        }


        if(existUser==null){

                resp.sendRedirect("/demo17_war/login.jsp");//requset重定向

            }

            else {

                resp.sendRedirect("/demo17_war/index.jsp"); //resp的重定向
            }


        }






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

5.效果图:

输入:
usernane:111
password:444
页面跳转原来的页面。
在这里插入图片描述

在这里插入图片描述
输入:
username:77,password:4,页面成功跳转
在这里插入图片描述
成功
在这里插入图片描述
数据库:表
在这里插入图片描述

6.c3p0-configxml配置:

<?xml version="1.0" encoding="UTF-8" ?>
<c3p0-config>
    <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/new_schema</property>

        <property name="password">your-password</property>
        <property name="user">root</property>

        <property name="initialPoolSize">10</property>
        <property name="maxIdleTime">30</property>
        <property name="maxPoolSize">100</property>
        <property name="minPoolSize">10</property>
        <property name="maxStatements">200</property>

    </default-config>

    <!-- This app is massive! -->
    <named-config name="oracel">
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/new_schema</property>
        <property name="user">root</property>
        <property name="password">your-password</property>
    </named-config>


    <named-config name="apple">
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/new_schema</property>
        <property name="user">root</property>
        <property name="password">your-password</property>
    </named-config>
</c3p0-config>

7.放入jar包注意位置:

c3p0-config.xml:放入resources目录下中(才能被找到)

在webapp目录下的WEB-INF中,创建一个lib包(目录),
在把jar包,放入·lib里面:
c3p0-0.9.2.1.jar //连接池
common-dbutils-1.7.jar //dbutils
mchange-commons-java-0.2.3.4jar //c3p0辅助工具
mysql-connector-java-8.027.jar //数据库驱动
在这里插入图片描述

7.web.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    




    <servlet>
        <servlet-name>demo8</servlet-name>
        <servlet-class>com.example.demo17.loginServlet</servlet-class>


    </servlet>


    <servlet-mapping>
        <servlet-name>demo8</servlet-name>
        <url-pattern>/apple</url-pattern>
    </servlet-mapping>
</web-app>

之后补充

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 要实现简易的注册登录功能,需要以下步骤: 1. 创建一个数据库,包含用户表,其中包括用户名和密码字段。 2. 在Java中创建一个Web应用程序,并使用JDBC连接MySQL数据库。 3. 创建注册页面登录页面,分别包括用户名和密码输入框以及提交按钮。 4. 在注册页面中,将用户输入的用户名和密码插入到MySQL数据库中。可以使用PreparedStatement对象来执行插入操作。 5. 在登录页面中,将用户输入的用户名和密码与数据库中的记录进行比较。如果用户名和密码匹配,则将用户重定向到主页或其他受保护的页面。 下面是一个简单的示例代码来实现这个功能: 1. 创建一个名为“users”的表,其中包含“username”和“password”字段。 ``` CREATE TABLE users ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(30) NOT NULL, password VARCHAR(30) NOT NULL ); ``` 2. 在Java中连接MySQL数据库,可以使用以下代码: ``` String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "root"; String password = "mypassword"; Connection conn = DriverManager.getConnection(url, user, password); ``` 3. 创建注册页面登录页面,可以使用HTML和JSP来实现。 4. 在注册页面中,将用户输入的用户名和密码插入到MySQL数据库中。可以使用以下代码: ``` String username = request.getParameter("username"); String password = request.getParameter("password"); PreparedStatement stmt = conn.prepareStatement("INSERT INTO users (username, password) VALUES (?, ?)"); stmt.setString(1, username); stmt.setString(2, password); stmt.executeUpdate(); ``` 5. 在登录页面中,将用户输入的用户名和密码与数据库中的记录进行比较。如果用户名和密码匹配,则将用户重定向到主页或其他受保护的页面。可以使用以下代码: ``` String username = request.getParameter("username"); String password = request.getParameter("password"); PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE username=? AND password=?"); stmt.setString(1, username); stmt.setString(2, password); ResultSet rs = stmt.executeQuery(); if (rs.next()) { // 登录成功,将用户重定向到主页或其他受保护的页面 response.sendRedirect("home.jsp"); } else { // 登录失败,显示错误消息 request.setAttribute("errorMessage", "Incorrect username or password."); RequestDispatcher dispatcher = request.getRequestDispatcher("login.jsp"); dispatcher.forward(request, response); } ``` ### 回答2: 实现简易的注册登录功能,我们可以使用JavaWebMySQL来完成。 首先,我们需要创建一个数据库,并创建两张表:用户表和登录表。用户表用于存储用户的基本信息,包括用户名、密码、电子邮箱等字段;登录表用于存储用户的登录记录,包括用户名、登录时间等字段。 接下来,我们可以使用JavaWeb实现注册和登录的功能。对于注册功能,用户输入用户名、密码、电子邮箱等信息,然后将这些信息插入到用户表中即可。在插入前,需要先判断用户名是否已经存在,如果存在则提示用户重新选择用户名;如果不存在,则将用户信息插入到用户表中。 对于登录功能,用户输入用户名和密码,然后根据输入的用户名在用户表中查找对应的记录。如果用户名不存在,则提示用户重新输入;如果存在该用户名,则判断密码是否匹配,如果匹配则登录成功,否则提示用户密码错误。 在实现过程中,我们可以使用JDBC来连接Java和MySQL数据库,使用SQL语句来操作数据库表。可以使用PreparedStatement来预编译SQL语句,以提高执行效率和防止SQL注入攻击。可以使用Cookie来记录用户登录状态,实现自动登录功能。 总之,通过JavaWebMySQL的结合,我们可以实现简易的注册登录功能,提供用户注册和登录的基本操作,以满足基本的用户认证需求。 ### 回答3: 要实现简易的注册登录功能,可以使用JavaWebMySQL进行开发。 首先,在MySQL数据库中创建一个用户表,表中包含用户名和密码两个字段。可以使用以下SQL语句创建表: ```sql CREATE TABLE user( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL ); ``` 接下来,在JavaWeb中,通过编写Java代码实现注册和登录的功能。可以使用JDBC连接MySQL数据库,实现与数据库的交互。 对于注册功能,用户在注册页面中输入用户名和密码,通过Java代码将用户输入的数据插入到MySQL数据库的用户表中。可以使用以下代码示例: ```java import java.sql.*; public class Register { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/db_name"; // 数据库连接地址 String username = "root"; // 数据库用户名 String password = "password"; // 数据库密码 Connection conn = null; PreparedStatement stmt = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); // 加载MySQL驱动程序 conn = DriverManager.getConnection(url, username, password); // 建立数据库连接 String sql = "INSERT INTO user (username, password) VALUES (?, ?)"; // SQL插入语句 stmt = conn.prepareStatement(sql); // 创建PreparedStatement对象 String newUsername = "newUser"; // 用户输入的用户名 String newPassword = "newPassword"; // 用户输入的密码 stmt.setString(1, newUsername); // 设置用户名参数 stmt.setString(2, newPassword); // 设置密码参数 int rows = stmt.executeUpdate(); // 执行插入操作 if (rows > 0) { System.out.println("注册成功"); } else { System.out.println("注册失败"); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 对于登录功能,用户在登录页面中输入用户名和密码,通过Java代码查询数据库中是否存在与用户输入匹配的用户记录。可以使用以下代码示例: ```java import java.sql.*; public class Login { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/db_name"; // 数据库连接地址 String username = "root"; // 数据库用户名 String password = "password"; // 数据库密码 Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); // 加载MySQL驱动程序 conn = DriverManager.getConnection(url, username, password); // 建立数据库连接 String sql = "SELECT * FROM user WHERE username = ? AND password = ?"; // SQL查询语句 stmt = conn.prepareStatement(sql); // 创建PreparedStatement对象 String inputUsername = "inputUser"; // 用户输入的用户名 String inputPassword = "inputPassword"; // 用户输入的密码 stmt.setString(1, inputUsername); // 设置用户名参数 stmt.setString(2, inputPassword); // 设置密码参数 rs = stmt.executeQuery(); // 执行查询操作 if (rs.next()) { System.out.println("登录成功"); } else { System.out.println("登录失败"); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 通过以上代码可以实现简易的注册登录功能,用户可以在注册页面中输入用户名和密码进行注册,然后在登录页面中输入对应的用户名和密码来进行登录

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半浮名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值