Session JSF2.0登录出现问题+;会话范围处理
我在JSF2.0中处理登录时遇到问题。我真的不知道我走的方向是否正确。我想具体点,所以我会指出我的应用程序是如何工作的Session JSF2.0登录出现问题+;会话范围处理,session,logging,jsf-2,Session,Logging,Jsf 2,我在JSF2.0中处理登录时遇到问题。我真的不知道我走的方向是否正确。我想具体点,所以我会指出我的应用程序是如何工作的 具有会话作用域的登录页 豆子 正确登录后,用户 被重定向到具有的下一页 另一个会话作用域bean 第二个bean获得登录名和 来自firsbean的密码字符串 供数据库进一步使用 我的问题是我是否为用户创建了两个会话?如果是这样,我如何才能终止第一个会话。如果这不是管理登录的最佳方式,请纠正我。先谢谢你 这是一个简单的例子 登录BEAN package main; impo
package main;
import java.io.Serializable;
import java.sql.SQLException;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@SessionScoped
@ManagedBean(name="loginBean")
public class loginBean implements Serializable
{
private String login;
private String password;
public loginBean()
{
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String login() throws ClassNotFoundException, SQLException
{
SQL sql = new SQL(); //class connecting do database
if( sql.login(this.login, this.password) == true )
{
return "yes";
}
else
{
return "no";
}
}
}
登录页面LOGIN.xhtml
<?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">
<h:head>
</h:head>
<h:body>
<h:form>
<div id="logowanie" style="margin: auto; max-width: 180px; margin-top: 50px; ">
<table border="0" cellspacing="4" cellpadding="4">
<thead></thead>
<tbody>
<tr>
<td><h:outputText value="login:" /></td>
<td><h:inputText value="#{loginBean.login}" size="10"/></td>
</tr>
<tr>
<td><h:outputText value="password:" /> </td>
<td><h:inputSecret value="#{login.password}" size="10"/></td>
</tr>
<tr>
<td colspan="2"><h:commandButton value="zaloguj" action="#{loginBean.login}" /></td>
</tr>
</tbody>
</table>
</div>
</h:form>
</h:body>
</html>
面配置
<?xml version='1.0' encoding='UTF-8'?>
<!-- =========== FULL CONFIGURATION FILE ================================== -->
<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">
<navigation-rule>
<from-view-id>/login.xhtml</from-view-id>
<navigation-case>
<from-outcome>yes</from-outcome>
<to-view-id>/panel.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>no</from-outcome>
<to-view-id>/login.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
/login.xhtml
对
/panel.xhtml
不
/login.xhtml
这不会创建两个会话,而是在同一会话中创建两个会话范围的bean
但是,如果将管理登录视图的bean设置为会话范围,则可能会更好,因为实际上没有理由将其设置为会话范围(始终建议保持会话状态较小)。然后,
loginBean
将简单地设置panelBean的状态
谢谢。Im使用CGI,因此我选择了请求范围,因为viev范围不受支持
<?xml version='1.0' encoding='UTF-8'?>
<!-- =========== FULL CONFIGURATION FILE ================================== -->
<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">
<navigation-rule>
<from-view-id>/login.xhtml</from-view-id>
<navigation-case>
<from-outcome>yes</from-outcome>
<to-view-id>/panel.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>no</from-outcome>
<to-view-id>/login.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>