Я пытаюсь реализовать простую форму:
Есть глобальное имя и глобальный пароль, и пользователю предлагается ввести свое имя и пароль.
If name == globalname and pass = globalpass -> "Hello name"
If name == blank or pass == blank -> "O NOEZ, you fergit sumpn!"
If name != globalname or pass != globalpass -> "WHUT? Who be you, intruder?"
Пока мне удается получить только первый if-working...
<%
String name = request.getParameter("name");
String pass= request.getParameter("pass");
String globalname = "webeng";
String globalpass = "2009";
if (name !=null && pass!=null && name.equals(globalname) && pass.equals(globalpass))
{
%>
<jsp:include page="formular-modul1.jsp" />
<% } else
{
%>
<% }
%>
<%
else if (name =="b" && pass =="c" && name.equals("b") && pass.equals("c"))
{
%>
<jsp:include page="formular-modul2.jsp" />
<%} else
{
%>
<%
}%>
Имя=="b" && pass =="c" было предназначено только для тестовых целей, что не удалось! Может кто-нибудь помочь мне, пожалуйста?
2 ответа
Строки являются объектами, а не примитивами. При использовании ==
для сравнения объектов будет возвращено значение true, только если оба они указывают на одну и ту же ссылку. Он не проверяет значение объекта. Там у вас уже есть Object#equals()
для.
Помимо этой проблемы, использование этих старомодных скриптлетов в файле JSP является признаком плохой практики. В этом конкретном случае вам лучше использовать для этого класс Servlet. Удачи.
NullPointerException
.
Теперь он работает.
<%
String name = request.getParameter("name");
String pass = request.getParameter("pass");
String globalname = "webeng";
String globalpass = "2009";
if (name !=null && pass!=null && name.equals(globalname) && pass.equals(globalpass))
{
%>
<hr />
<p><b>Howdy, <%= request.getParameter("name") %></b></p>
<hr />
<% }
else if (name !=null | pass!=null && name.equals("") | pass.equals(""))
{
%>
<hr />
<p><b>Ooops, one or more fields are empty. Please fill everything out!!</b></p>
<hr />
<% }
else if (name !=null | pass!=null && !name.equals(globalname) | !pass.equals(globalpass))
{
%>
<hr />
<p><b>Incorrect Userdata!</b></p>
<hr />
<% }
else{
}
%>
Теперь мне нужно использовать .toLowercase.
Означает, что имя и пароль должны быть преобразованы в .toLowercases, ТОГДА использоваться. У кого-нибудь есть идеи? Просто используя newname = name.toLowercase(); или newpass = pass.toLowercase(); не работает!
String
имеет метод equalsIgnoreCase()
. Угадайте, что он делает :)
String#toLowercase()
дает новую строку. Потому что строки неизменяемы. Это должно работать нормально, если вы присвоите .toLowercase()
новой переменной. В приведенном выше коде вы используете операторы |
, которые являются побитовыми ИЛИ и НЕ сокращают условную оценку. Вам нужен логический оператор ИЛИ ||
.
pass.toLowercase()
? Просто не делай этого. Кстати, если у вас все еще есть проблемы, вам действительно нужно уточнить «не работает!» подробнее подробно.
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.