我如何在一些不是servlet的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();
}
}
答案 0 :(得分:0)
会话需要请求。因此,请求必须将userId传递给Application-Scope-ProfitBean。
在这种情况下,您可以使用Singleton反模式,因此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”中,您无法确保用户设置此值。
答案 1 :(得分:0)
如果班级无法得到它,它应该要求它。
换句话说,只需在调用方法时将所需的值传递给它。
someClass.doSomething(session.getAttribute("idUser"));
或者,视具体情况而定。
someClass.doSomething(profitBean);