2014-01-29 3 views
-1

Рассмотрим следующий JSP:Как сделать страницу 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

Как я могу сделать JSP, чтобы оставаться на месте, а не вперед к Login сервлет (проверить правильность ввода), пока пользователь не ввел оба значения Username и Password?

+0

Что вы имеете в виду? Вы хотите избежать перезагрузки страницы? – Happy

+0

@Happy: НЕТ! Я хочу, чтобы пользователь вставлял ввод, а не перемещался в сервлет без ввода! – ron

+0

Downvotes? ты серьезно ? – ron

ответ

2

Использование Javascript в onclick функции кнопки входа в систему, чтобы отменить отправку формы, убедитесь, что имя пользователя и пароль поля не являются пустыми, а затем отправить форму

UPDATE:

В моем коде, я часто используйте тип 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> 

Я не тестировал все это, это недалеко от верхней части моей головы. Но это то, что я делаю.

EDIT: Вам нужно получить значение имени пользователя и пароля, а не только самих полей, извините за опечатку

+0

onsubmit, а не onclick, является объектом submit, и подача будет выполнена. –

+0

Спасибо, исправил. – Niro

+0

Я сказал те же 2 строки выше, но не как ответ ... –

1

Там есть несколько способов сделать это, самый простой, вероятно, иметь сервлет проверить параметры username и password в запросе и перенаправить исходный JSP, если они отсутствуют (вы должны это сделать в любом случае, это не просто ваша страница может поразить ваш сервлет).

Если вы adament, что вы делаете не то, что запрос не представляется пока имя пользователя и пароль был введен, то вам придется подключить-вверх onsubmit событие на форме, как это:

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

А затем написать метод checkUsernameAndPassword в JavaScript, как это:

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

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

Этот метод будет возвращать false если либо username или password не были установлены отмены представления.

+0

Я не хочу 1-го выбора, который вы предложили. Сначала я хочу иметь оба значения и только THEN, чтобы отправить сервлет. Спасибо, я попробую. – ron

+0

@ron важно, чтобы ваш сервлет мог справиться с ситуацией, когда переменные отсутствуют, потому что нет ничего, что помешает пользователю ввести 'http: // yourserver/youapp/loginPage' в браузере. –

+0

До публикации этого сообщения, когда сервлет получает пустые строки как имя пользователя и пароль, он пересылает другому JSP, который говорит, что возникла проблема. 10x. – ron

Смежные вопросы