Hej ppl, jag försöker fixa min last-minute JSP-labb, men lyckas inte få strängjämföringen att funka, inte alls. Från Apaches stacktrace får man inte ut något tror jag; Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.jav a:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
men jag vet var i koden det är fel. Detta markeras med fetstil i båda kodstyckena nedanför:
Denna del ska registrera en användare, och jag ska kolla att båda lösenorden funkar. Säkert skitful lösning, men jag har fram till 12 inatt på mig.
"
String user = request.getParameter("username");
String password = request.getParameter("password");
String password2 = request.getParameter("password2");
String email = request.getParameter("email");
boolean registerAttempted = (user != null || password != null || email != null);
boolean passwordMismatch = (password2.equals((String)password));
if(user == null || password == null || email == null || !password.equals((String)password2))
{ %>
<h2>Register user</h2><br /> <blablablabla /..../>
Password: <input type="password" name="password2" /><%
if (passwordMismatch && registerAttempted) {
%><h4>Your passwords didn't match!</h4><% /bla.bla.bla.bla/
<input type="submit" value="Register">
</form>
<% } else { ...
"
Denna sida ska logga in användaren, lösenord som hämtats från databas ska jämföras med den som användaren skrev in:
"
SQL-blablabla...
result.next();
dbpass = result.getString(1);
if (dbpass.equals(password)) {
loginFailed = false;
} else {
loginFailed = true;
}
%><h3><font color=red><%
} catch (SQLException ex) {
blablalbla
}
typ if (loginFailed || loginNotAttempted) { skriv formuläret igen blablablba
if(loginNotAttempted || loginFailed) {
"
Jag trodde först att det var något skumt med strängen som SQL server skickade, men de skrivs ut som identiska till skärmen, ändå tolkas en compare, equals eller equalsIgnoreCase alltid som false. I första delen fås ju exception på den raden och jag har noll aning längre om vad som kan vara fel.
Några tankar? Är det mig det är fel på eller JSP? plzplzplzhealp
variabel:
Några tankar?
Kanske kan köra en toString() på det som skickas? Annars, mkt udda...
Gifted:
toString()
Det visade sig att SQL server skickade lösenordet med en massa mellanslag efteråt så att det alltid blev 16 tecken långt. Så det löste sig.
variabel:
Så det löste sig.
Ah, najs!
Tråden låst på grund av inaktivitet