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

时间:2014-01-29 17:48:24

标签: 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" 
    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>

视觉外观:

enter image description here

在用户同时输入LoginUsername之前,如何使JSP保持不变,而不是转发到Password servlet(以检查输入的正确性) ?

2 个答案:

答案 0 :(得分:2)

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

更新:

在我的代码中,我经常使用button类型而不是<input type=submit>按钮。然后我通过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>

我没有测试任何这个,这只是我的头脑。但这与我的工作有关。

编辑: 您需要获取用户名和密码字段的值,而不仅仅是字段本身,抱歉输入错误

答案 1 :(得分:1)

有几种方法可以做到这一点,最简单的方法是让servlet检查请求中的usernamepassword参数,如果缺少原始JSP,则重定向回原始JSP (无论如何,你应该这样做,不只是你的页面可以击中你的servlet)。

如果您认为在输入用户名和密码之前您没有提交请求,那么您必须在表单上连接onsubmit事件,如下所示:

<form id="login" action="loginPage" onsubmit="checkUsernameAndPassword">    

然后在JavaScript中编写checkUsernameAndPassword方法,如下所示:

function checkUsernameAndPassword()
{
  var username = document.forms["login"]["username"].value;
  var password = document.forms["login"]["password"].value;

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

如果尚未设置取消提交的falseusername,则此方法将返回password