制作简单网页登录页面

一、任务需求

制作一个简单的登录页面,连接数据库,可在浏览器上显示页面,输入正确的账号密码登录成功后会在浏览器上显示一个登录成功的页面

二、步骤
1.在数据库创建一个users表,用于保存账号和密码

2 .创建一个dao包在里面创建一个类用来访问数据库中的账号和密码
package com.haina.lesson07.dao;

import com.haina.lesson07.domain.Student;
import com.haina.lesson07.domain.Users;
import com.haina.lesson07.util.ConnectionManager;

import java.sql.*;

public class StudentDao {
    public Users login(String username, String password){
        Users users = null;
        Connection conn = null;
//        Statement st = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
//        String sql = "select * from users where username='"+username+"' and password='"+password+"'";
        String sql = "select * from users where username=? and password=?";
        try{
            conn = ConnectionManager.getConnectionManager();
//            st = conn.createStatement();
            ps = conn.prepareStatement(sql);
            //给sql语句中的?赋值
            ps.setString(1,username);
            ps.setString(2,password);
            rs = ps.executeQuery();
//            rs = st.executeQuery(sql);

            if (rs.next()){
                users = new Users();
                users.setId(rs.getInt("id"));
                users.setUsername(rs.getString("username"));
                users.setPassword(rs.getString("password"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return users;
    }
}

注意:查询账号和密码时不能用字符串拼接,注入攻击可破解,不安全,要用?形式作为参数,可防范注入攻击。

3.创建一个domain包用来存放实体类
package com.haina.lesson07.domain;

public class Users {
    private int id;
    private String username;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    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;
    }
}
4.创建一个servlet包创建一个类用来获取数据,在数据库中验证是否正确,正确访问登录成功页面,不正确重新访问登录页面
package com.haina.lesson07.servlet;

import com.haina.lesson07.dao.StudentDao;
import com.haina.lesson07.domain.Users;

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

public class StudentServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        //需要将获取到的数据,在数据库中验证是否正确
        StudentDao sd = new StudentDao();
        Users users = sd.login(username,password);

        if (users!=null){
            resp.sendRedirect("jdbcWelcome.jsp");
        }else {
            resp.sendRedirect("jdbcLogin.jsp");
        }
    }
}
5.创建一个util包用来存放连接数据库的类
package com.haina.lesson07.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionManager {
    private static String url = "jdbc:mysql://localhost:3306/jsp63?characterEncoding=UTF-8";
    private static String username = "root";
    private static String password = "wmjwzgwcm";
    private static Connection conn = null;
    public static Connection getConnectionManager() throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.jdbc.Driver");
        if (conn==null){
            conn = DriverManager.getConnection(url,username,password);
        }
        return conn;
    }
}

注意:

1)url中访问的地址中要写自己的端口号和数据库名

2)数据库版本不同访问的url和forName有所不同,要根据自己的数据库版本写

     5.几版本:jdbc:mysql://localhost:3306/jsp63?

                      com.mysql.jdbc.Driver

     8.几版本:jdbc:mysql://localhost:3306/jsp63?serverTimezone=UTC

                      com.mysql.cj.jdbc.Driver

3)密码要写自己数据库的密码

6.配置web中web.xml文件
    <servlet>
        <servlet-name>StudentServlet</servlet-name>
        <servlet-class>com.haina.lesson07.servlet.StudentServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>StudentServlet</servlet-name>
        <url-pattern>/StudentServlet</url-pattern>
    </servlet-mapping>

注意:

1)<serlet-class>中的路径要写自己项目中servlet文件所在位置

2) 每在servlet包下创建一个类都要在web.xml进行配置

7.创建一个jsp登录页面
<%--
  Created by IntelliJ IDEA.
  User: LENOVO
  Date: 2024/8/14
  Time: 9:54
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="StudentServlet" method="post">
        <table>
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" name="password"></td>
            </tr>
            <tr align="center">
                <td><input type="submit" name="登录"></td>
                <td><input type="reset" name="重置"></td>
            </tr>
        </table>
    </form>

</body>
</html>
8.创建一个登录成功页面用来验证是否能成功登录
<%--
  Created by IntelliJ IDEA.
  User: LENOVO
  Date: 2024/8/14
  Time: 9:55
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1 style="color: darkgreen;font-family: 楷体">用户名密码正确,欢迎使用</h1>
</body>
</html>
三、成果展示
 

 

注意:访问浏览器,输入登录页面名字时.jsp必须写 

 

 

 

 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值