我是一名被认可的JSP(和Java)新手.我有这段代码可行:
String pageMessageStart = "<div id=\"messageBox\" class=\"center\">";
String pageMessage = "";
String pageMessageEnd = "</div>";
if(request.getParameter("message") != null) {
pageMessage = pageMessageStart;
/* Certain messages will come in as an alias. Let's make user-friendly messages with them */
if(request.getParameter("message").equals("invalidsession"))
pageMessage += "Session expired; you have been automatically logged out.";
else if(request.getParameter("message").equals("NOCOOKIE"))
pageMessage += "No valid cookie found; you must have cookies enabled to use this application.";
else if(request.getParameter("message").equals("invalidcredentials"))
pageMessage += "Incorrect username and/or password.";
else if(request.getParameter("message").equals("LICENSE_CHANGED"))
pageMessage += "Your license key has been successfully applied.";
else
/* If there is no alias but there is still a message, let's just display it verbatim */
pageMessage += request.getParameter("message");
pageMessage += pageMessageEnd;
};
Run Code Online (Sandbox Code Playgroud)
该字符串稍后out.println将转到主HTML区域中的某个位置.
我不明白的是为什么!= null在有条件的工作.或者更重要的是:它是否只有工作的外观?我非常了解这种.equals()方法是要走的路; 事实上,我.equals()可以看到我的嵌套条件使用.我认为该行应该是:
if(!request.getParameter("message").equals("null") {}
/* or this one */
if(!request.getParameter("message").equals(null) {}
Run Code Online (Sandbox Code Playgroud)
由于理解有限,我只能猜测当该参数为null时,没有字符串,而.equals()是字符串的比较方法.我在寻找肯定匹配时使用方法,但在寻找负匹配时使用运算符似乎有点不一致.我担心我正在使用的!=是不好的做法.
能够调用equals()方法需要引用不是 null.否则会导致a NullPointerException(仅仅因为null没有引用/指向任何有equals()方法的东西).因此,obj != null而不是obj.equals(null)测试.
Object object = null;
if (object.equals(null)) { // NullPointerException! object is null.
// ...
}
Run Code Online (Sandbox Code Playgroud)
使用!=或被==你解释为"不良做法"的原因可能是由于你不应该String通过这些操作符来比较内容的混淆而导致的equals().比较Strings by ==只会比较它们是否指向相同的引用,而不是它们是否具有相同的内容(内部对象值).
String s1 = "foo";
String s2 = new String("foo");
String s3 = s2;
System.out.println(s1 == s2); // false
System.out.println(s1 == s3); // false
System.out.println(s2 == s3); // true
System.out.println(s1.equals(s2)); // true
System.out.println(s1.equals(s3)); // true
System.out.println(s2.equals(s3)); // true
Run Code Online (Sandbox Code Playgroud)
Strings是对象,而不是原始对象.在!=和==只会给像元的预期结果int,long`等.
顺便说一句,这与JSP无关.它只是基本的Java.在JSP文件而不是Java类中错误地编写Java代码并且遇到Java代码问题并不会使它成为JSP问题.在普通的Java类中执行此操作时,您会遇到完全相同的问题.
| 归档时间: |
|
| 查看次数: |
492 次 |
| 最近记录: |