案例需求
在网站的首页上,点击登录的链接,可以跳转到登录的页面。在登录的页面中输入用户名和密码,点击登录的案例,完成登录的功能。
需求功能分析
代码实现
数据库
CREATE TABLE `user`(
username VARCHAR(50),
`password` VARCHAR(50)
);
INSERT INTO `user` VALUES('tom','123'),('jerry','456');
# 通过⽤户名,密码查询 user表
SELECT * FROM `user` WHERE username='tom' AND `password`='123'
/*
dbutils 使⽤哪个结果集
BeanHandler 查询结果⼀个JavaBean
BeanListHandler 查询结果集是多个JavaBean,存储List集合
ScalarHandler 单项值查询
ColumnListHandler 查询⼀个列数据存储集合List<Object>
*/
html页面
<form action="/web01/user" method="post">
用户名:<input type="text" name="username" /> <br/>
密 码:<input type="text" name="password" /> <br/>
<input type="submit" />
</form>
Servlet
public class UserServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
/*
1.获取⻚⾯的传递过来的数据, (⽤户名, 密码)
2.使⽤ (⽤户名, 密码) , 操作数据库, 查找匹配的User信息
3.判断User信息 是否为空
User为null, 代表 没查到匹配的⽤户信息, 打印 "登录失败, ⽤户名或密
码错误"
user为不为Null, 代表 查到匹配的⽤户信息, 打印"登录成功"
*/
// 1.获取⻚⾯的传递过来的数据, (⽤户名, 密码)
String username = request.getParameter("username");
String password = request.getParameter("password");
// 2.使⽤ (⽤户名, 密码) , 操作数据库, 查找匹配的User信息
QueryRunner qr = new QueryRunner(DruidUtils.getDataSource());
String sql = "select * from user where username=? and password=?";
User user = null;
try {
user = qr.query(sql, new BeanHandler<User>(User.class),
username, password);
} catch (SQLException e) {
e.printStackTrace();
}
// 3.判断User信息 是否为空
if (user == null) {
// User为null, 代表 没查到匹配的⽤户信息, 打印 "登录失败, ⽤户名或密
码错误 "
System.out.println("登录失败, ⽤户名或密码错误");
response.getWriter().print("return false");
} else {
// user为不为Null, 代表 查到匹配的⽤户信息, 打印"登录成功"
System.out.println("登录成功");
response.getWriter().print("return true");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
doGet(request, response);
}
}