html form表单普通同步提交账号密码给servlet, servlet判断后跳转新页面

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

我给你们看看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, 这种跳转方式不好使

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值