如何在Struts2中匹配数据库中的密码和用户定义的密码?

时间:2014-10-31 14:59:10

标签: java jdbc login struts2

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语句。

2 个答案:

答案 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}},如果您忘记从上面的代码返回,则不会出现此类错误。