-4

サーブレットではないJavaクラスでsession.getAttributeを使用するにはどうすればよいですか。このようなものやその他のトリックはありますか?

<%    
    <jsp:useBean id="bean" class="ProfitBean" scope="application"/>
        <jsp:setProperty name="bean" value='<%=session.getAttribute("idUser")%>'/>
    %>

    public class ProfitBean{
    private int idUser;
    public void setIdUser(int IdUser){
    ...
    }
    public int getIdUser(){
    ...
    }
    }



    public class SomeClass{
    public void doSomething(){
    ProfitBean pb =new ProfitBean
    int userId = pb.getIdUser();

    }
    }
4

2 に答える 2

0

クラスがそれを取得できない場合は、それを要求する必要があります。

つまり、メソッドを呼び出しているときに、目的の値を渡すだけです。

someClass.doSomething(session.getAttribute("idUser"));

または、コンテキストに応じて。

someClass.doSomething(profitBean);
于 2013-01-31T02:49:35.083 に答える
0

セッションにはリクエストが必要です。したがって、リクエストはuserIdをApplication-Scope-ProfitBeanに配信する必要があります。

この場合、シングルトンアンチパターンを使用できるため、ProfitBean.getInstance()。get / setIdUser()には同じ値が含まれます。

private static ProfitBean profitBeanInstance;

@Deprecated
public ProfitBean(){
    profitBeanInstance=this;
}

public static ProfitBean getInstance(){
    if (profitBeanInstance == null) {
        NullPointerException cause = new NullPointerException();
        throw new IllegalStateException("The instance has not been created by blabla.jsp!", cause);
    }
    return profitBeanInstance;
}

警告:このシングルトンはすべてのユーザーが利用できます。「SomeClass」では、どのユーザーがこの値を設定したかを確認できません。

于 2013-01-30T22:12:14.980 に答える