我正在開發一個登錄功能,用於根據存儲在數據庫中的數據對用戶進行身份驗證,當我嘗試在下一個要顯示的JSP上顯示登錄錯誤消息時,即使登錄信息不匹配,郵件也不會顯示。爲什麼不將動作錯誤消息傳遞給下一頁?
struts.xml中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />
<package name="default" extends="struts-default" namespace="/">
<action name="login" class="package1.LoginAction">
<result name="success">MainPage.jsp</result>
<result name="error">Login.jsp</result>
</action>
</package>
</struts>
ApplicationResources.properties
label.username=User Name
label.password=Password
label.login=Login
label.domain=Select Domain
error.login=Invalid Username/Password. Please try again.
的Login.jsp
<table border="0" align="center">
<tr><s:actionerror /></tr>
</table>
<s:form action="login.action" method="post">
<table border="0" align="center">
<tr><s:textfield name="uid" key="label.username" size="20" /></tr>
<tr><s:password name="psw" key="label.password" size="20" /></tr>
<tr><s:select name="domain"
key="label.domain"
headerKey="1"
headerValue="-- Please Select --"
list="#{'01':'Tutor','02':'Student'}" /></tr>
<tr><s:submit method="execute" key="label.login" align="center" /></tr>
</table>
</s:form>
LoginAction.java
try {
Class.forName("com.informix.jdbc.IfxDriver");
conURL = "jdbc:informix-sqli://*********/fxg:INFORMIXSERVER=" +
"sgdbuat11;user=*****;password=******";
conn = DriverManager.getConnection(conURL);
stmt = conn.createStatement();
} catch (Exception e) {
System.out.println(e.getMessage());
}
stmt = conn.createStatement();
String qstr = "SELECT * FROM tutor";
rset = stmt.executeQuery(qstr);
int count = 0;
String msg = "";
while (rset.next()) {
String username = rset.getString("uid");
if (this.uid.equals(username)) {
count++;
String password = rset.getString("psw1");
if (this.psw.equals(password)) {
msg = "success";
} else {
msg = "wrongpsw";
}
}
}
if (count == 0) {
return "error";
} else if (msg == "wrongpsw") {
return "error";
} else {
return "success";
}
爲什麼你記錄異常,然後還是繼續?另外,你的返回值是通過使用'=='比較字符串來選擇的;在這種情況下,它可能**因爲字符串實習而起作用,但這是一種*可怕的做法。 –