文章目录
- 初始项目结构
- ① 制作登陆界面
- ② 创建LoginServlet
- ③ 创建dbHelper工具类
- ④ 效果展示
初始项目结构
① 制作登陆界面
- 首先要制作简单的登陆界面,具备两个输入框:姓名、密码,以及登陆(提交)、注册(跳转),还有基本的位置布局等。
- 这里我们以form表单的形式对内容进行提交,方便获取表单信息。
-
action="/LoginServlet"
action 属性定义了当表单被提交时数据被送往LoginServlet。 -
method="post"
设置或返回将数据发送到服务器的 HTTP 方法
<%--
Created by IntelliJ IDEA.
User: 35192
Date: 2021/1/21
Time: 20:33
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<%-- 用户登录界面 --%>
<div align="center"style="background-color:">
<%-- 当点击登陆的时候,以表单的形式提交信息,启动LoginServlet --%>
<h1 align="center">用户登陆</h1>
<form action="/LoginServlet" method="post"><%-- 登录界面以表格的形式展现 --%>
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" placeholder="请输入用户名"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="text" name="pwd" placeholder="请输入用密码"></td>
</tr>
<tr>
<%-- 合并表格两列 --%>
<td colspan="2">
<input type="submit" value="登陆"style="margin-left: 50px;margin-top:">
<input type="button" value="注册"style="margin-left: 55px;margin-top:5px">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
返回顶部
② 创建LoginServlet
- 用于对表单提交的信息进一步处理~
- 这里我们是要向服务器端提交数据信息,所以使用doPost().
-
urlPatterns = "/LoginServlet"
头部一定要加上,“ ”内的就是当前servlet的全称,否则运行时会报错。 - 通过
request.getParameter(name属性值)
可以获取对应的表单信息。 - 在这里还调用了工具类中的方法连接数据库,实现与数据库的信息交互。
import com.zte.dbHelper;
import java.io.IOException;
import java.io.PrintWriter;
@javax.servlet.annotation.WebServlet(name = "LoginServlet", urlPatterns = "/LoginServlet")
public class LoginServlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
// 基础配置
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
// 1.获取表单提交的信息
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
// 2.连接数据库
dbHelper db = new dbHelper();
db.getConnection();
// 3.判断状态
switch (db.login(username,pwd)){
case 0:
out.println("<script>");
out.println("alert('系统错误!');");
out.println("window.location='index.jsp';"); // 跳转回登陆页面
out.println("</script>");
break;
case 1:
out.println("<script>");
out.println("alert('登陆成功!');");
out.println("window.location='userinfo.jsp';"); //跳转到用户信息页面
out.println("</script>");
break;
case 2:
out.println("<script>");
out.println("alert('登陆失败!');");
out.println("window.location='index.jsp';"); // 跳转回登陆页面
out.println("</script>");
break;
}
out.flush();
out.close();
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doPost(request,response);
}
}
返回顶部
③ 创建dbHelper工具类
- 创建
dbHelper工具类
,强化网页的数据交互能力。注意:dbHelper类要放在一个工具包中(自建) - 目前阶段创建了两个方法:
getConnection()
、login()
。用于实现页面与后台数据库的连接以及登陆时的数据交互。 - 具体的数据交互是在LoginServlet中,首先获取页面表单提交的数据(用户名、密码),然后调用getConnection()实现数据库连接。连接后,再调用login()方法进行数据库查询,根据其返回结果进行登陆的判定。
-
resultSet = preparedStatement.executeQuery();
只有在查询的时候resultSet是返回查询的内容;其余情况返回的是影响的记录数。
package com.zte;
import java.sql.*;
public class dbHelper {
// 声明成员变量
Connection connection = null;
PreparedStatement preparedStatement = null;
Statement statement = null;
ResultSet resultSet = null;
/**
* 注册驱动连接数据库
*/
public void getConnection(){
try {
// 1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
System.out.println("驱动注册成功!");
// 2.连接数据库
connection = DriverManager.getConnection
("jdbc:mysql://localhost:3306/test01?useUnicode=true&characterEncoding=utf8","root","123456");
System.out.println("数据库连接成功!");
} catch (Exception e){
e.printStackTrace();
}
}
/**
* 实现用户登陆,匹配数据库信息
* @param username
* @param password
* @return
*/
public int login(String username,String password){
try {
String sql = "select * from userinfo_copy1 where username=? and pwd=?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,username);
preparedStatement.setString(2,password);
resultSet = preparedStatement.executeQuery();
// 判断返回结果集是否有内容,也就是用户存不存在
if (resultSet.next()){
return 1;
} else {
return 2;
}
} catch (Exception e){
e.printStackTrace();
return 0;
}
}
}
返回顶部
④ 效果展示
返回顶部
下一篇:【JSP】实现注册页面跳转以及注册用户功能实现