2010-08-20 41 views
0

我在使用C比較2個字符串值時遇到問題:當標記
我正在嘗試如下JSTL:字符串比較問題使用c:標記時

<c:when test="${dbUserName eq uName}"> 

其中,
dbUserName = 「sohail」。它從db列
uName = 「test」獲取值。這實際上是登錄頁面上的輸入值
但是比較總是給出結果真...

這裏是完整代碼

<%@ page contentType="text/html" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%> 
<HTML> 
<body> 
<c:set var='uName' value="${param.username}"/> 
<c:set var='uPassword' value="${param.password}"/> 
<sql:setDataSource var="db" driver="com.mysql.jdbc.Driver" 
url="jdbc:mysql://localhost:3306/test" user="root" password="sohail"/> 
<sql:query var="query1" dataSource="${db}" 
sql="select * from login where loginID = '${uName}'"> 
</sql:query> 
<c:forEach var="row" items="${query1.rows}"> 
<c:set var='dbUserName' value="${row.loginID}"/> 
<c:set var='dbUserPassword' value="${row.password}"/> 
</c:forEach> 
<c:out value="${uName}"/> 
<c:out value="${row.loginID}"/> 
<c:out value="${row.password}"/> 
<c:choose> 
<c:when test="${dbUserName eq uName}"> 
<c:redirect url="profile1.jsp"/> 
</c:when> 
<c:otherwise> 
<c:redirect url="checlLogin.jsp"/> 
</c:otherwise> 
</c:choose> 
</body> 
</html> 

請建議我如何修復比較問題?

嗨Affe,
謝謝,你是對的。問題已經解決
我只是修改了查詢如下,它工作正常

<sql:query var="query1" dataSource="${db}" 
sql="select * from login"> 
</sql:query> 

回答

1

您似乎已經結構化的頁面,使得數據庫用戶名和UNAME將永遠是相同的。

<sql:query var="query1" dataSource="${db}" 
sql="select * from login where loginID = '${uName}'"> 

<c:set var='dbUserName' value="${row.loginID}"/> 

如果您得到一行loginID不等於uName,那麼您的數據庫會出現一些問題.....! (mySQL有時奇怪的默認情況下匹配不匹配的情況下匹配。)

它究竟是你想要的頁面?