Java 如何从jsp页面的初始化块获取会话对象

Java 如何从jsp页面的初始化块获取会话对象,java,jsp,session-variables,Java,Jsp,Session Variables,我有一个JSP文件,需要使用它返回存储在会话对象中的用户: Factory.jsp: <%@page import="users.User"%> <%! public static class Factory{ public Factory(){ } public static User getUser(){ //session.getAttribute("loggedUser"); doesn't work retu

我有一个JSP文件,需要使用它返回存储在会话对象中的用户:

Factory.jsp:

<%@page import="users.User"%>
<%!
public static class Factory{
    public Factory(){

    }

    public static User getUser(){
        //session.getAttribute("loggedUser"); doesn't work
        return null;
    }
}

%>

<%
//some code
%>


如果使用任何框架,就不必使用scriptlets。 请尝试以下代码:

<%!
    Session session = request.getSession();
%>

然后使用会话对象从中获取变量

<%
    User user = session.getAttribute("loggedUser");
%>


您使用的是框架吗?@JeevanPatil不,我没有使用框架。我认为,这是不可能的,因为会话对象仅在“service()”方法中可用,该方法仅在标记内部使用。阅读本文:我的第一个问题是:为什么要直接在jsp中混合java?使用MVC,让这些函数控制层(servlet)不是更好吗?你能做到吗?所以,您应该使用类似${pageContext.user}或${Sessionscope.user}的东西来检索用户的数据。为什么要使用downvote?请告诉我原因?你应该在否决投票后留下评论。我没有投否决票,但我会向你解释为什么你得到它:
request.getSession()
在我否决的
中根本不起作用。答案是错误的,部署它将表明这一点<代码>
表示类级声明。当我投了否决票时,我正在手机上,评论的麻烦比它的价值还多。当有人在没有评论的情况下投了反对票时,只需返回并检查您的假设。如果社区或代码不同意否决票,通常会自行解决。谢谢Dave。今后我会处理好的。但我认为让别人知道什么是错的是一件好事。可能是这样,但我们生活在一个不完美的世界,我们不能总是得到我们想要的,因为各种各样的原因。看看我的两个问题——解释一下反对票。不能,因为他们没有理性的理由:生活就是这样。