1

ユーザーがユーザー名とパスワードを入力すると、バッキング Bean に保存されている値がチェックされ、一致する場合はウェルカム メッセージが表示される、非常に単純なログイン フォームを作成しました。

これは正常に機能していますが、データベースの機能を追加して、より多くのユーザーとより良いセキュリティを許可したいと考えています。

ここで見つけた組み込みの netbeans ウィザードを使用して、データベース (ダービー) に接続された単純な Web アプリを作成しました: http://www.youtube.com/watch?v=tql4COiN5T0

データベースからデータを取得し、編集して表示し、破棄することもできます。この機能の多くは最後に削除されます。しかし、私が疑問に思っているのは、バッキング Bean に移動して正しい値を検索する代わりに、derby データベースを検索するにはどうすればよいかということです。

これは私の現在のfaceletページです:

    <h:form>
        <h:panelGrid columns="2">
            <h:outputText value="Name"></h:outputText>
            <h:inputText value="#{loginTest.username}"></h:inputText>
            <h:outputText value="Password"></h:outputText>
            <h:inputSecret value="#{loginTest.password}"></h:inputSecret>
        </h:panelGrid>
        <h:commandButton value="Login" action="second"></h:commandButton>
    </h:form>

そして、データベース内のすべてのユーザーを取得できる 1 つのページを次に示します。

<h:dataTable value="#{logindetailsController.items}" var="item" border="0" cellpadding="2" cellspacing="0" rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rules="all" style="border:solid 1px">
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListLogindetailsTitle_id}"/>
                            </f:facet>
                            <h:outputText value="#{item.id}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListLogindetailsTitle_username}"/>
                            </f:facet>
                            <h:outputText value="#{item.username}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListLogindetailsTitle_password}"/>
                            </f:facet>
                            <h:outputText value="#{item.password}"/>
                        </h:column>
                        <h:column>
                            <f:facet name="header">
                                <h:outputText value="&nbsp;"/>
                            </f:facet>
                            <h:commandLink action="#{logindetailsController.prepareView}" value="#{bundle.ListLogindetailsViewLink}"/>
                            <h:outputText value=" "/>
                            <h:commandLink action="#{logindetailsController.prepareEdit}" value="#{bundle.ListLogindetailsEditLink}"/>
                            <h:outputText value=" "/>
                            <h:commandLink action="#{logindetailsController.destroy}" value="#{bundle.ListLogindetailsDestroyLink}"/>
                        </h:column>
                    </h:dataTable>

すべてのユーザー名とパスワードを取得できるバッキング Bean があります。この Bean で正しいユーザー名とパスワードを検索するにはどうすればよいですか?

エンティティは次のとおりです。

@Entity
@Table(name = "LOGINDETAILS")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Logindetails.findAll", query = "SELECT l FROM Logindetails l"),
    @NamedQuery(name = "Logindetails.findById", query = "SELECT l FROM Logindetails l WHERE l.id = :id"),
    @NamedQuery(name = "Logindetails.findByUsername", query = "SELECT l FROM Logindetails l WHERE l.username = :username"),
    @NamedQuery(name = "Logindetails.findByPassword", query = "SELECT l FROM Logindetails l WHERE l.password = :password")})
public class Logindetails implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "ID")
    private Short id;
    @Size(max = 20)
    @Column(name = "USERNAME")
    private String username;
    @Size(max = 20)
    @Column(name = "PASSWORD")
    private String password;

// getters and setters 
4

1 に答える 1

0

私があなたをよく理解していれば、次のようにビューで使用するために、適切なマネージド Bean でエンティティをインスタンス化する必要があります。

<h:form>
    ...
        <h:inputText value="#{loginTest.logindet.username}"></h:inputText>
    ...
        <h:inputSecret value="#{loginTest.logindet.password}"></h:inputSecret>

    <h:commandButton value="Login" action="second"></h:commandButton>
</h:form>

と :

@ManagedBean
@SessionScoped
public class LoginTest implements Serializable {

    public Logindetails logindet;


    public LoginTest(){}

    public String login(){
        // login process
    }
 }
于 2013-11-07T13:26:31.603 に答える