Struts代码:
action name="alreadylogin" class="struts.alreadylogin"
result name="success">/indexlogin.jsp</result>
<result name="error">/failure.jsp</result>
<result name="input">/login.jsp</result>
</action>
Java类代码:
public String loginemail;
String loginpassword;
public String execute() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager
.getConnection("jdbc:oracle:thin:system/hr@localhost:1521:XE");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from logininfo");
while (rs.next()) {
String lemail = rs.getString(3);
String lpassword = rs.getString(4);
if(lemail.equals(loginemail)&&(lpassword.equals(loginpassword)))
return "success";
}
}
catch(SQLException s)
{
return "error";
}
catch(ClassNotFoundException c)
{
return "error";
}
它显示将Insert Finally插入代码或返回String的错误。如果我最后使用,无论什么破坏了检查用户登录的目的,都会执行return语句。
答案 0 :(得分:0)
如果未传递此测试,则不返回结果字符串。
if(lemail.equals(loginemail)&&(lpassword.equals(loginpassword)))
return "success";
}
只需添加
else {
return "input";
}
顺便说一下,你永远不应该查询*
,也不要查询performing queries from the action itself。
最重要的是,而不是查询数据库中所有记录的所有字段,在JAVA中遍历它们,尝试使用WHERE
关键字:|
答案 1 :(得分:0)
在finally
语句之前执行的return
块,在您的情况下应该返回任何块。错误是您应该从方法execute
返回一个字符串,无论使用何种实现。如果您使用的是try/catch
个区块,并且如果您在两个区块中都放置return
,那么您不需要finally
块来从方法中返回值,也不需要return
方法结束时的语句。因为如果您尝试在return
处放置Unreachable code error
语句,则应该{{1}},如果您忘记从上面的代码返回,则不会出现此类错误。