我给你们看看html和Servlet.java
至于mysql的操作UserBean, 你们就自己写吧
(JavaScript可以引用jquery库来写)
(tomcat, mysql, jdbc???.jar包, 请自立更生, 自己配置)
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>这是一个标题</title>
</head>
<body>
<!--get会在url中显示密码,不安全,建议用post-->
<form action="login_test_Servlet" method="post">
账号:<input type="text" name="account">
<br>
密码:<input type="password" name="password">
<br>
<button type="submit">提交按钮</button>
<p id="tips">第一次登录会显示这个,否则这行文本会被替换</p>
</form>
</body>
<!--是脚本,我加了脚本,跟servlet有联动,登录失败会提示你-->
<script>
//按键值对从url中获取参数,被淘汰了的技术
let urlSearchParams=new URLSearchParams( window.location.search );// search返回url?问号?后面文字 href返回完整url
//获取服务器返回的信息msg
let msg=urlSearchParams.get("msg");
//在html显示信息msg
if (msg){//非空
document.getElementById("tips").innerText=msg;
}
</script>
</html>
Servlet (java)
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.net.URLEncoder;
import java.sql.SQLException;
@WebServlet(name = "login_test_Servlet", value = "/login_test_Servlet")
public class login_test_Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");//防止前台html传中文 servlet识别不了
String account=request.getParameter("account");
String password=request.getParameter("password");
try {
if (UserBean.login(account,password)==1){//这里可以用你自己的JDBC类来链接mysql来检查登录 //我喜欢123,不喜欢true false
System.out.println("如果你账号密码对了,你会在IDEA终端看到这行字符被打印");
//登录成功就跳转主页面
//而主页面往往需要一个id来从数据库查找某人的资源(例如加载个人头像/昵称),我们这里用账号account来区分不同用户
request.setAttribute("account",account);
request.getRequestDispatcher("main.html").forward(request,response);
}else {
System.out.println("你的账号or密码错了,终端会打印这行字符");
//登录失败就还是返回登录界面
// 这里不推荐用本代码所使用的同步,建议你去看看ajax异步登录方法的文章
//同步 会导致任何跳转的页面要从新的开始加载,也就是你的输入账号和密码都没了,要再打一次
//你猜我为啥在网址里面加msg,因为后端传数据给前端html除了异步能传json xml text,同步只能传url
String to_jump_url="login_test.html?msg="+ URLEncoder.encode("账号或密码错误","utf-8");
response.sendRedirect( to_jump_url );
// 把两行写到一行
// response.sendRedirect("login_test.html?msg="+ URLEncoder.encode("账号或密码错误","utf-8"));
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
运行结果: 第一次登录

登录失败, 账号和密码被刷新了, 提示词也被换了

跳到主页面, 这里注意下网址栏不是main.jsp, 这种跳转方式不好使

该文章展示了一个简单的HTML登录表单,使用Servlet进行后端处理,通过Java的JDBC连接MySQL数据库验证用户。当登录失败时,通过URL参数传递错误消息。同时,JavaScript用于在前端显示这些消息,提供更好的用户体验。
5145

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



