1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
package cn.hp.util; import java.sql.*; public class JDBCUtils { static Connection connection = null ; static Statement statement = null ; static PreparedStatement preparedStatement = null ; static ResultSet resultSet = null ; static { try { Class.forName( "com.mysql.jdbc.Driver" ); connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/user_system?characterEncoding=utf8&serverTimezone=UTC" , "root" , "root" ); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } } // 新增和修改 DML 操作 String sql , sql中的参数 preparedStatement Object[] arr 用来补全sql中的? public static int DML(String sql , Object[] arr ){ // 可变参数 Object ... arr 0~n个参数 int update = 0 ; try{ preparedStatement = connection .prepareStatement(sql); // 循环完毕,会将sql中全部? 补充齐 for ( int i = 0 ; i < arr.length ; i++){ preparedStatement.setObject(i+1 , arr[i] ); } update = preparedStatement.executeUpdate(); }catch (SQLException e){ e.printStackTrace(); } return update ; } // 带参查询 DQL 操作 public static ResultSet DQL(String sql , Object[] arr ){ try{ preparedStatement = connection .prepareStatement(sql); // 循环完毕,会将sql中全部? 补充齐 for ( int i = 0 ; i < arr.length ; i++){ preparedStatement.setObject(i+1 , arr[i] ); } resultSet = preparedStatement.executeQuery(); }catch (SQLException e){ e.printStackTrace(); } return resultSet ; } // 单独提供关闭资源方法 public static void close (){ try { if (statement!= null ){ statement. close (); } if ( connection != null ){ connection . close (); } } catch (SQLException e) { e.printStackTrace(); } } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package cn.hp.service; import cn.hp.dao.UserDao; public class UserService { public boolean login(String account, String password) { //service层,依赖于dao层 制定某一条sql执行 UserDao userDao = new UserDao(); int select = userDao.selectByAccountAndPassword(account ,password); if (select> 0 ){ return true ; } else { return false ; } } public boolean check(String account) { //service层,依赖于dao层 制定某一条sql执行 UserDao userDao = new UserDao(); int select = userDao.selectByAccount(account); if (select> 0 ){ return true ; } else { return false ; } } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package cn.hp.servlet; import cn.hp.service.UserService; 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; @WebServlet ( "/login" ) public class LoginServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1.设置用户输入的编码格式,因为有可能是中文 req.setCharacterEncoding( "utf-8" ); //2.获取用户数输入的内容 String account = req.getParameter( "account" ); String password = req.getParameter( "password" ); //3.依据service来判断当前登录的账号密码是否正确 //User表 定义一个UserService 用来处理 所有和user有关的业务 UserService userService = new UserService(); //login方法传入账号密码 返回是否登录成功 boolean flag = userService.login(account,password); //4.依据是否登录成功,进行控制页面的跳转 if (flag){ req.getRequestDispatcher( "success.jsp" ).forward(req,resp); } else { req.setAttribute( "msg" , "密码错误,请重新登录!" ); req.getRequestDispatcher( "login.jsp" ).forward(req,resp); } } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package cn.hp.servlet; import cn.hp.service.UserService; 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; @WebServlet ( "/check" ) public class CheckServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1.设置用户输入的编码格式,因为有可能是中文 req.setCharacterEncoding( "utf-8" ); //2.获取用户数输入的内容 String account = req.getParameter( "account" ); //3.依据service来判断当前登录的账号密码是否正确 //User表 定义一个UserService 用来处理 所有和user有关的业务 UserService userService = new UserService(); //使用check方法 检出是否存在用户 true 存在用户 false 不存在 boolean flag = userService.check(account); resp.getWriter().println(flag); } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
package cn.hp.dao; import cn.hp.util.JDBCUtils; import java.sql.ResultSet; import java.sql.SQLException; public class UserDao { public int selectByAccountAndPassword(String account, String password) { //执行select查询sql语句 String sql = "select count(*) from user where account = ? and password = ?" ; Object[] objects = {account , password}; ResultSet resultSet = JDBCUtils.DQL(sql,objects); int select = 0 ; try { while (resultSet.next()){ select = resultSet.getInt( 1 ); } } catch (SQLException e){ e.printStackTrace(); } return select; } public int selectByAccount(String account) { //执行select查询sql语句 String sql = "select count(*) from user where account = ? " ; Object[] objects = {account }; ResultSet resultSet = JDBCUtils.DQL(sql,objects); int select = 0 ; try { while (resultSet.next()){ select = resultSet.getInt( 1 ); } } catch (SQLException e){ e.printStackTrace(); } return select; } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<%@ page contentType="text/html;charset=UTF-8" language="java" %> < html > < head > < title >登录页</ title > < script src = "js/jquery-3.6.0.js" ></ script > </ head > < body > < form action = "login" > 账号:< input id = "input1" type = "text" name = "account" /> < span id = "span1" ></ span > < br /> 密码:< input type = "password" name = "password" /> < span style = "color:red" > ${msg } </ span >< br /> < input type = "submit" value = "登录" /> </ form > </ body > < script > // 使用jQuery完成ajax校验 ,当前账号是否存在 $("#input1").blur(function () { // 发送ajax请求,获取到当前输入的账号是否存在,写入到span1标签中 let account = $("#input1").val(); $.ajax({ url:"check", // data:{"account":$("#input1").val() }, data:"account="+account , type:"get", success:function (data) { let data1 = JSON.parse(data); if (data1){ // 表示存在当前账号 // 可以登录 $("#span1").html("可以登录"); $("#span1").attr("style","color:green"); }else { $("#span1").html("未注册"); $("#span1").attr("style","color:red"); } } }) }) </ script > </ html > |
原文链接:https://blog.csdn.net/wbcra/article/details/118014948