一、任务需求
制作一个简单的登录页面,连接数据库,可在浏览器上显示页面,输入正确的账号密码登录成功后会在浏览器上显示一个登录成功的页面
二、步骤
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必须写
7191

被折叠的 条评论
为什么被折叠?



