Java 如何使JSP页面在没有用户的情况下不转发到servlet';谁的输入?

Java 如何使JSP页面在没有用户的情况下不转发到servlet';谁的输入?,java,jsp,servlets,Java,Jsp,Servlets,考虑以下JSP: <!-- Bank Application in JAVA --> <!-- Updates : the DB now is using Hibernate for the SQL queries --> <!-- 2014 version updates --> <!-- This is a comment in JSP file --> <%@ page language="java" contentTy

考虑以下JSP:

<!-- Bank Application in JAVA -->
<!-- Updates : the DB now is using Hibernate for the SQL queries -->
<!-- 2014 version updates -->
<!-- This is a comment in JSP file   -->

<%@ page language="java" 
    contentType="text/html; charset=windows-1256"
    pageEncoding="windows-1256"
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head><title>Bank application</title>
<link rel="stylesheet"
      href="./css/styles.css"
      type="text/css"/>
</head>

<body>
<table class="title">
  <tr><th>Web Bank application</th></tr>
</table>

<br/>
<fieldset>
  <legend>Login Page - please enter your Username and Password</legend>
  <form action="loginPage"  > 

  <!-- note we use here a paragraph & font size -->
  <!-- Notice we use a Required field !!! -->

    <p style="font-size:15px">  <span style="color:red;font-weight:bold;">*</span> Username: <input type="text" name="username"><br> </p>
    <p style="font-size:15px"><span style="color:red;font-weight:bold;">*</span>  Password : <input type="password" name="password"><br> </p>
    <input type="submit" value="Login">

  </form>
</fieldset>

<br/>
<br/>
<br/>
<br/>
<br/><br/><br/><br/><br/><br/>
</body></html>

银行申请
网上银行应用

登录页面-请输入您的用户名和密码

*用户名:

*密码:













视觉外观:


在用户输入用户名和密码之前,我如何使JSP保持不变而不前进到
登录
servlet(以检查输入的正确性)

在登录按钮的
onclick
功能中使用javascript取消表单提交,验证用户名和密码字段是否为空,然后提交表单

更新:

在我的代码中,我经常使用
按钮
类型而不是
按钮。然后我通过javascript进行基本验证。比如:

function checkFields(){
  var user = document.getElementById('username').value; 
  var pass = document.getElementById('password').value;

  if (user == "" || pass == ""){
    alert("Username and Password required");
  }
  else{
    document.getElementById("myForm").submit();
  }
}
<form id="myForm">
  <input type="text" id="username"></input>
  <input type="password" id="password"></input>
  <button type="button" id="submitButton" onclick="checkFields()">Submit</button>
</form>
那么我的表格应该是这样的:

function checkFields(){
  var user = document.getElementById('username').value; 
  var pass = document.getElementById('password').value;

  if (user == "" || pass == ""){
    alert("Username and Password required");
  }
  else{
    document.getElementById("myForm").submit();
  }
}
<form id="myForm">
  <input type="text" id="username"></input>
  <input type="password" id="password"></input>
  <button type="button" id="submitButton" onclick="checkFields()">Submit</button>
</form>

提交
我没有测试过任何一个,这只是我的想法。但这就是我所做的

编辑:
您需要获取用户名和密码字段的值,而不仅仅是字段本身,很抱歉输入错误。有几种方法可以做到这一点,最简单的方法可能是让servlet检查请求中的
用户名
密码
参数,如果缺少这些参数,则重定向回原始JSP(无论如何,您都应该这样做,不仅仅是您的页面可以命中servlet)

如果您在输入用户名和密码之前不知道请求提交了什么,那么您必须在表单上连接onsubmit事件,如下所示:

<form id="login" action="loginPage" onsubmit="checkUsernameAndPassword">    
function checkUsernameAndPassword()
{
  var username = document.forms["login"]["username"].value;
  var password = document.forms["login"]["password"].value;

  return !(username == null || username == '' || password == null || password == '')
}     

如果取消提交时未设置
用户名
密码
,此方法将返回
false

什么意思?你想避免重新加载页面吗?@Happy:不!我想让用户插入输入,而不是在没有任何输入的情况下移动到servlet!否决票?你是认真的吗?使用javasscript onsubmit和if空字段保留在那里。使用JS进行表单验证和提交..这意味着单击submit按钮将触发一个JS函数,该函数将根据成功的验证提交到servlet提交submit,而不是onclick,它是一个提交对象,提交将被执行。我不想要您建议的第一个选择。我想要rst必须同时具有这两个值,然后才能转发到servlet。谢谢,我将尝试使用它。@ron当变量丢失时,servlet能够处理这种情况非常重要,因为没有任何东西可以阻止用户输入
http://yourserver/youapp/loginPage
在浏览器中。它会,在servlet收到后发布此帖子之前空字符串作为用户名和密码,它将转发给另一个JSP,该JSP表示出现了问题。10x。