Преобразовать набранный текст в нижний регистр
У меня есть index.jsp с
[Надрез]
<%
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{
}
%>
[Надрез]
Теперь глобальное имя, например, в нижнем регистре "webeng". Люди могут набирать "WebEng", "webENG", "WEBENG" и их варианты.
Мне нужно, чтобы те, которые напечатаны в строках, были преобразованы в нижний регистр. как-то
String newname = name.toLowerCase();
String newpass = pass.toLowerCase();
не работает. У кого-нибудь есть идеи?
Это то, что Eclipse говорит мне, когда я использую
<%
String name = request.getParameter("name");
String pass = request.getParameter("pass");
String globalname = "webeng";
String globalpass = "2009";
String newname = name.toLowerCase();
String newpass = pass.toLowerCase();
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>One or more fields are empty!</b></p>
<hr />
<% }
else if (name !=null && pass!=null && !name.equals(globalname) | !pass.equals(globalpass))
{
%>
<hr />
<p><b>Incorrect Userdata!</b></p>
<hr />
<% }
else{
}
%>
Затмение: http://i.imagehost.org/0277/2009-11-15_19_34_00.png
4 ответа
Ваша логика кода странная. Скриплеты также не упрощают тестирование. Вот SSCCE во вкусе реального Java-класса, чтобы начать и облегчить тестирование:
public class Test {
public static void main(String[] args) throws Exception {
String user = "WeBeNg"; // Change this as if it is user input.
String pass = "2009"; // Change this as if it is user input.
String expectedUser = "webeng";
String expectedPass = "2009";
if (user == null || pass == null || user.isEmpty() || pass.isEmpty()) {
System.out.println("Please enter both username and password.");
} else if (user.equalsIgnoreCase(expectedUser) && pass.equals(expectedPass)) {
System.out.println("Welcome " + user);
} else {
System.out.println("Unknown login.");
}
}
}
Надеюсь это поможет.
Редактировать # 1: пожалуйста, не размещайте скриншоты. Скопируйте исключение и отслеживание стека в блоках кода. Исключением является, кстати, не Eclipse. Это идет от Tomcat. Кроме того, рассматриваемое исключение (NullPointerException) довольно понятно. Вы получили доступ к объектной ссылке, которая на самом деле является нулевой.
SomeObject someObject = null;
someObject.doSomething(); // Fails with NPE.
someObject = new SomeObject();
someObject.doSomething(); // Succes.
Вы должны сначала сделать нулевую проверку, например,
if (someObject != null) {
someObject.doSomething(); // Succes.
}
Редактирование #2 Я также рекомендую вам узнать об операторах, приоритетах операторов и группировках выражений в Java. Видите, следующее не "логично"
if (name !=null | pass!=null && name.equals("") | pass.equals(""))
Вот хороший учебник для начала, чтобы узнать об этом: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/operators.html Удачи.
Вы можете использовать compareToIgnoreCase, и вам не нужно делать преобразование самостоятельно.
Вот это с equalsIgnoreCase. Если вы действительно не хотите сокращать или |
оператор, как правило, безопаснее идти с ||
, Я также предпочитаю не проваливаться на успех, так как в ответе BalusC есть что-то тревожное в условии по умолчанию - входить в систему пользователя.
<%
String name = request.getParameter("name");
String pass = request.getParameter("pass");
String globalname = "webeng";
String globalpass = "2009";
if (name ==null || pass==null || name.equals("") || pass.equals("")) {
// You can use StringUtils.isBlank here instead if you have it available to you
%>
<hr />
<p><b>Ooops, one or more fields are empty. Please fill everything out!!</b></p>
<hr />
<% } else if (name.equalsIgnoreCase(globalname) && pass.equalsIgnoreCase(globalpass))
{
%>
<hr />
<p><b>Howdy, <%= request.getParameter("name") %></b></p>
<hr />
<% } else {
%>
<hr />
<p><b>Incorrect Userdata!</b></p>
<hr />
}
%>