gpt4 book ai didi

java - JSF 动态导航根本不起作用

转载 作者:行者123 更新时间:2023-12-01 15:41:40 28 4
gpt4 key购买 nike

我有3个jsf页面,第一个用于插入数据,用户名和密码,然后查看数据是否存在于数据库中,之后导航将起到重定向到欢迎页面(如果成功)或重定向到错误页面的作用数据不存在,代码如下:

托管Bean代码:

    private String userName;
private String password;
setters() & getters()
DBManager m = new DBManager();

public String checkStatus() throws Exception{
ResultSet rs = m.ExecuteQuery("select count(*) from user_authentication where user_name =
'"+userName+"' and user_password ='"+password+"' ");

if(rs.next())
return "loggedIn";
return "loggedOut";
}

DBManager.java代码:

 public  Connection getConnection() {
Connection cn = null;
try{
Class.forName("com.mysql.jdbc.Driver");
cn = DriverManager.getConnection("jdbc:mysql://localhost/recruitment","root","123");
}catch(Exception e){
}
return cn;
}


public ResultSet ExecuteQuery(String sql) {
ResultSet rs = null;
Statement st = null;
try {
st = getConnection().createStatement();
rs = st.executeQuery(sql);

} catch (SQLException ex) {
Logger.getLogger(DBManager.class.getName()).log(Level.SEVERE, null, ex);
}
return rs;
}

面孔配置代码:

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee

/web-facesconfig_2_0.xsd">
<managed-bean>
<managed-bean-name>obj</managed-bean-name>
<managed-bean-class>model.login</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<navigation-rule>
<from-view-id>/login.xhtml</from-view-id>
<navigation-case>
<display-name>welcome.xhtml</display-name>
<from-action>#{obj.checkStatus}</from-action>
<from-outcome>loggedIn</from-outcome>
<to-view-id>/welcome.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<display-name>wrong.xhtml</display-name>
<from-action>#{obj.checkStatus}</from-action>
<from-outcome>loggedOut</from-outcome>
<to-view-id>/wrong.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>

这是 JSF 登录页面代码:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
Hello from Facelets
<f:view>
<h:form>
user name <h:inputText value="#{obj.userName}"/>
password <h:inputSecret value="#{obj.password}"/>
<h:commandButton value="log-in" type="submit" action="#{obj.checkStatus()}"/>
</h:form>
</f:view>
</h:body>
</html>

另外 2 个 jsf 页面指示操作是否成功完成。问题在于,无论插入的数据是否正确,登录页面都会重定向到欢迎页面。

最佳答案

一个SELECT count(*)始终返回结果。计数 0也是一个有效的结果。换句话说,您的rs.next()总是返回true 。要解决您的问题,您应该选择某些列而不是 count(*) .

另请参阅:

<小时/>

与具体问题无关,你有一个巨大的 SQL injection漏洞并且代码正在泄漏数据库资源。切勿在 SQL 字符串中连接用户控制的变量,而应使用 PreparedStatement 。还要始终关闭数据库资源,例如 Connection , StatementResultSetfinally try 的 block 它们被打开的地方。

另请参阅:

关于java - JSF 动态导航根本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7943065/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com